Автор: Рудюк С.А. 2023. K2 Cloud ERP
Web: https://corp2.eu
Linkedin: https://www.linkedin.com/company/k2erp
Email: rs@corp2.net
Viber/Telegram: +38 067 901-63-22
Мої виступи часто перенасичені технологічними термінами.
Тому мені кажуть: говори простіше, люди не розуміють складних термінів. Їм зрозуміліше чути щось більш звичне: "зекономить вам гроші та інвестиції", "дозволить вам працювати на будь-якому обладнанні", "збільшить керованість процесами", "зменшить ваші витрати", "дозволить зменшити кількість людей, залучених у процеси", "пришвидшить випуск вашої продукції". Саме такі тези розуміють керівники більшості підприємств, які ухвалюють рішення.
З усім тим, в моїх виступах все ще часто чутно назви технологій і це відрізняє нашу компанію від величезної кількості інших компаній, які зазвичай говорять "про все хороше", але без конкретики та без причинно-наслідкових зв'язків, завдяки чому це "хороше" є в їх продуктах (а може і нема).
Чому технології важливі? Щоб втілити якусь технологію, інколи потрібно повністю, з нуля, переробляти продукт, змінювати мову програмування, перевчатись, замінювати персонал в IT-компанії. Або чесно сказати: ні, ми не можемо це зробити.
Наприклад, ось лише деякі наслідки відсутності технологій та звичні тези від розробників:
- "працюйте у Windows, бо наша програма тільки у Windows";
- "купуйте ліцензії Oracle або Microsoft SQL (витрачаючи величезні кошти), тому що наші технології і весь програмний код побудовані на цих базах даних і відмовитись від них ми не можемо";
- "ви не зможете працювати з ТЗД, бо у нас не мобільний додаток";
- "ви не можете використовувати роботів та штучний інтелект, бо наша програмна мова цього не передбачає";
- "інтеграція з іншою системою неможлива, бо вона інша";
Та інші обмеження, на які власники бізнесів, які купують продукти, на початку не дуже звертають увагу. Але за які, фактично, потім переплачують в десятки разів, бо вимушені додатково купувати багато інших програмних та апаратних засобів, які доповнять рішення, а потім втрачати ще більше коштів на те, щоб ці різні рішення поєднати один з одним для того, щоб процеси між ними хоч якось спільно запрацювали.
За 30 років своєї діяльності я бачив еволюцію продуктів на ринку, багато разів додатково вивчав оновлені та нові технології, перероблював продукти згідно з новими технологіями та "ховав" продукти, які були побудовані на базі старих технологій.
Багато компаній на ринку, які не йшли в ногу з часом, банкрутували й зникали. Ось такий він, жорстокий світ IT-технологій!
У цій статті я розгляну технології, терміни та що саме вони можуть дати клієнтам, а також – чому це так важливо.
Програмні засоби розвиваються в часі. Відбувається їх еволюція, яка змушує розробників перенавчатись, вивчати нові технології та повністю переписувати програмні засоби. Це дуже складний процес, що вже йде десятиріччями. Колись розробники програмували в Dos на Clipper, Fortran, Pascal, Basic. Пізніше виникло бажання, щоб у програм був графічний інтерфейс, тому з'явились інтегровані засоби розробки Delphi, Visual Bascic тощо. Ще пізніше з'явився інтернет і він повністю змінив вимоги до програмних засобів. Тепер виникла потреба у тому, щоб додатки працювали у веб, генерували html, використовували css. Зростаючи, вебтехнології потребували інтерактивності, тому з'явились мови програмування JavaScript, PHP та подібні. Паралельно з цим йшов процес розвитку додатків, з якими необхідно було працювати на різних апаратних засобах, тому з'явився Java, як мова кросплатформної розробки. Але й цього вже було недостатньо; продуктам були необхідні більш потужні технології роботи, бо програмний код став складнішим, а додатки вже повинні були виглядати, як повноцінні додатки для комп'ютера з великим обсягом пам'яті. Як результат, з'явились React, Vue, Typescript і ряд інших додатків. Програмних мов стало так багато, що розробники, які програмували на JavaScript, забажали спростити колегам роботу. Тому зробили можливість програмування на JavaScript також на бекенді й для цього був створений Nodejs. Популярність мобільних смартфонів створила необхідність розробляти додатки під ці пристрої. Але з часом розробники стикнулись з тим, що пишуть одне й те ж саме для різних операційних систем багато разів. Саме тому вони захотіли зробити так, щоб програмний код можна було використовувати для роботи в різних операційних системах, що створило вимоги до мов програмування, а саме кросплатформність. Як результат, з'явився ряд мов програмування, які можуть працювати на одному програмному коді в різних операційних системах. Цей процес еволюції продовжується й нині, адже немає панацеї серед мов програмування та технологій, які б «вирішили все».
Весь цей процес також впливав на те, як саме могли використовуватись програмні засоби, де та на якому обладнанні.
На початку 90-х років не було Інтернет та мережі. Додатки встановлювалися на одному робочому місці. Якщо додаток виконував якусь корисну дію, наприклад, давав можливість набирати текст, при цьому ще й перевіряв орфографію, це було вже за щастя.
Пізніше потужність комп'ютерів підвищилась, з'явився графічний інтерфейс і локальні мережі. Комп'ютери почали обмінюватись інформацією між собою через локальну мережу, а виходити в світову мережу – через модем, який використовував телефонні лінії. На цьому етапі програми все ще розповсюджувались у вигляді "коробочних рішень", які клієнти або купували, або отримували іншим шляхом, встановлюючи їх на певний комп'ютер.
З часом телефонні лінії стали замінюватись на мережеві лінії, які дозволили користувачам в десятки й сотні разів підвищити швидкість обміну інформацією. Це стимулювало ринок створювати різні сайти та сервіси. Раптом з'явились нові можливості: люди почали дзвонити та спілкуватись не телефоном, а через інтернет. Такий бум розвитку висунув нові вимоги до програмного забезпечення: воно повинно було працювати через браузер. Спочатку такі рішення були платформо-залежними, наприклад, були досить потужні плагіни для виводу графіки, такі як Flash, плагіни для виводу інформації з відеокамер та багато інших.
Цю потужність розвитку Інтернет стали використовувати хакери, які стали писати плагіни, які встановлювались у користувачів і робили їм багато лиха. Тому вимоги до систем безпеки стали підсилюватись, багато новітніх технологій свого часу стали заборонятись та припинили свій розвиток та існування. Вимоги ж ринку все далі підвищувались і від браузерів стала вимагатись підтримка ще потужніших рівнів програмування, що призвело до перероблення багатьох модулів на JavaScript і пов'язані з цим технології.
Сьогодні всі звикли, що є смартфони, мобільні додатки (сайти), з якими працюєш, не встановлюючи додаткове програмне забезпечення. Це програмне забезпечення працює звідкись з серверів в Інтернет. І користувачі часто не знають, де ці сервери, ким контролюються. Користувачі перестають контролювати зберігання інформації, бо в будь-який момент компанія, яка обслуговує сервери та програмне забезпечення, може припинити своє існування і, як результат, вся інформація, яка зберігалась на цих серверах, припинить своє існування на них. Для клієнта це великі втрати. Для ринку загалом – це бум банкрутств через втрату інформації, які виникають при зникненні великих провайдерів, які надають SaaS-сервіси.
Цей вид послуг називається SaaS. Це зручно для користувачів, бо їм не потрібно наймати дорогих адмінів та персонал, не потрібно розробляти дорогі програмні засоби та не потрібно займатись IT-бізнесом, в якому вони можуть нічого не розуміти. Тому сьогодні цей вид послуг набув найбільшої популярності.
Проте великі компанії, розуміючи, що вони залежать від власників серверів та програмного забезпечення, що надають SaaS-послуги, вимушені шукати інші рішення. Одне з рішень – це використання застарілих технологій 10-20-річної давнини, які дозволяють встановити програмне забезпечення на своїх серверах. Це часто крок назад, але дозволяє зменшити ризики витоку інформації, прибрати залежність від компаній, що надають SaaS-сервіси, і багато різних інших недоліків, що теж виникають в SaaS. З усім тим, цей шлях – це крок назад, що веде до відсутності інновацій в цих компаніях.
Розробникам SaaS простіше все будувати на своїх серверах, багато чого робити вручну й вони не дуже прагнуть переносити свої системи на сервери клієнтів. Бо це збільшує ризик витоку інформації щодо інтелектуальної власності, перехоплення інновацій іншими компаніями, а також знімає монопольне становище, яке виникає завдяки наданню Saas-сервісів. Їм складно підтримувати системи на серверах клієнтів, бо потрібно робити оновлення і часто це робиться вручну.
З усім тим, ринок вимагає не тільки SaaS-рішень, а й того, щоб SaaS-рішення працювали з серверів великих транснаціональних компаній. І саме це – майбутнє розвитку програмних рішень. Бо це свобода, безпека та незалежність рішень, яких намагаються досягнути потужні гравці ринку.
Ми створюємо гібридні SaaS-системи майбутнього. Вони працюють, як хмарні рішення, але при цьому можуть виконуватись і на серверах клієнтів, створюючи хмарку серед підприємств корпорації або групи компаній.
В нашій системі K2 Cloud ERP ми передбачили можливість автоматичного оновлення модулів системи та структур бази даних. Завдяки цьому значно зменшується вплив людського фактора, зменшуються витрати на оновлення систем та відпадає необхідність постійного залучення дорогих спеціалістів до цих робіт.
Сьогодні ми настільки звикли користуватись різними пристроями (смартфонами, планшетами, ноутбуками тощо), що не звертаємо увагу на операційну систему і не замислюємося, що на них можуть бути різні системи від різних виробників. І що програма, яка працює на одному пристрої або комп’ютері, не обов'язково повинна працювати на іншому. Так, наприклад, якщо у вас є ноутбук, то зовсім не обов'язково програми з цього ноутбука будуть працювати на смартфоні й навпаки. Причина цього – не тільки різниця в апаратних системах, а ще й різниця в програмних засобах.
На сьогоднішній день на ваших пристроях можуть бути різні варіації операційних систем від різних виробників. Ось лише деякі з найпопулярніших зараз: Windows, MacOS, Linux, Android, IOS. Всі ці операційні системи мають різні засоби програмування, різні системи виконання програм. Розробники можуть розробити програму, яка працює тільки, наприклад, у Windows. Або зробити мобільний додаток, який працює тільки на смартфонах Apple.
Тобто, можуть бути чудові програмні рішення, які працюють тільки на чомусь одному, але не працюють на інших пристроях.
Клієнт зазвичай хоче, щоб рішення, до яких він звик, працювали всюди, не замислюючись про формат пристрою й про його операційну систему.
Багато компаній розробляють рішення під кожну операційну систему. Як результат – одне й те саме робиться стільки разів, скільки операційних систем вони бажають підтримувати. На кожній операційній системі працює окрема людина, яка розуміється саме на цій операційній системі, при цьому може не розумітись на іншій. Як результат – великі витрати на виробництво і підтримку програм. Виникають ситуації, коли в одній операційній системі помилка виправлена, а в іншій – ні.
Для того, щоб задовольнити бажання клієнтів, компанії-розробники програмних мов почали придумувати різні рішення і мови, які можуть працювати з одного програмного коду в різних операційних системах. Це досить складний процес і не всі мови програмування підтримують це. Інколи доводиться повністю перепрограмувати рішення для того, щоб підтримувати різні платформи.
В системі K2 Cloud ERP ми з самого початку намагалися створити кросплатформені додатки. Для цього нам довелося відмовитись від підтримки таких мов програмування, як RadStudio, C#, бо в цих мовах програмування багато функціонала зникає при переході на інші операційні системи. Ми перевели всі наші актуальні рішення на Python та PHP. Це вимагало значних витрат ресурсів, але це було зроблено для того, щоб задовольнити вимоги клієнтів. Для того, щоб клієнти могли з легкістю працювати на різних пристроях, в різних операційних системах, як зі сторони серверної частини, так і зі сторони виконання вебдодатків.
У світі багато бізнесів, багато систем і багато розробників. Коли системи розростаються та знаходять використання для різних напрямків бізнесу, в них з'являється багато функціонала й багато структур баз даних. З часом системи через свою універсальність стають неповороткими. Функціонал, який реалізували для певного сегмента ринку, може бути зовсім не потрібен іншим напрямкам. Ба більше, він може заважати!
Модульність систем дозволяє розбити рішення на фрагменти, які можна поєднувати в різних комбінаціях й отримувати те рішення, яке потрібне конкретному бізнесу. Завдяки розбиттю на модулі, програмний код модуля стає значно меншим, ніж програмний код всієї програми, більш контрольованим і зрозумілим для програмістів. Таким чином, окремі модулі можуть підтримувати певні програмісти, не заважаючи своїми змінами роботі інших модулів і програмістів.
Модульність – важливе питання, без якого не можуть ефективно працювати великі універсальні рішення, які адаптуються під потреби різних клієнтів та клієнтів з різних напрямків діяльності.
K2 Cloud ERP складається з багатьох десятків модулів, які поєднуються один з одним та створюють функціонал для клієнтів з різними потребами. Ці модулі можуть розвиватись, самооновлюватись, а також доповнюватись іншими модулями, які можуть розробляти програмісти з усього світу.
Інтегрованість рішень
У світі існує багато рішень, які розробляють програмісти. Внаслідок тривалої роботи над певними задачами з'являються рішення з унікальними можливостями й функціоналом. Щоб реалізувати подібне, потрібно витратити багато часу та фінансів. Тому в таких випадках простіше не винаходити велосипед, а проінтегруватись з таким рішенням, дозволивши йому виконувати ту роботу, яку він вміє робити якнайкраще.
Можливість інтеграції з іншими засобами є далеко не в усіх програмних засобах. Часто ніхто, крім розробника, не має змоги вносити зміни в програмний код, бо цей програмний код має закритий похідний код і розробник його не передає.
Розробники часто не бажають інтегруватись з іншими рішеннями, бо не мають на це часу або бажання. Таким чином, коли клієнт стикається з подібною ситуацією, то отримує різні програмні рішення, які може, і роблять добре свою роботу, але працюють відокремлено, створюючи проблеми в цілісній експлуатації користувачами.
K2 Cloud ERP передбачає інтеграцію з великою кількістю різних сервісів та ERP-систем. Навіть якщо немає певної інтеграції, будь-хто у світі може розробити модулі, що реалізують інтеграцію, й потім цей модуль розповсюдить через маркетплейс системи K2 Cloud ERP. Відкритість програмного коду та читабельність структури бази даних дозволяє програмістам зрозуміти роботу стандартних модулів системи та безшовно інтегруватись з ними.
Програмні засоби можуть використовувати різні бази даних в різних форматах. Як саме записувати дані в базу даних і в якому форматі, вирішують розробники. Часто розробники придумують свої формати збереження, що заважає відкривати дані або підключатись до баз даних іншим програмним рішенням.
На ринку прийнятий стандарт SQL92. Більшість систем управління базами даних була приведена до цього стандарту. Завдяки цьому різні програмні рішення отримали можливість працювати з однією і тією ж самою базою даних, доповнюючи одне одного. Дотримання стандартів SQL – це загальновідома хороша практика стандартизації.
З усім тим, навіть в цьому випадку ми зустрічали "унікуми", коли ніби стандарту SQL дотримуються, але зрозумілість структур та даних на рівні бази даних порушується.
Прикладом такого є системи 1С та BAS. Ці системи зберігають назви полів та таблиць в спеціальному, незрозумілому для людини вигляді, призначаючи назви машинним шляхом. Людині, щоб зрозуміти назви полів в цій системі, потрібно перекладати за допомогою довідника кожну назву поля та таблиць, приводити типи даних до зручних для роботи людини типів даних. Як результат, швидкість написання SQL в таких випадках зменшується в десятки разів, а постійне приведення типів даних виключає можливість ефективного використання індексів бази даних. Таким чином, створюються доволі повільні SQL-запити, які складно редагувати і які до того ж сильно навантажують сервер бази даних.
Не стандартизація призводить до того, що сторонні програми або повністю не можуть працювати з базою даних, або працюють завдяки неймовірно великим витратам ресурсів, як людських, так і комп'ютерних.
K2 Cloud ERP має відкриту стандартизовану структуру бази даних. Поля та таблиці називаються англійською мовою. До кожного поля та таблиці є коментар українською мовою. Також побудовані зв'язки між таблицями, завдяки яким можна зробити успішно реверс-інжиніринг структури бази даних. Крім того, в наших рішеннях додаються схеми баз даних з логічною та фізичною моделями.
Комп'ютери працюють машинною мовою. Вона незрозуміла та незручна для людини. Тому люди придумали мови програмування, завдяки яким в зрозумілому для людини вигляді є можливість писати різноманітні програми. Ця мова найчастіше схожа на англійську, ми бачили випадки, коли використовувалась російська мова, але в будь-якому разі це мова, зрозуміла для людей.
З цієї зрозумілої для людей мови (мови програмування) системи конвертують все в машинний код; виходить програмне рішення для комп'ютера. Часто системи можуть відокремити ту частину, яка зрозуміла для людини, від тієї частини, яка зрозуміла для комп'ютера. Досить часто розробники для того, щоб ніхто крім них не міг змінити програмний код, передають замовникам тільки ту частину, яка зрозуміла для комп'ютера. Отримуючи цей код, машина його виконує, робить необхідний функціонал, але у людини сильно обмежені можливості зручно та ефективно вносити в цей програмний код свої зміни. Бо зрозумілого для людини виду нема, а зворотне конвертування з машинного коду в людський найчастіше отримує майже те, що є в машинному коді – незручне для змін та аналізу смислової частини програми.
З такими проблемами давно стикаються різні компанії, бо, маючи закритий програмний код, інші розробники або повністю повинні переписати програмний продукт, або майже не впливають на його функціонал.
У світі виникли течії, які пропагують відкритий програмний код, який з програмою передає похідні коди. І завдяки цьому програмісти можуть змінювати програму навіть тоді, коли первинний розробник не хоче змінювати або не може це зробити.
Відкритий програмний код для клієнта – це збереження інвестицій. Без цього може настати такий момент, що програма ніби є, а щось в ній змінити немає змоги. Таким чином, можуть зникнути цілі програмні комплекси, які колись добре працювали, але які перестали підтримувати їх розробники.
K2 Cloud ERP – система з відкритим програмним кодом. Це зберігає інвестиції клієнтів та дозволяє розширювати систему стороннім програмістам, інтегрувати її з іншими рішеннями.
При роботі систем в режимі SaaS (в хмарному вигляді) у партнерів немає доступу до похідних кодів, але необхідність інтеграції та обміну інформацією виникає. В таких випадках для обміну інформацією використовується Api. Це набір команд, за допомогою якого йде спілкування зі сторонніми сервісами. Api також потрібен для роботи мобільних додатків, бо вони використовують вебсистему для комунікації та збереження інформації в базі даних.
Часто розробники не реалізують Api – або спеціально, або тому, що не знають, як це робити.
Багато сервісів з цієї причини не можуть інтегруватись зі сторонніми рішеннями. Клієнт отримує різні рішення, в яких доводиться робити багато роботи вручну, замість того, щоб автоматизувати процеси за допомогою Api.
K2 Cloud ERP має Api в різних модулях. Цей Api розвивається в часі в залежності від потреб та побажань клієнтів. Таким чином, клієнти отримують можливість спілкування з системами навіть тоді, коли не мають доступу до похідного коду системи.
З початком повномасштабної війни в Україні починаєш замислюватися над багатьма питаннями. Наприклад, кому належить система 1С ? Відповідь: агресору.
Якщо ми пишемо програми для 1С і ніби створюємо свій продукт, то він не зможе працювати без 1С. Бо 1С – це не рішення, а система програмування. І без неї всі рішення, які написані для неї, не будуть працювати ніяким чином.
Тільки якщо взяти 1С та перейменувати її, лише тоді ви отримаєте можливість створити щось "альтернативне" 1С.
Інші засоби програмування не зможуть працювати з конфігураціями 1С, бо на рівні конфігурації структура конфігурації доволі сильно зашифрована, зберігаючи дані у своєму певному форматі й не маючи описів цього зберігання, доступних для не-1С-компаній.
Таким чином, якщо ви використовуєте або створюєте конфігурації на 1С, то ви не маєте свого власного продукту. Ви маєте рішення, яке написане на цьому продукті і ви повинні згідно з міжнародним законодавством, сплачувати автору за цей продукт.
На рівні конфігурації може бути програмний код "відкритим", але в цьому програмному коді немає сенсу, бо він без платформи не працює!
1С – це тільки один з випадків, коли програмний код ніби відкритий, а в реальності ви повинні сплатити за нього власнику продукту, його автору.
Інші приклади подібного роду: Microsoft Access, Oracle тощо.
K2 Cloud ERP створений на Python. Ця мова програмування дозволяє використовувати продукт для комерційних цілей.
Коли ви працюєте на виробництві, вам потрібно бачити стан справ у реальному часі. Це роблять дашборди. Цей вид звітів виводить на одному екрані основні показники, дозволяючи керівникам вчасно ухвалювати рішення. Побудувати красивий функціональний дашборд – це справжнє мистецтво. Та що робити, коли такої можливості взагалі немає в програмному продукті?
BI аналітика, PivotGrid, куби, OLAP – це назви одного й того ж. Це потужні аналітичні інструменти, за допомогою яких аналітики можуть будувати звіти, які дають можливість проаналізувати стан справ під різним кутом буквально за секунди. Людина має змогу побачити звіти в зручному для аналізу вигляді, а коли бачить звіти, то має змогу вирішити, що саме потрібно зробити для покращення показників.
Є на підприємствах також велика кількість друкованих звітів, які потрібно мати змогу експортувати в різні формати (PDF, Word, Excel та інше) і які час від часу потрібно змінювати, згідно з законодавством або потребами бізнесу.
Часто в програмних засобах відсутні дашборди та BI-аналітика. Часто програмні продукти не дозволяють змінювати друковані звіти не програмістам. І в таких випадках клієнти повинні шукати інші рішення, які такі можливості додадуть, або звертатись до розробника з проханням реалізувати їм за великі гроші з великою затримкою часу необхідні для підприємства звіти.
В продукті K2 Cloud ERP друковані звіти можуть формуватись за допомогою графічного дизайнера, в якому можуть працювати не тільки програмісти, а й користувачі. Також є потужні таблиці PivotGrid, які дають можливість рухати виміри й бачити дані в різних комбінаціях, а також є BI-модуль, завдяки якому можна намалювати дашборд, а потім його вивести на екран.
Зараз ми звикли працювати з різних пристроїв: комп'ютер, ноутбук, планшет, смартфон, ТЗД тощо. Ці пристрої мають різні характеристики та різний розмір. Для того, щоб людині було зручно працювати, програми повинні адаптувати свій зовнішній вигляд та розмір елементів під фізичні можливості людини. Спроможність адаптуватись під пристрій називається адаптивністю.
Сьогодні адаптивність стає стандартом для роботи вебдодатків. Але є багато програмних засобів, які досі працюють по-старому, під певні розміри екрана.
Адаптивність дуже важлива для роботи на мобільних пристроях: смартфонах, ТЗД, планшетах. Додатки для цих форматів дещо змінюють свій зовнішній вигляд, щоб користувачу було зручно ними управляти.
K2 Cloud ERP має адаптивний дизайн і працює в різних формфакторах, на різних пристроях. Користувачі можуть працювати як з ноутбука, так і з ТЗД чи смартфона. І для цього не потрібно перепрограмувати рішення, адже можливість наразі підтримується "з коробки".
Створюючи додаток, розробники самостійно обирають тип бази даних й способи роботи з даними їх системи. Багато хто обирає платні програмні засоби, не замислюючись, що клієнтам потрібно буде за них платити. Це зроблено або спеціально (розробники можуть отримувати додаткові гроші за продаж ліцензій на базу даних), або просто тому, що розробник користується неліцензійною версією продуктів.
Вартість таких ліцензій може бути доволі суттєвою: 20-25 тис. доларів за сервер.
При створенні наших продуктів ми вибрали вільні варіанти баз даних: Postgresql, MySQL, Sqlite.
Postgresql – це найпотужніша база даних у світі. На ній працюють найбільші бази даних, досягаючи багато петабайтів даних. І ця база даних дозволяє використовувати її навіть для комерційних цілей, не сплачуючи гроші авторам.
Локалізація – це переклад програмного продукту на різні мови. Це не тільки переклад інтерфейсу, а ще можливість перекладу інформації, що знаходиться в базі даних.
При перекладі часто стикаєшся з різними нюансами мов: стандартами дат, грошей, напрямку написання слів тощо.
Наразі локалізація – це важливе питання для транснаціональних компаній, які працюють не тільки в Україні, а й в інших країнах. Багато продуктів працюють тільки однією мовою.
K2 Cloud ERP підтримує "з коробки" три мови програмування: українська, англійська та польська. В системі також передбачена можливість перекладу даних на рівні бази даних. Механізми перекладу розвиваються, автоматизуються, зменшуючи необхідність ручної роботи.
Для клієнта локалізація – це можливість масштабування та виходу на міжнародні ринки, можливість підтримки комунікації з людьми, які не володіють українською мовою.
За 30 років програмування я вивчив багато мов програмування. Ряд мов програмування з часом зникає, інші – з'являються. Ця еволюція мов відбувається завдяки технологічному прогресу у світі.
Перші мої програмні продукти були написані на Clipper. Потім я писав на Delphi (Pascal), на Basic. З часом – на PHP, Python.
Якби зараз я вирішив продавати продукти, що написані на Clipper, то навряд чи знайшов зараз спеціалістів, які володіють цією мовою. А такі рішення досі існують на деяких підприємствах.
Якби я захотів продавати рішення на Delphi, то побачив, що популярність цієї мови програмування незначна. Дуже складно знайти кваліфікованого Delphi-програміста. Бо хоч ця мова програмування доволі проста, середу розробки з її великою кількістю компонент дуже складно налаштувати.
Для клієнта відсутність спеціалістів, що мають знання по підтримці рішення, – це велика проблема. Адже може бути рішення, але не бути програміста, який готовий його підтримувати.
До речі, а хто за кордоном знає, що таке мова 1С ? Мало хто. Бо це мова, яка використовувалася тільки на пострадянському просторі. Ось і маємо сьогодні багато рішень, які поступово вмирають, бо в Україні з мовою окупанта ніхто не хоче працювати. Бо ця мова непотрібна за кордоном.
В K2 Cloud ERP ми обрали найвідоміші мови програмування: Python та PHP. Таким чином, величезна кількість програмістів може підтримувати наше рішення, додавати до нього модулі і інтегрувати рішення з іншими хмарними та ERP-системами.
Дотримання стандартів – дуже важлива річ. Коли ви їх дотримуєтесь, тоді потрібно менше робити для того, щоб поєднувати системи різних розробників одна з одною.
SQL – стандартна мова запитів. Ця англомовна конструкція призначена для того, щоб отримувати дані в базі даних та робити в них зміни. Маючи SQL-запит в K2 Cloud ERP, ви можете його виконати в будь-якому іншому інструментальному засобі, не переписуючи з нуля запит. Це вагомо економить час.
YML дозволяє вам зберігати дані в компактному вигляді; ще є варіації XML, які дозволяють обмінюватись даними між інтернет-магазинами та системами дропшипінгу. Написавши один раз стандартне рішення, ви отримуєте можливість використовувати його для різних систем.
Далеко не всі системи дотримуються стандартів і це створює значні витрати часу, "винаходження велосипеда" кожен раз при комунікації з партнерами.
Для клієнта це неймовірно великі витрати, які він несе через відсутність стандартизації рішень.
Мало систем передбачає модульність, ще менше систем передбачає можливість долучати до розробки сторонніх програмістів, можливість дописувати модулі та заробляти на цьому. Дуже мало систем мають свій маркетплейс, який дозволяє клієнтам отримувати різні продукти та їх оновлення.
В K2 Cloud ERP є свій Маркетплейс. Завдяки цьому розробники з усього світу можуть спільно розвивати продукти, доповнювати рішення один одного, а також надавати рішення та послуги в різних країнах.
Для клієнтів маркетплейс – це великий асортимент продуктів, можливість значної економії бюджету, а також підвищення стабільності рішень шляхом купівлі модулів, які продаються та тестуються у тисячах екземплярах.
Додатки можуть мати різний вигляд. Наприклад, додаток, який працює на смартфоні або ТЗД – це мобільний додаток, додаток, який відкривається через браузер – це вебдодаток, додаток, який просто десь запускається і його не бачить людина, але він виконує якісь функції – це сервіс, додаток, який запускається в командному рядку – це термінальне рішення, додаток, який запускається як програма (не через браузер) – це додаток під певну платформу.
При виконанні різних рішень автоматизації в різних випадках виникає потреба використання різних форматів додатків. Існує дуже мало рішень, які здатні працювати в усіх варіантах.
Наприклад, розробники можуть пропонувати програму для автоматизації складу (WMS), яка працює на персональних комп'ютерах. Потім клієнт хоче, щоб в нього запрацювали термінали збору даних (ТЗД), за допомогою яких вони будуть зчитувати штрих-коди товарів та вести облік. Тут розробник говорить: наше рішення не працює з ТЗД. В цьому випадку клієнт вимушений звертатись до інших компаній і ті за дуже великі гроші (бо їм потрібно інтегруватись з незнайомою їм системою) розробляють мобільне рішення. Бізнес зростає і клієнт вирішує: я хочу, щоб клієнти могли обслуговуватися через сайт. І тут знову чує: наша система так не працює. Клієнт знову вимушений шукати розробників, які зроблять сайт за великі гроші.
В результаті, клієнт отримує три розрізнені системи, які підтримуються трьома різними компаніями, за обслуговування яких клієнту потрібно платити гроші. Ці системи перекидають інформацію одна між одною і «підглючують», бо хтось щось поміняв і не повідомив іншим. В цій ситуації клієнт витрачає набагато більше грошей, має проблеми комунікації між групами розробки та постійними проблемами роботи різних рішень.
Ось чому важлива характеристика продуктів – здатність працювати в різних форматах, як різні види додатків.
Система K2 Cloud ERP увібрала в себе всі можливі варіанти виконання. Вона може працювати і як Api і як сервіс і як вебдодаток, вона працює у вигляді мобільних додатків для Android та IOS, вона може працювати і з командного рядка. При необхідності може виводити 3D або 2D-графіку. Універсальність рішення дозволяє використовувати програмні модулі системи в найрізноманітніших ситуаціях.
У великих системах працює дуже багато людей, тому завжди важливо розуміти, що і хто змінив, яка інформація була, якою вона стала. За це відповідає логіювання змін в системах. На жаль, більшість систем, навіть якщо веде облік інформації про зміни, то, як правило, це робить просто як саму подію. Тобто, хтось щось змінив о такій-то годині такого числа і все, не показуючи розгорнуто саму змінену інформацію. Так відбувається тому, що зміни в системах швидко збільшують розміри бази даних, а також розробники не завжди розуміють, як це реалізувати.
Без того, щоб бачити інформацію, яка була змінена, не може бути аналізу процесів змін. Не можна зрозуміти, чи було внесено зміни випадково, чи спеціально хтось хотів виправити дані.
Ба більше, зміни можуть виконуватись не тільки з програмного засобу, а ще й зі сторонніх інструментальних засобів.
Звертайте увагу на логіювання: воно найчастіше або відсутнє повною мірою, або типово відключене. Коли ви запитаєте розробників, чи ведеться логіювання змін, вони зазвичай скажуть: так ведеться, забуваючи уточнити, наскільки детально це робиться і чи можливо відкотити транзакції по цих змінах, шукати змінену інформацію тощо.
В системі K2 Cloud ERP за допомогою конструктора таблиці реалізована система логіювання змін на рівні бази даних Postgresql – в тригерах. Завдяки цьому сама база даних фіксує всі зміни, де б вони не виконувались, чи то у K2 Cloud ERP, чи в сторонньому інструментальному засобі.
Не потрібно чекати дива від баз даних. Вони багато вміють, в них є механізми оптимізації, але це не значить, що вони можуть все і будуть оптимізувати те, що навіть теоретично не можна оптимізувати. Коли програмісти працюють з базою даних, то повинні пам'ятати, що основне призначення SQL – це отримати дані в необхідному порядку, поєднуючи таблиці в тому вигляді, як потрібно для запиту. Але виконання складних розрахунків по бізнес-аналізу не є функцією SQL.
Коли таблиці баз даних досягають багато мільйонів рядків, SQL-запити сповільнюються, вони працюють значно повільніше, ніж таблиці з маленькими даними. Це призводить до зайвого завантаження баз даних, які мають великі обсяги даних.
Розробники баз даних постійно шукають, як пришвидшити процеси в базах даних. Один зі способів пришвидшення –- це секціонування (або парцирування) даних. Секціонування – це механізм, завдяки якому одна велика таблиця розбивається на менші таблиці по полю, по якому зазвичай йде аналіз. Так, для періодичних даних, наприклад, документів таблиці можна розбивати по даті документа тим самим, коли виводиться інформація за сьогодні. Тому можна не виводити та не аналізувати інформацію за інші періоди. Завдяки тому, що в таких випадках йде робота не з усіма порціями інформації, а з останньою, значно пришвидшується робота бази даних і всіх запитів, зменшується навантаження на сервер.
Секціонування – потужний механізм. Але він має різні реалізації в різних базах даних, бо не входить в стандарт SQL92, а реалізується кожним розробником бази даних індивідуально.
В більшості систем управління базами даних цей механізм не використовується. Бо програмісти не знають, як їм користуватись. Наприклад, в системі 1С відсутні механізми секціонування, а всі спроби зробити це на рівні бази даних загрожують тим, що 1С відмовить в обслуговуванні.
Щоб реалізувати автоматичний механізм секціонування, потрібно написати досить великий програмний код на рівні тригерів бази даних. І в цих тригерах важливо не припуститись помилок, бо секціоновані таблиці можуть неправильно працювати.
В системі K2 Cloud ERP ми автоматизували побудову секціонування на рівні бази даних за допомогою конструктора таблиць. Таким чином, знімається вплив людського фактора і повністю автоматизується процес. Те, що зазвичай робиться впродовж багатьох годин, в результаті робиться декількома кліками миші.
Система оновлень та збереження інвестицій
Технологічний прогрес не стоїть на місці. Постійно розвиваються операційні системи, браузери, виникають нові вимоги до програмних засобів з точки зору безпеки, дизайну та функціоналу. Постійно змінюються Api в різних системах. Якщо системи не будуть оновлюватись, то клієнти через 3-5 років можуть стикнутись з тим, що якесь рішення перестало працювати не тому, що воно погане, а тому, що з'явились нові технологічні вимоги, які забороняють або ж заважають роботі додатків.
Я бачив чимало прикладів такого розвитку подій. Один з прикладів – модулі Flash, які зникли тому, що браузери заборонили виконання модулів з точки зору безпеки.В репозітаріях Google Play, Apple Store можна натрапити на ситуацію, коли репозитарії вимагають оновити додатки тому, що якісь з методів стали вважать небезпечними й згідно з цим розробники повинні внести зміни.
Якщо подивитись історію розвитку програмних засобів, подібних прикладів ви зможете знайти десятки чи навіть сотні.
Додатки повинні постійно оновлюватись, постійно вдосконалюватись, пристосовуватись до реального часу. Якщо цього не зробити, то клієнти рано чи пізно втратять робочий додаток та всі дані, які він обслуговував, одночасно втративши всі ті інвестиції, які вклали в додаток.
В K2 Cloud ERP передбачена система оновлення, яка дозволяє користувачам самостійно або повністю автоматично оновлювати всі додатки, які були встановлені в системі. Завдяки цьому зберігаються інвестиції наших клієнтів та впроваджуються інновації, які йдуть в ногу з часом.
При автоматизації процесів раніше інколи виникали питання, що ніби вже неможливо придумати алгоритм, який щось втілить, тому що для цього потрібні "мізки людини".
Але час йде і прогрес теж. Тепер комп'ютерні програми вміють "думати" як людина і робити те, що раніше здавалося, що може зробити тільки людина. Штучний інтелект тепер вміє писати тексти, писати програми, повідомити вам корисну інформацію. Штучний інтелект може за секунди створити вам картини, на які б людині знадобилось витратити декілька тижнів. Штучний інтелект напише для вас відео і може зробити ще багато чого різного.
Зараз штучний інтелект також працює в роботах, що дозволяє реалізувати заміну людини на машини.
Завдяки штучному інтелекту деякі процеси можуть пришвидшитись у 10-20 разів. Використання штучного інтелекту – це вимога сьогодення.
В K2 Cloud ERP ми все більше і більше використовуємо штучний інтелект. Це дає пришвидшення роботи в багато разів нам і нашим клієнтам.
Всі сайти відрізняються один від одного. Різні кольори, різні дизайни, різні брендбуки. Все це вимагає від вебсистеми змінювати їх зовнішній вигляд згідно з вимогами клієнта.
Зміні дизайну можуть піддаватись не тільки загальні речі, а й компоненти, форми, таблиці, які виводяться в вебдодатку.
Додатки не завжди вміють змінювати свій зовнішній вигляд.
K2 Cloud ERP дозволяє користувачам змінити зовнішній вигляд додатка, змінити зовнішній вигляд компонент, а також змінити алгоритми в компонентах, а інколи й взагалі замінити компоненту або модуль на ті, які потрібні замовнику.
З повномасштабним вторгненням росії в Україну, а також ще раніше – з їх агресією проти незалежної держави, стало принциповим питання – хто власник системи. Як виявилося, у 2014 році майже всі програмні продукти будь-якого виробництва постачались з Росії. Як результат, Україна втрачала значні кошти й технології розвитку програмного забезпечення, стала залежною від іншої держави.
Як виявилося, 90% ринку було зайнято програмними продуктами з російським корінням. Ці продукти створювали ризики витоку інформації, а також технологічної залежності України від Росії.
В реальності, сьогодні Україна залежить не тільки від Росії. Вона залежить також від інших держав, наприклад, США. Ми звикли до того, що в нас стоїть Windows, що використовується Microsoft Office або Microsoft SQL Server. Ми або платимо неймовірно великі кошти за ці програмні продукти, або користуємось "кряками", зламуючи ліцензії, чим порушуємо міжнародне законодавство і створюючи ризики санкцій проти України. А також відкриваємо ворота для хакерів, які, використовуючи розроблені ними "кряки", отримують доступи до приватної інформації, банківських даних, ключів і т.п.
K2 Cloud ERP – це повністю український програмний продукт, який побудований на вільних технологіях, які дозволяється використовувати для комерційних цілей. Цей продукт продається як в Україні, так і за кордоном, посилюючи економіку України та роблячи її незалежною.
Ми розробили не тільки продукт K2 Cloud ERP, а ще каскад програмно-апаратних засобів, які дозволяють повністю на 100% зробити ліцензійно-чисті рішення. Наші рішення працюють не тільки у Windows, а й в Linux, MacOS. Користувачі можуть працювати на комп'ютерах з вільним програмним забезпеченням, з вільними офісними додатками й не порушувати законодавство США або будь-яких інших країн.
Ці технології ми розвиваємо, ними ми ділимось і допомагаємо стати вільними й не залежними від інших країн. Крім цього, ці технології більш захищені та гнучкі!
Технології вирішують багато. Від них залежить успіх рішень, масштабованість, збереженість інвестицій та спроможність працювати з великими даними систем, різними пристроями. Часто про технологічність забувають розповідати компанії, бо клієнти не розуміють різниці між технологіями і, як результат, обирають не те, що більш досконале і потужне, а те, що більш зрозуміле.
Різні системи мають однакові характеристики з точки зору абстрактних слів "збереженість інвестицій", "збільшення виробництва", "пришвидшення швидкості", "зменшення витрат". Слів, які фактично описують будь-яку систему автоматизації й не показують технологічний рівень рішення. Так, всі системи автоматизації це все приносять. Як все-таки вибрати систему, якщо в ній не використовують й не показують технологічний рівень, а говорять бла-бла-бла "у вас все буде добре"?
Технології потрібно показувати, про них потрібно говорити, різницю технологій потрібно пояснювати та демонструвати. Бо без цього не може бути прогресу, не може бути інновацій!