Новини компанії
21 Вересень 2019
Вибір технологічного стеку та баз даних для розробки програмного забезпечення підприємства
“Починаючи розробку корпоративного програмного забезпечення, важливо розуміти, з яким стеком технологій можна підійти до вирішення завдань великого підприємства, які основні показники програмного продукту важливі для замовника?”
— Микита Васильєв, CTO Almexoft
Справді, вибір нового програмного забезпечення великим підприємством є досить повільним процесом, коли понад 50% роботи робиться ще етапі аналізу попередніх вимог. Це пов’язано з основними викликами сучасного світу – високим ступенем автоматизації та швидкою адаптацією процесів та систем до потреб клієнтів та ринку.
Відповідно, технології, що використовуються при створенні програмного забезпечення, повинні забезпечувати високу стабільність, гарантовану спадкоємність протягом тривалого проміжку часу, масштабованість і, що важливо, повторюваність і переносимість інфраструктури.
Експерт із 20-річним досвідом роботи у сфері IT. Під його керівництвом реалізовано безліч рішень для автоматизації бізнесу (у тому числі Altium, Alfabank, Kazakhmys, Visa International)
Я не буду докладно розбиратиму всі мови та платформи для створення корпоративного програмного забезпечення, а торкнуся лише власного позитивного досвіду нашої компанії, набутого при розробці проектів, у тому числі й Almexoft – 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, який створює об’єктно-реляційний зв’язок між програмним кодом платформи та СУБД. Завдяки цьому, в рамках стандартного постачання Almexoft, ми надаємо нашим клієнтам можливість вибору однієї з підтримуваних СУБД:
- Oracle
- Postgre
- Microsoft SQL Server
Резюмуючи написане вище, і спираючись на свій більш ніж 20-річний досвід у розробці програмного забезпечення, я хотів би вивести ідеальний стек технології, який наша компанія найчастіше рекомендує корпоративним клієнтам та використовує в системі автоматизації бізнес-процесів та електронного документообігу Almexoft:
- Java EE (AOP, EJB, ORM)
- СУБД Oracle/Postgree
- REST/Thrift API