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

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

Никита Васильев 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
Loading...