11.09.2023
Как создавать микросервисы одним нажатием кнопки
Цифровая трансформация диктует новые правила развития бизнеса. Она позволяет делать бизнес непрерывным, а для этого нужны высокопроизводительные IT-решения. Важно, чтобы в современных условиях эти решения отвечали требованиям импортонезависимости.
Сложность заключается в том, что во многих организациях, как правило, используются архитектурно устаревшие IT‑системы. Из-за растущих потребностей бизнеса производительность таких IT‑систем уже недостаточна. Сильная связанность компонентов в информационных архитектурах предыдущих поколений вызывает зависимость от существующей команды разработки и даже конкретных людей. Часто разобраться в том, как устроена такая IT-система, крайне сложно.
Создавать современные IT-решения, которые могут быть быстро адаптированы к меняющимся требованиям и задачам, позволяет микросервисная архитектура.
Выбор микросервисной архитектуры
Микросервисная архитектура уже прошла стадии отрицания и хайпа и постепенно выходит на плато зрелости. На первый взгляд, она почти идеальна. Такая архитектура децентрализована и открыта, поэтому позволяет легко разрабатывать и сопровождать существующие системы без риска регресса. Горизонтальное масштабирование делает программные продукты производительными. CI/CD-конвейер позволяет автоматизировать процессы сборки исходного кода и развертывания микросервисов.
Однако не все так гладко. Почему?
- Бизнес мыслит категориями бизнес-процессов и не понимает, что такое микросервисы. Это создает коммуникационные разрывы между бизнесом и IT и не позволяет выстроить эффективное взаимодействие.
-
Отсутствуют единые стандарты и подходы к проектированию. Все еще мало специалистов, которые могут спроектировать правильную микросервисную архитектуру. Практика показывает, что в большинстве случаев получается распределенный монолит, который в полной мере содержит недостатки микросервисной архитектуры и не обладает ее преимуществами.
-
Очень дорогая разработка. Это не сервис-ориентированная архитектура, где реализованный сервис многократно реиспользуется. Если так делать в микросервисной архитектуре, то получится распределенный монолит, который не будет содержать ключевого принципа – слабой связанности. Повторяемость типового кода в микросервисах – это стандартная история. Как результат, реализация каждой бизнес-инициативы может идти месяцами, увеличивая time to market.
Тем не менее, эти задачи решаемы. Чтобы упростить и автоматизировать процесс создания микросервисов, компания "Диасофт" разработала технологическую low-code платформу Digital Q.Archer, которая входит в состав экосистемы цифровой трансформации Digital Q.
Как помочь бизнесу и IT понять друг друга
Программный продукт для бизнеса и микросервисы – это не одно и то же. Можно создать лучший в своем классе программный продукт для бизнеса, состоящий из пятидесяти или даже ста микросервисов. Но в таком случае организацию ждут заоблачные затраты на интеграцию и больше десятка нестыкующихся пользовательских интерфейсов. И все это в рамках одного решения, предназначенного для одного бизнес-заказчика. Конечно, в организациях не один бизнес-заказчик. При разработке микросервисов процесс производства программного обеспечения (ПО) становится непрозрачным: у бизнес-заказчика нет понимания, как измерить результат работы команд. Как итог, каждый микросервис выполняет свою узкоспециализированную бизнес-функцию, но по отдельности эти функции непонятны заказчику.
В компании "Диасофт" используют Packaged Business Capabilities (PBC) – приложения, решающие конкретные бизнес-задачи и состоящие из одного или нескольких микросервисов. PBC становятся связующим звеном между потребностями бизнеса и реализацией конкретных микросервисов, которой занимаются команды разработки.
Для создания PBC в "Диасофт" разработали технологическую платформу Digital Q.Archer. Она позволяет проектировать PBC и автоматически генерировать необходимые для их работы микросервисы. Сама платформа Digital Q.Archer тоже состоит из двух PBC: "Дизайнер PBC" и "Дизайнер микросервисов".
Проектирование приложения в микросервисной архитектуре
Проектирование приложений ведется в "Дизайнере PBC": создается логическая модель будущего PBC в терминах бизнес-объектов, их отношений и программных интерфейсов. "Дизайнер PBC" позволяет бизнес-аналитику максимально абстрагироваться от технической составляющей и описывать PBC в терминах бизнеса. При этом про микросервисы он даже не думает.
Здесь важной частью оптимизации процесса производства ПО является использование шаблонов проектирования. С одной стороны, это позволяет сократить time to market, а с другой – обеспечить единые стандарты проектирования. Специалисты "Диасофт" подвергли стандартизации все базовые сущности платформы: PBC, бизнес-объекты, API, события и даже столь неочевидную сущность, как атрибут бизнес-объекта. Если в одном месте сущность "клиент" называется "clientId", то и в другом микросервисе она должна называться также. При этом крайне важен контекст. Платформа Digital Q.Archer самообучается и подсказывает пользователю наиболее подходящие варианты атрибутов на основании накопленного опыта, что уменьшает риск разночтений.
Тем не менее, одних шаблонов недостаточно. Например, PBC реализован, и требуется снова воспользоваться его возможностями, без повторного проектирования. С этой целью, специалисты "Диасофт" предоставили возможность многократного реиспользования ранее спроектированных PBC в виде готовых библиотек. Таким образом, набор доступных компонентов для реализации PBC постоянно расширяется за счет новых PBС, созданных пользователями платформы. При этом код преобразуется в библиотеку без участия разработчика. Для этого разработчику достаточно следовать базовым принципам разработки. Это позволяет сократить написание рутинного кода, например, связанного с реализацией в каждом микросервисе машины состояний или других задач.
Автоматизация разработки микросервисов
Если проектирование логической модели будущего PBC – это задача бизнес-аналитика, то интерпретация PBC через набор микросервисов – это задача разработчика.
Как показывает практика, одной из проблем при проектировании микросервисных приложений является неверная грануляция их на отдельные микросервисы. Для разработчика есть большой соблазн реализовать один большой микросервис, вложив в него все функции PBC. Это может привести к потере части преимуществ всей архитектуры. Освободить разработчика от рутинных задач позволяет PBC "Дизайнер микросервисов", созданный для проектирования микросервисов. "Дизайнер микросервисов" самостоятельно предлагает разбивку любого PBC на микросервисы и генерирует полностью рабочие микросервисы без участия пользователя.
Основным языком разработки в "Диасофт" выбран Java и Spring Framework – по причине их универсальности и отсутствия проблем с кадрами. Наряду с ним, также могут использоваться Python и Golang.
Каждый микросервис, создаваемый с помощью Digital Q.Archer, состоит из четырех слоев:
- Базовый образ контейнера – неизменяемый прикладным разработчиком docker-образ, содержащий в себе необходимую для запуска микросервиса инфраструктуру: операционную систему, Java-машину и т. д.
- Архетип – это набор стандартных библиотек микросервиса. Он включает в себя библиотеки для работы с базами данных, брокерами сообщений, с логированием, трассировкой и многое другое. Один уже архетип позволяет собрать и запустить микросервис.
- Сгенерированный код – это код, который платформа Digital Q.Archer способна автоматически сгенерировать на основе спроектированного ранее PBC и микросервисов. Генератор кода автоматически создает код программных интерфейсов (API и событий) и структуру базы данных. Он позволяет создавать работоспособные REST и событийные интерфейсы микросервиса. В типовые CRUD-методы работы с бизнес-объектами заложены все необходимые базовые функции, в том числе логирование, трассировка, аудит, работа с правами пользователей и прочее. Код генерируется таким образом, что разработчику остается право на расширение реализации метода через его переопределение. Это позволяет достигнуть не только единичной генерации кода, но и бесшовного обновления исходного кода low-code платформой в соответствии с изменившимся описанием.
- Прикладной код разработчика – разработчик может не только писать уникальный код с нуля, но и переопределять предоставленные платформой интерфейсы, классы и методы.
Заключение
Платформа Digital Q.Archer позволяет стандартизировать разработку и сделать ее прозрачной для бизнеса, полностью исключить написание типового кода вручную, бесшовно обновлять стандартный код в любом микросервисе, автоматически генерировать код требуемых API и событий в соответствии с подходом ContractFirst, автоматически документировать изменения. С Digital Q.Archer можно прототипировать PBC за две недели для демонстрации и согласования с заказчиком.
Что нам все это дает? Все достаточно просто: одну кнопку для создания всех работоспособных микросервисов и PBC, решающих бизнес-задачу заказчика.