Вибір технологій та баз даних для розробки корпоративного ПЗ

«Починаючи розробку корпоративного програмного забезпечення, важливо розуміти, з яким стеком технологій можна підійти до вирішення завдань великого підприємства, які основні показники програмного продукту важливі для замовника?»

Микита Васильєв CTO Almexoft

Дійсно, вибір нового програмного забезпечення великим підприємством є досить повільним процесом, коли понад 50% роботи виконується ще на етапі аналізу початкових вимог. Це пов'язано з основними викликами сучасного світу - високим ступенем автоматизації і швидкою адаптацією процесів і систем до потреб клієнтів і ринку. Відповідно, використані при створенні програмного забезпечення технології повинні забезпечувати високу стабільність, гарантовану спадкоємність протягом тривалого проміжку часу, можвливість маштабування і, що важливо, повторюваність і переносимість інфраструктури.

Микита Васильєв

Експерт з 20-річним досвідом роботи в сфері IT. Під його керівництвом реалізовано багато рішень для автоматизації бізнесу (в тому числі для Altium, Alfabank, Kazakhmys, Visa International)

Я не буду детально розбирати всі мови і платформи для створення корпоративного програмного забезпечення, а торкнуся лише власного позитивного досвіду нашої компанії, набутому при розробці проектів, в тому числі і AlmexECM – Java EE. Дійсно, Java EE використовується дуже широко, особливо у великих компаніях. Одна з переваг полягає в тому, що платформа складається з набору стандартів, які гарантують сумісність з попередніми версіями. Навіть старі додатки J2EE в подальшому будуть успішно функціонувати. Це завжди було вагомим аргументом для компаній, які будують довгострокові плани. Програми, що працюють на основі Java EE API, здатні працювати на всіх серверах Java EE. Незалежні від виробника програми дозволяють компаніям створювати перспективне програмне забезпечення, яке не обмежено рамками якого-небудь конкретного продукту. Компанії обирають Java EE за рахунок надійності, простоти і продуктивності платформи – низька швидкість виконання програм, написаних на Java – це міф. Сучасні HTTP-сервери, побудовані на Java, за своєю продуктивністю знаходяться на одному рівні C/C ++ реалізацій (хоча, слід визнати, використання пам’яті у перших вище).

 

У програмістів інші аргументи. Простий синтаксис мови (залишимо за дужками модні конструкції типу лямбда-виразів), зручна організація бібліотек і якісні інструменти для управління залежностями дозволяють без праці збирати величезні проекти та підключати сторонні бібліотеки, нестачі в яких немає. Цілі спільноти виконують якісну відкриту розробку під Java. Java – це продумана і швидка багатопоточність, особливо в останніх версіях платформи, і можливість організації мільйонів легковісних потоків в стилі Go (Goroutines). Зрештою, сама Java Virtual Machine (JVM), яка з легкістю дозволяє програмувати на Scala, Groovy, Python, Ruby, JavaScript, Kotlin, Ceylon та інших мовах програмування. При цьому все, що написано на Python, наприклад, буде доступно з Java, і навпаки. Все сказане вище призвело до появи цілої індустріальної культури корпоративного програмного забезпечення, в якій стандарти покращують ситуацію в цілому.

 

Дуже багато в корпоративному програмному забезпеченні залежить і від вибору системи управління базою даних (СУБД).

 

 

Незважаючи на те, що всі СУБД виконують одну і ту ж основну функцію – дають можливість користувачам створювати, редагувати і отримувати доступ до інформації, що зберігається в базах даних, – сам процес виконання цього завдання варіюється в широких межах. Крім того, функції і можливості кожної СУБД можуть істотно відрізнятися.

 

Почати, мабуть, варто з Oracle (і PL/SQL).

 

Історія даного продукту починається ще в 1970-х і до теперішнього моменту однойменна компанія заробила просто блискучу репутацію, ставши на ринку корпоративних баз даних еталоном надійності. Остання версія Oracle призначена для хмарних середовищ і може бути розміщена на одному або декількох серверах, це дозволяє управляти базами даних, які містять мільярди записів, а фізичне управління даними не впливає на доступ до логічних структур. Крім того, безпека в цій версії доведена до найвищого рівня, тому що кожна транзакція ізольована від інших. У поточний момент лінійка СУБД Oracle включає відразу кілька повністю сумісних між собою продуктів, що дозволяє знайти максимальну відповідність інтересам корпоративного замовника. Єдиним недоліком Oracle може виявитися висока вартість ліцензування СУБД. Проте, Oracle ідеально підходить для великих організацій, які працюють з величезними базами даних і різноманітними функціями.

 

Одною з кількох умовно-безкоштовних популярних варіантів СУБД є PostgreSQL.

 

PostgreSQL часто використовується для ведення баз даних веб-порталів. Будучи однією з перших розроблених систем управління базами даних, в даний час PostgreSQL добре розвинена і дозволяє управляти як структурованими, так і неструктурованими даними. PostgreSQL може бути використана на більшості основних платформ, включаючи Linux, і прекрасно справляється з завданнями імпорту інформації з інших типів баз даних за допомогою власного інструментарію. Актуальна версія PostgreSQL повністю відповідає стандартові SQL: 2011 і пропонує обробку великих обсягів даних при збільшенні числа одночасно працюючих користувачів. PostgreSQL є безкоштовною базою даних, тому підходить для проектів з обмеженим бюджетом.

 

Іншою популярною СУБД є Microsoft SQL Server (і Т-SQL).

 

В першу чергу це СУБД, ядро ​​якої працює як на хмарних, так і на локальних серверах, при цьому дозволяючи комбінувати типи застосовуваних серверів одночасно. Починаючи з виходу SQL Server 2016, Microsoft адаптувала продукт для роботи під управлінням операційної системи Linux. Однією з унікальних особливостей версії 2016 року є temporal data support (тимчасова підтримка даних), яка дозволяє відстежувати зміни даних з плином часу, в той час як технологія dynamic data masking (динамічне маскування даних) гарантує, що тільки авторизовані користувачі будуть бачити конфіденційні дані. Даний продукт досить добре поєднується з іншими продуктами корпорації Microsoft і ідеально підходить для великих організацій, які вже використовують продуктову лінійку корпорації. З недоліків вищезазначеної бази даних я можу виділити лише високу вартість ліцензування та високу ресурсоємність продукту, який навіть при ретельному налаштуванні продуктивності здатний зайняти всі доступні ресурси.

 

MySQL – одна з найпопулярніших баз даних для веб-додатків.

 

Не будучи профільною системою для корпоративного програмного забезпечення, MySQL фактично є стандартом для веб-серверів, які працюють під управлінням операційної системи Linux. MySQL – це безкоштовний пакет програм, розробку і підтримку якого здійснює корпорація Oracle. Нові версії MySQL виходять регулярно, розширюючи функціонал і покращуючи безпеку СУБД. Існують спеціальні платні версії, призначені для комерційного використання. Для комерційних клієнтів доступне замовлення нового функціоналу. У безкоштовній версії найбільший наголос робиться на швидкість і надійність, а не на повноту функціоналу, який може стати і перевагою, і недоліком – в залежності від області застосування бази даних. Гнучкість СУБД MySQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що підтримують повнотекстовий пошук, так і таблиці InnoDB, що підтримують транзакції на рівні окремих записів. Система має достатній рівень надійності і ідеально підходить для організацій, яким потрібен надійний, але безкоштовний інструмент управління базами даних. На жаль, для безкоштовної версії доступна тільки платна підтримка. Крім того, доведеться витратити багато часу і зусиль, щоб змусити MySQL виконувати нескладні завдання, в той час як інші СУБД роблять це автоматично.

 

Ще одна безкоштовна база даних, яка має комерційну версію – MongoDB.

 

MongoDB призначена для додатків, які використовують як структуровані, так і неструктуровані дані. У наслидок того, що спочатку система MongoDB була розроблена для обробки моделей реляційних даних (хоча може це виконувати), можуть виникнути проблеми продуктивності при спробі використовувати MongoDB таким чином. Проте, MongoDB може добре справлятися там, де інші СУБД працюють повільно або безсилі.

 

Все частіше для обробки гігантських обсягів інформації використовуються колоночні рішення, такі як Vertica або SAP HANA.

 

Остання, наприклад, підтримує SQL, OLTP і OLAP, а ядро ​​SAP HANA знижує вимоги до ресурсів за рахунок використання стиснення. Дані при цьому зберігаються в пам’яті, скорочуючи час доступу, в деяких випадках – значно. Колоночні рішення ідеальні для збереження, вилучення та статистичного аналізу інформації, розподіленої по декількох рівнях зберігання і є незамінними для побудови корпоративних сховищ даних (DWH). Недоліком є ​​висока вартість ліцензій, навіть якщо мова йде про вартість недешевого корпоративного програмного забезпечення.

 

Важливу роль для успішності корпоративного програмного забезпечення відіграє можливість в довгостроковій перспективі перейти з однієї СУБД на іншу, більш потужну, рухаючись синхронно з розвитком бізнесу.

 

 

Ключем до отримання такої можливості служить ORM Hibernate, який створює об’єктно-реляційний зв’язок між програмним кодом платформи і СУБД. Завдяки цьому, в рамках стандартної поставки AlmexECM, ми надаємо нашим клієнтам можливість вибору однієї з підтримуваних СУБД:

 

  • Oracle
  • Postgre
  • Microsoft SQL Server

 

Резюмуючи написане вище, і спираючись на свій більш ніж 20-річний досвід в розробці програмного забезпечення, я хотів би вивести ідеальний стек технологи, який наша компанія найчастіше рекомендує корпоративним клієнтам і використовує в системі автоматизації бізнес-процесів і електронного документообігу AlmexECM:

 

  • Java EE (AOP, EJB, ORM)
  • СУБД Oracle/Postgree
  • REST/Thrift API

 

21 Лютого 2019
Микита Васильєв CTO Almexoft