Архитектура предприятия:
переход к гибким процессам и интеграции
От устаревшего монолита на Java — к архитектуре с Camunda, шиной данных (ESB), API Gateway и Kubernetes. Без глубокого программирования — но со всеми ключевыми схемами, рынком инструментов и тестами.
Как устроен курс
Читаете главу
Плотный материал уровня системного архитектора, адаптированный для не-программистов: объяснения на аналогиях из ЖКХ, таблицы и большое количество диаграмм.
Сдаёте тест
В конце каждой главы — 15 вопросов с вариантами ответов. Для зачисления нужно 70%. Попыток неограниченно, правильные подсвечиваются сразу.
Следующая глава открывается
Главы разблокируются строго по порядку — как маршрут обучения. Прогресс сохраняется в браузере, можно продолжить с того же места в любой момент.
Доступ ко всем главам
Эволюция ИТ-систем: от монолита к микросервисам
Почему жесткие связи «база + интерфейс» перестают работать при масштабировании и как предприятия ЖКХ перестраивают свои системы: целевая архитектура, где 1С, Битрикс24, транспортные системы и Camunda работают как независимые участники через общую шину.
1. Почему пора менять подход
В этой главе мы разберем, почему текущий подход к созданию программ — когда база данных и интерфейс жестко связаны — перестает работать при масштабировании. Для предприятия ЖКХ, где требования меняется с каждым новым законом или запросом заказчика, это вопрос не «когда», а «как быстро».
Ваше текущее приложение на Java, в котором бизнес-процессы заложены жестко, — это классический монолит. Понять его слабые места и увидеть целевую архитектуру предприятия — первая задача руководителя, управляющего ИТ-трансформацией.
2. Кризис монолита в современных реалиях ЖКХ
Долгие годы основным стандартом разработки корпоративных приложений была Monolithic Architecture (монолитная архитектура). Представьте огромный бетонный куб, внутри которого залиты трубы, провода и вентиляция. Если нужно поменять одну трубу — придется ломать весь куб.
В ИТ монолит — это когда база данных, веб-интерфейс и вся бизнес-логика (написанная на Java) сшиты в один огромный исполняемый файл. Плюс такого подхода один: его относительно просто создать на начальном этапе. Минусов — три, и каждый из них бьет по деньгам.
Эффект спагетти (Spaghetti Code)
Программисты связывают разные функции напрямую. Процесс начисления пени жестко связан с модулем выгрузки квитанций. Изменил одно — неизвестно, что сорвется.
Страх изменений
Когда заказчик просит изменить правило обработки заявки на ремонт, программисты боятся трогать код: он может «необъяснимым образом» сломать расчет зарплат дворников.
Долгий Time-to-Market
Чтобы выкатить одно мелкое обновление, приходится останавливать и перезагружать всю систему предприятия. Изменения капают раз в квартал, а не раз в неделю.
Hardcode — это жестко зашитая в код логика. Когда закон или требование заказчика меняется (например, порог обязательного согласования закупки), менять приходится программный код, а не наглядную схему. Именно эту боль мы вылечим во всей первой половине курса.
3. Микросервисы как выход из тупика
Современный подход — это конструктор Lego. Каждая деталь выполняет строго одну функцию, имеет свою независимую мини-базу данных и общается с другими только по строгим правилам. Один микросервис считает тарифы, другой — формирует квитанции, третий — управляет автопарком. Изменили расчет тарифов? Меняется один крошечный модуль, остальная система не трогается.
| Характеристика | Монолит (старый подход) | Микросервисы (новый подход) |
|---|---|---|
| Масштабирование | Приходится покупать мощный сервер для всей программы целиком. | Увеличиваем мощность только того модуля, который нагружен. |
| Отказоустойчивость | Ошибка в одном месте «вешает» всю систему предприятия. | Ошибка в модуле «Квитанции» не мешает работе модуля «Диспетчерская». |
| Обновление | Редкие, тяжелые, требуют ночных остановок работы. | Быстрые, незаметные для пользователей. |
| Бизнес-логика | Hardcoded — зашита в код намертво. | Вынесена на уровень оркестратора (Camunda). |
4. Кошмар интеграции и шина данных (ESB)
Когда компания решает уйти от монолита и внедрить множество независимых систем (1С, системы управления транспортом, новые Java-микросервисы), возникает новая проблема: Point-to-Point Integration (интеграция «точка-точка»).
Если заставить 1С напрямую отправлять данные в транспортную систему, а транспортную — напрямую в портал управления, мы получим хаос: системы «общаются» на разных языках, при сбое одной из них данные теряются безвозвратно.
Решение — Enterprise Service Bus (ESB, корпоративная сервисная шина). ESB выступает «центральным почтамтом» и переводчиком: системы больше не знают о существовании друг друга. Система транспорта просто «кричит» в шину: «Машина с номером ХХХ выехала!» — шина принимает сигнал, переводит в нужный формат и доставляет тем системам, которые подписаны на это событие. Подробно ESB мы разберем в главе 4.
5. Роли систем в новой парадигме предприятия
В целевой архитектуре каждая система занимается только своим профильным делом. Это ключевая схема главы — запомните позиции четырех участников:
1С (ERP)
Изолированный модуль для бухгалтерии и финансового учета. Хранит данные о деньгах, материалах и налогах. Не управляет людьми и не принимает решений о том, как должен идти процесс — только фиксирует факты (Fact-recording).
Битрикс24 (CRM / портал)
Интерфейс для людей (Human Task Management). Сюда через шину «падают» задачи от оркестратора: рабочие группы по закупкам, контроль поручений, оценка эффективности сотрудников.
Системы управления транспортом
Отдельный блок, который следит за техникой. Передает телеметрию и статусы путевых листов в шину — и забирает оттуда приказы о выделении машин.
Camunda (BPM)
Стоит «над» всеми остальными. Не хранит деньги (это делает 1С) и не хранит переписку (это делает Битрикс24). Camunda диктует порядок действий и отдает приказы системам через шину.
6. Реальный сценарий: авария на очистных сооружениях
Представьте крупный объект — городские очистные сооружения. Срабатывает датчик падения давления в периметральной системе насосов.
Как это работало в жестком монолите: сигнал поступает в код Java. Код пытается напрямую создать задачу в базе диспетчера и напрямую лезет в 1С проверить наличие запчастей на складе. Если 1С в этот момент обновляется и недоступна — код выдает ошибку, процесс прерывается, авария не устраняется.
Как это работает в целевой архитектуре (Camunda + ESB):
- Микросервис телеметрии ловит сигнал от оборудования и отправляет сообщение в шину (ESB): «Давление упало».
- Шина передает это событие в Camunda.
- Camunda запускает бизнес-процесс «Устранение аварии».
- Camunda отправляет через ESB приказ в 1С: «Зарезервируй ремкомплект на складе». 1С выполняет и отвечает «Готово».
- Camunda отправляет приказ в Битрикс24: «Создай задачу дежурной бригаде» — и запускает таймер.
- Если бригада не закрыла задачу в Битрикс24 за 30 минут, Camunda видит это и по процессу эскалации отправляет уведомление руководителю.
Логика процесса больше не зашита в код. Вы, как руководитель, можете открыть Camunda и визуально перерисовать этот процесс — например, добавить шаг согласования с инженером до резервирования запчастей в 1С. Программистам для этого не придется переписывать систему. Так работает целевая архитектура.
7. Целевая архитектура предприятия (уровень руководителя)
Ниже — итоговая схема главы. Именно такую картину нужно уметь «читать» и показывать заказчикам: сверху — люди, далее единая точка входа (API Gateway), дирижер процессов (Camunda), в центре — шина данных (ESB), внизу — профильные системы, которые не знают друг о друге и общаются только через шину.
Верхние два блока (Gateway и Camunda) — это «правила игры»: здесь живут защита и логика процессов, и именно здесь вы сможете менять правила без переписывания кода. Нижний ряд — «профильные исполнители»: каждая система делает одну работу и не знает о соседях. Синие двунаправленные линии — шина: данные и команды текут в обе стороны.
Представьте платформу «исполнение строительного договора» у интегратора систем безопасности одним монолитом: в одном коде перемешаны заключение договора, проектирование (проектная документация), подбор и закупка оборудования (камеры, контроллеры, СКУД, пожарка), диспетчеризация монтажных бригад по объектам, пусконаладка и гарантийный сервис. Чтобы поменять условия гарантии, нужно «прорубать» весь куб и ждать релиз — хотя монтажники уже ждут заказ на объект. При этом у каждого этапа свой темп и свои пики: монтаж — сезонный (теплые месяцы), сервис — круглосуточный, проектирование — волновое. В микросервисной архитектуре эти этапы становятся независимыми сервисами, которые масштабируются и обновляются порознь (главы 3–9) — при том, что сквозной процесс договора при этом остается единой управляемой схемой (BPM, глава 2).
1) Монолит — это бетонный куб: любое изменение требует «прорубать» всю систему. 2) Микросервисы разрезают систему на независимые модули с собственными базами данных. 3) Чтобы модули не превратились в «спагетти» из прямых связей, вводится ESB — единственная допустимая точка обмена данными. 4) Camunda стоит над всем и диктует порядок действий. Дальше во 2–3 главах мы разберем Camunda и рынок движков процессов подробно.
BPM: хардкод, нотация BPMN и платформа Camunda
Как вытащить бизнес-логику из программного кода на визуальный уровень: почему «жестко зашитые» правила тормозят предприятие, как читать схемы BPMN без программиста и как Camunda превращает нарисованную картинку в реальное управление системами.
1. Исторический разрыв между бизнесом и ИТ
На любом предприятии — будь то ЖКХ или производство — есть два лагеря:
- Бизнес (руководители, аналитики, методологи) мыслит категориями эффективности: «С завтрашнего дня заявки на ремонт труб свыше 100 000 рублей должны проходить дополнительное согласование у главного инженера».
- ИТ-отдел (программисты) мыслит категориями стабильности кода и баз данных. Любое изменение для них — риск сломать работающую систему.
В классической схеме бизнес пишет техническое задание (ТЗ), отдает программистам, и те уходят на недели или месяцы, превращая ТЗ в строки Java. В результате бизнес-логика становится невидимой для руководителя — она спрятана внутри программы (черного ящика).
2. Анатомия хардкода: пример из практики ЖКХ
Процесс: отключение должника от услуги. Программист пишет строку кода: IF (debt > 5000) THEN { send_block_command() }. Программа работает идеально.
Через полгода руководство решает: теперь отключаем только при долге свыше 10 000 рублей, и за 3 дня до этого отправляем SMS-уведомление. Что делает руководитель в системе с хардкодом?
- Пишет новое ТЗ.
- Ждет, пока программист найдет нужную строчку в сотнях тысяч строк кода.
- Программист перепишет код, добавив логику отправки SMS.
- ИТ-отдел остановит сервер, чтобы загрузить новую версию программы.
Этот цикл называется Time-to-Market (время вывода изменений в работу). В жестких системах он катастрофически длинный — а требования в ЖКХ меняются постоянно.
3. Парадигма BPM: бизнес-логика становится видимой
Чтобы разорвать эту зависимость, была придумана концепция BPM (Business Process Management — управление бизнес-процессами). Суть: извлечь бизнес-логику из программного кода и вынести ее на отдельный визуальный уровень, понятный руководителю.
Вместо того чтобы программист писал условия ветвления в коде, бизнес-аналитик рисует визуальную схему (блок-схему) в специальной программе. А BPM-движок (например, Camunda) сам «читает» эту картинку и исполняет ее как программу.
| Шаг цикла | Что происходит | Кто отвечает |
|---|---|---|
| 1. Design (проектирование) | Выявляем проблему (например, долгие закупки). | Руководство + методологи |
| 2. Modeling (моделирование) | Рисуем визуальную схему того, как процесс должен идти идеально. | Бизнес-аналитик |
| 3. Execution (исполнение) | Движок BPM начинает управлять реальными системами (1С, Битрикс24) строго по нарисованной схеме. | Camunda + ESB |
| 4. Monitoring (мониторинг) | Руководитель видит в реальном времени, сколько заявок «застряло» на этапе согласования. | Руководитель (Cockpit) |
| 5. Optimization (оптимизация) | Вижем узкое место — меняем стрелочку на схеме, и процесс мгновенно перестраивается без переписывания кода. | Аналитик |
В правильной архитектуре программисты пишут только коннекторы (как подключиться к базе данных или как отправить SMS), а порядок действий (когда отправлять SMS и в какую базу лезть) собирается из этих кубиков визуально.
4. BPMN: язык, который понимают и люди, и машины
Если каждый аналитик начнет рисовать схемы так, как ему хочется (квадратики, кружочки, стрелочки разных цветов), программисты не смогут научить систему это понимать. Нужен был единый мировой стандарт. Им стал BPMN (Business Process Model and Notation) — международный стандарт графического описания процессов, разработанный консорциумом OMG.
Главная «магия» BPMN: это не просто картинка. Под каждым нарисованным квадратиком скрывается машиночитаемый код в формате XML. Вы рисуете понятную вам картинку, а движок (Camunda) читает спрятанный под ней код и исполняет его. Бизнес и ИТ наконец-то говорят на одном языке.
5. Алфавит BPMN: 4 главных элемента
Чтобы читать схемы BPMN, руководителю достаточно знать всего четыре базовые фигуры. Сохраните эту «шпаргалку» — она понадобится на командных воркшопах.
User Task — движок «замирает» и ждет человека: карточка задачи летит в Битрикс24, процесс продолжает движение, когда сотрудник нажмет «Выполнено». Service Task — движок через шину сам дает команду системе (1С, транспорт) и получает ответ. Человек не участвует.
6. Практический пример: читаем процесс как руководитель
Типовой согласованный процесс в нотации BPMN. Следуйте цифрам на стрелках — это путь одного «токена» (об этом ниже) через процесс «Обработка заявки ЖКХ».
Как руководитель читает эту схему: процесс стартовал (зеленый круг) → диспетчер в интерфейсе Битрикс24 смотрит данные (синий прямоугольник) → принимается решение (желтый ромб) → если всё хорошо, система без участия человека через шину бронирует машину → процесс разделяется на два параллельных потока: пока люди едут на объект, система резервирует расходы в 1С → процесс ждет выполнения обоих условий и завершается.
В этом и заключается сила BPMN: если завтра вы решите, что перед отказом клиентом заявку должен посмотреть старший инженер, аналитик просто добавит один синий квадратик на схему перед красным кругом. Ни строчки программного кода менять не придется.
7. Camunda: чем движок отличается от Visio
Многие руководители спрашивают: «Мы и раньше рисовали схемы в Microsoft Visio или Miro — в чем разница?» Разница фундаментальна.
- Visio — вы рисуете мертвую картинку для регламента, который потом ляжет в стол.
- Camunda — это Process Engine (движок процессов): полноценная серверная программа, которая «проглатывает» вашу схему и начинает управлять другими системами по нарисованным стрелочкам. Если вы удалите стрелочку в Camunda, процесс на предприятии изменится в ту же секунду.
8. Принцип токена: как Camunda «гоняет» процессы
Представьте настольную игру, где вы кидаете кубик и двигаете фишку по клеточкам. В терминологии BPM эта фишка называется Token (токен — маркер выполнения). На рис. 2.3 красная точка и есть токен.
- Поступает заявка на ремонт лифта — на зеленом стартовом круге появляется токен.
- Движок толкает токен по стрелочке к следующему шагу — например, к задаче «Назначить бригаду в Битрикс24».
- Токен «замирает» на этом прямоугольнике. Camunda отправляет команду через шину в Битрикс24.
- Как только мастер в Битрикс24 нажимает «Выполнено», Битрикс шлет сигнал обратно — токен «оживает» и бежит дальше.
Вы можете открыть систему и в реальном времени увидеть, на каких этапах (квадратиках) сейчас скопились токены. Если на шаге «Согласование сметы» висит 50 токенов (заявок) — вы сразу видите узкое место работы компании. Это главный инструмент аналитики руководителя.
9. Из чего состоит Camunda
Для команды из 20 человек важно понимать три главных компонента платформы:
Camunda Modeler
Бесплатная программа на компьютер бизнес-аналитика. Мышкой перетаскивает кружочки и квадратики, рисуя схему в нотации BPMN.
Camunda Engine
Программа на сервере, работает круглосуточно. Принимает схемы из Modeler и двигает по ним токены, раздавая команды системам через шину.
Camunda Cockpit
Интерфейс для руководителя и администраторов: какие процессы идут сейчас, где произошли ошибки (например, 1С «зависла»), где застряли токены.
10. Почему Camunda (Open Source) — лучший выбор для заказчика
- Отсутствие Vendor Lock-in (привязки к продавцу). Платная проприетарная система = миллионы за лицензии каждый год; нет денег — система отключается. У Camunda есть мощная бесплатная Community Edition, которую можно использовать в коммерческих целях без лицензионных отчислений.
- Легкость интеграции. В отличие от тяжеловесных старых BPM-систем, Camunda изначально создавалась для программистов: идеально встраивается в архитектуру, где уже есть шина (ESB) и микросервисы на Java.
- Масштабируемость. Способна обрабатывать тысячи заявок в секунду — критично для сбора телеметрии с приборов учета или массовых платежей ЖКХ.
Вместе с движком поставляется идеальная поддержка DMN (Decision Model and Notation) — таблиц принятия решений. Аналитик без программирования задает сложную таблицу правил: «Если тип здания = Х, а долг = Y, то алгоритм отключения = Z».
Мы уже начали описывать свои бизнес-процессы в нотации BPMN — и естественный первый кандидат для интегратора систем безопасности (проектирование → монтаж → сервис) это именно процесс исполнения строительного договора (Рис. 2.5). Смотрите на схему через призму главы: каждый этап — отдельный элемент со своим ответственным, входами и результатами. «Заключение договора» и «гарантийный возврат» — события, «Монтаж по объектам» — параллельная ветка (несколько объектов одновременно — это «ворота +» из Рис. 2.3), «Сдача и приемка» — точка, где процесс может ветвиться (претензии заказчика → шлюз решения). Пока эти этажи живут в головах и в Excel-плане — они «хрупкие»; зашитые в движок по схеме BPMN, они становятся управляемыми: видно, где застрял договор, кто отвечает и что дальше.
1) Хардкод = бизнес-логика в коде, каждое изменение через ТЗ и остановку сервера. 2) BPM выносит логику на визуальный уровень; цикл из 5 шагов делает процесс управляемым живым объектом. 3) BPMN — мировой стандарт: 4 группы фигур (события, задачи, шлюзы, пулы) достаточно, чтобы читать любые схемы. 4) Camunda — это не «Visio»: Modeler рисует, Engine исполняет (токены!), Cockpit показывает узкие места, а Open Source-лицензия защищает от вендор-лока.
Рынок движков процессов: Camunda, Flowable, Zeebe и отечественные платформы
Архитектор должен уметь выбирать инструмент под задачу: сравнение «большой тройки» Open Source, отечественные движки (Platform V Flow и форк Camunda 7 OpenBPM), три подхода к интерфейсам (коробка / кастом / портал), хореография против оркестрации и обработка сбоев.
1. Историческая справка: братство на Java
Большинство современных популярных движков имеют одни и те же корни. Изначально существовал популярный продукт Activiti. Из-за разногласий в подходах часть разработчиков ушла и создала форк — Camunda. Чуть позже другая группа откололась от Activiti и создала Flowable. Именно поэтому под капотом Camunda 7 и Flowable очень похожи — но идеологически они пошли разными путями. А несколько лет назад разработчики Camunda совершили революцию и написали с нуля абсолютно новый движок — Zeebe, который сегодня является ядром платформы Camunda 8.
2. Битва классиков: Camunda 7 против Flowable
Оба продукта построены на классической RDBMS-архитектуре: каждый раз, когда процесс переходит от шага к шагу (токен сдвинулся), движок записывает изменение в строгую реляционную базу данных (например, PostgreSQL).
Camunda 7
- Ставка на оркестрацию микросервисов и прозрачность для руководителя.
- Мощнейшая панель мониторинга (Cockpit), огромная документация, идеальная поддержка DMN (таблицы принятия решений).
- Минус: постоянная запись в базу — при сверхвысоких нагрузках (1000+ процессов в секунду) база становится «узким горлышком».
Flowable
- Ставит и на строгие схемы BPMN, и на CMMN (управление кейсами): неструктурированные процессы — например, разбор сложной аварии, где человек сам решает, кого вызывать и какие акты составлять.
- Легковесность: очень просто встраивается в другие Java-программы.
- Минус: панель управления для бизнеса немного уступает конкурентам.
| Критерий | Camunda 7 | Flowable |
|---|---|---|
| Основной упор | Оркестрация микросервисов, четкие алгоритмы | Гибкие процессы (кейсы, CMMN) |
| Интерфейс для бизнеса | Отличный (Cockpit) | Базовый |
| Редактор процессов | Мощное Desktop-приложение (Modeler) | Web-интерфейс (в браузере) |
| Бесплатная лицензия | Apache 2.0 — отличный выбор для коммерции | Apache 2.0 |
3. Новая эра: Zeebe (Camunda 8) и облака
С развитием IoT (умные счетчики в ЖКХ ежесекундно передают телеметрию) классическая архитектура баз данных перестала справляться. Появился Zeebe — с принципиально иной событийно-ориентированной (Event-Driven) архитектурой: он не фиксирует каждый чих в базе, а работает по принципу «бесконечной магнитофонной ленты» (Event Sourcing) — очень быстро записывает поток логов прямо на диск.
- Плюс Scalability: миллионы событий в секунду; не справляется — докупаете сервер, Zeebe сам распределяет нагрузку.
- Плюс Cloud-Native: идеально живет в распределенных кластерах.
- Минус (критично для ваших проектов): гораздо сложнее развернуть на обычных локальных серверах заказчика (On-Premise) — требует сложных облачных инструментов (Kubernetes). Бесплатная версия имеет более строгие лицензионные ограничения для коммерции, чем Camunda 7.
Закупки, документооборот, согласования смет, диспетчерские заявки, транспорт (от десятков до нескольких тысяч пользователей) → Camunda 7 (Open Source): стабильная бесплатная классика, легко работает в связке с 1С и Битрикс24. «Космолет» для сбора телеметрии с миллионов умных счетчиков → Zeebe, но закладывайте больший бюджет на облачную инфраструктуру. Госсектор, импортозамещение, экосистема Сбера → Platform V Flow — отечественный low-code дирижер на том же BPMN 2.0 (подробно в разделе 4). Команда уже на Camunda 7, но нужен «российский паспорт» и поддержка (7 CE с октября 2025 в архиве) → OpenBPM Engine — форк Camunda 7 с полной совместимостью API, в реестре российского ПО. Заказчику нужна вся экосистема от одного отечественного вендора (BPM + шина + ИБ + СУБД + брокеры + K8s) → Diasoft Digital Q — линейка платформ, закрывающая все слои архитектуры (разбор — блок «Digital Q» в конце раздела 4).
4. 🇷🇺 Platform V Flow (СберТех) — отечественная low-code BPM-система
Platform V — корпоративная PaaS-платформа СберТех (представлена в 2020 году, с 2021 года лежит в основе цифровой трансформации самого Сбера). Главный компонент для нашей архитектуры — Platform V Flow: low-code BPM-система для автоматизации бизнес-процессов, оркестрации микросервисов и исполнения пользовательских задач. Моделирование процессов происходит в нотации BPMN 2.0 — том самом международном стандарте, который разбирался в главе 2, поэтому все схемы и навыки переносятся один в один. Flow используется как самостоятельно, так и в качестве ядра для построения высоконагруженных, отказоустойчивых и безопасных enterprise-решений.
То есть для заказчика из госсектора или с задачей импортозамещения Flow забирает роль «дирижера», которую в нашей эталонной архитектуре играл Camunda, Synapse (глава 4) заменяет шину, а Pangolin — отечественную СУБД на основе PostgreSQL (совместима с 1С:Предприятие 8) — можно ставить на место базы процессов.
| Критерий | Camunda 7 | Platform V Flow (СберТех) |
|---|---|---|
| Нотация | BPMN 2.0 | BPMN 2.0 (тот же стандарт) |
| Что это | Open-source-движок, headless: есть «мозг», «лицо» собираете сами | Low-code BPM-система: движок + собственная среда, пригодна и как ядро enterprise-решений |
| Лицензия | Apache 2.0 — бесплатно | Коммерческая: бессрочная или подписочная |
| Тарификация | — | По количеству пользователей или CPU, цена — индивидуальная (после демо) |
| Форматы поставки | Самостоятельное развёртывание | On-premise и cloud |
| Доступность | Зависит от вашей инфраструктуры | 99,99%* (*уровень ПО, зависит от инфраструктуры развертывания) |
| Интерфейсы | Tasklist — только для MVP; Production — кастомный UI | Встроенная low-code среда: аналитики сами проектируют и корректируют процессы |
| Масштаб нагрузок | Проверен глобальными проектами | 360+ млн запусков процессов в месяц в Сбере; выдерживает нагрузки уровня Сбера |
| Отечественность | Зарубежный вендор | Создается и поддерживается в РФ, Реестр российского ПО, альтернатива коробочному ПО |
| Поддержка и обучение | Сообщество или коммерческая поддержка | Два уровня: базовая и расширенная; бесплатная программа обучения |
Ключевые преимущества Flow
- Отказоустойчивость 99,99% и нагрузочный опыт: 360+ млн запусков процессов в месяц внутри Сбера — от сервисов СберБанк Онлайн до Mission Critical систем.
- Перераспределяет ресурсы и разгружает ИТ-отдел: проектированием бизнес-процессов занимаются аналитики, а в разработке достаточно middle- и junior-специалистов под сильным системным аналитиком — экономия на senior-разработчиках.
- Корректировки в продакшен за минуты: достаточно поменять стрелку в схеме — изменение произойдет быстро, без перекомпиляции и новых релизов.
- Сокращает time-to-market: быстрый старт разработки, поэтапное развитие и оптимизация схем процессов; прозрачность процессов и удобный мониторинг — быстрые разборы инцидентов.
- Технически: среда исполнения — горизонтально масштабируемый сервис исполнения процессов с публичным API для управления; соответствие высоким требованиям доступности, надежности и безопасности.
Кому подходит (заявленные сценарии): компании с высоконагруженными ИТ-системами и фокусом на информационную безопасность; с большим количеством клиентских обращений и объемом регулярного документооборота; ищущие альтернативу коробочным решениям; с задачами цифровизации в финансах, страховании, промышленности и не только. Реальные внедрения: ключевые сервисы СберБанк Онлайн, цифровые финансовые активы и блокчейн, B2B/B2C-решения (зарплатные проекты, клиентские обращения, депозиты), заявочный комплекс в самом СберТехе, государственные информационные системы.
Если заказчик из госсектора, у него импортозамещение по требованиям или он уже живёт в экосистеме Сбера — «дирижером» процессов становится Platform V Flow: аналитики рисуют BPMN-схемы (те же, что и для Camunda), наработки по главам 2–3 переносятся полностью, а нагрузки уровня «360 млн запусков в месяц» гарантируют запас прочности для диспетчерских процессов. Для проектов, где открыт выбор бесплатного инструмента, — остаётся Camunda 7. Отличия — в лицензиях и сопровождении, а не в самой нотации.
Когда в 2019 году Сбер начал переход с legacy на микросервисную архитектуру, в банке как оркестраторы работали Activiti, Camunda и jBPM — BPMS предыдущих поколений с ограничением по числу одновременно обрабатываемых процессов (лимиты обходили очередями на запуск и шардированием БД), а low-code возможностей было недостаточно, чтобы аналитики обходились без разработчиков. Вместо импорта нового коробочного ПО Сбер разработал собственное: SaaS-сервис для разработки и оркестрации бизнес-сценариев на базе Platform V Flow. Фактические показатели:
- Масштаб: 150+ продуктовых команд банка автоматизируют на нем процессы; порядка 1000 аналитиков и разработчиков работают в визуальной среде; процессы ежедневно обслуживают 60+ млн внешних пользователей только в рамках одного проекта.
- Нагрузка: свыше 1 млрд запусков экземпляров процессов в квартал, пиковая пропускная способность — более 3000 шагов процессов в секунду.
- Надежность 99,99%: георезервирование во нескольких ЦОД, STAND-IN-переход в резервный контур, шардирование высоконагруженных клиентов в изолированный контур (все шарды — из одной панели), непрерывный мониторинг, горизонтальное масштабирование без лимитов числа процессов.
- Бизнес-эффект: трудозатраты на разработку сокращены до 4 раз (типовое изменение — часы работы аналитика вместо дней у разработчика); lead time вырос в 3–5 раз; стоимость владения до 75% ниже (SaaS — не платят за серверы, СУБД и DevOps); ошибок от ручного труда — в 10 раз меньше (графический BPMN-редактор + панель отладки).
Вывод для архитектора: Flow — не «прототип на витрине», а промышленный оркестратор, который выдержал миграцию банка со сменой сразу четырех иностранных low-code платформ (Oracle, Pegasystems, SAP и др.).
Третий вариант «дирижера» для заказчика — не замена Camunda, а продолжение Camunda. Ключевой факт рынка: в 2025 году производитель объявил, что Camunda 7.24 (14 октября 2025) — последний релиз Camunda 7 Community Edition: репозиторий archived-ится, обновлений, патчей и поддержки от команды Camunda больше не будет (Camunda 8 распространяется как проприетарное ПО). В ответ компания «Хоулмонт» (с 2008 года, 500+ сотрудников, 650+ проектов) выпустила собственный форк Camunda 7 — первый форк Camunda 7, официально включенный в реестр российского ПО (конец августа 2025), и разработала патент на движок.
- OpenBPM Engine — российский BPM-движок, полностью совместимый по API с Camunda 7: существующие Camunda-проекты и схемы BPMN переносятся без переписывания. Open-source-версия — бесплатна (Apache 2.0, публично на GitFlic); версия, включенная в реестр, — коммерческая лицензия.
- OpenBPM Studio — бесплатный плагин для OpenIDE/IntelliJ IDEA: моделирование BPMN/DMN и код — в одном месте, «Camunda Modeler + профессиональная IDE».
- OpenBPM Control — бесплатная open-source-панель мониторинга и управления (аналог Camunda Cockpit с расширенной функциональностью, на Jmix).
- OpenBPM Tasklist — open-source-приложение на React для задач пользователей: строит «хабы», где поток задач синхронизируется из разных экземпляров движков, а исполнение делегируется в разные приложения.
Это не low-code: код на Java по-прежнему пишется, но по заявлению вендора сложные кейсы реализуются до 3 раз быстрее традиционной разработки и до 4 раз дешевле BPMS/low-code других вендоров (горизонт 3–5 лет). Платформа модульная — каждый компонент применяется отдельно; совместима с отечественным окружением (Red OS, Astra Linux, PostgresPRO, baseALT, Axiom JDK, Jmix). Отрасли: банки/финтех, телеком, госсектор, энергетика, транспорт, ритейл. Бизнес-модель вендора — классическая для Apache-2.0-форков: бесплатный OSS-ядро + платная реестровая версия с поддержкой.
Да. Camunda 7 Community Edition распространяется под лицензией Apache License 2.0, которая прямо разрешает: использовать код в коммерческих продуктах, модифицировать, распространять — включая закрытый код и продажу (это не copyleft-лицензия: раскрывать свои доработки не обязательно). Обязательные условия: сохранить LICENSE/NOTICE и уведомления о копирайте, пометить измененные файлы, не использовать товарный знак «Camunda» и его логотип для продвижения своего продукта (можно писать «на базе Camunda 7 Community, Apache 2.0» / «совместим с API Camunda 7»). Не заходить за границы CE: компоненты Enterprise Edition (часть функций Cockpit/Tasklist) — под коммерческой лицензией. OpenBPM — готовый пример, что такая модель работает: форк + свои инструменты + реестр + патент + продажа лицензий. Если заказчику нужен «Camunda с российским паспортом», можно строить и на OpenBPM Engine (тоже Apache 2.0) — это снимает с нас обязанность самим поддерживать форк ядра. И учитывайте архив 7 CE с октября 2025: при новой разработке на Camunda 7 закладывайте сопровождение движка на свой/чужой форк.
Второй крупный отечественный игрок «полного стека» — «Диасофт» (Санкт-Петербург) и его собственная экосистема платформ Digital Q (q.diasoft.ru): Q.BPM — управление бизнес-процессами (четвертый кандидат на BPM-слой наряду с Camunda, OpenBPM и Platform V Flow), Q.Integration — интеграционная платформа (ESB), Q.Security — информационная безопасность, Q.DataBase — собственная СУБД, Q.MessageBroker — брокеры Kafka/Artemis, Q.Kubernetes и Q.ELK — контейнеры и логи, Q.Agents — настраиваемые ИИ-агенты. Плюс Q.Palette (low-code UX/UI), Q.Archer (микросервисы), Q.Sensor BI (дашборды), Q.DataFlows (ETL), Q.DevOps (доставка), Q.Tasks&Teams и Q.PM (управление проектами) и готовые отраслевые решения: CRM, СЭД, HR, ERP, страхование и финансы.
Для нашего интегратора это не столько еще один BPM-кандидат, сколько ответ на другой вопрос: «покупать одну готовую экосистему или собирать стек из точечных решений?» Сильная сторона Digital Q (как и Platform V) — единый контракт поддержки и закупки на все слои архитектуры; слабость — сдача свободы выбирать лучший инструмент для каждого слоя. Это архитектурное решение, которое принимается с заказчиком, а не на уровне отдельного компонента.
5. Как люди будут работать с задачами: три подхода к интерфейсам
Camunda по своей природе — Headless («безголовая») система: есть мощный «мозг» (движок), но нет «лица» (красивого сайта). Как диспетчер, слесарь и бухгалтер увидят, что им нужно сделать?
«Коробочный» UI — Camunda Tasklist
Стандартное веб-приложение: токен доходит до User Task → в Tasklist появляется строчка → пользователь по логину видит форму и жмет «Выполнить».
- Плюс: работает из коробки, формы собираются в Modeler без кода.
- Минус: неизменяемый дизайн, не знает оргструктуру (кто в отпуске, кто кого замещает), нет сложной логики интерфейса.
Вердикт: идеально для прототипов (MVP) — в финальную рабочую среду (Production) пускать нельзя.
Кастомная разработка (Backend / Frontend)
Backend — сама Camunda (состояние процесса и логика). Frontend — ваш веб-сайт или мобильное приложение (React, Vue, Angular). Общаются через REST API: фронтенд просит «дай список задач слесаря Иванова», Camunda отдает JSON.
Плюс: полная свобода — карта города с машинами или 3D-модель здания для нужд ЖКХ.
Интеграция в портал (Битрикс24)
Самый востребованный путь: сотрудники уже работают в портале, заставлять их открывать еще одно приложение — значит вызывать сопротивление. «Подруживают» Camunda и Битрикс24 через паттерн External Task (внешняя задача) — разбираем ниже.
6. Паттерн External Task: как «подружить» Camunda и Битрикс24
Рассмотрим процесс «Закупка оборудования»:
- Токен в Camunda доходит до шага «Согласовать закупку в рабочей группе».
- Camunda не отправляет задачу в свой Tasklist — она создает Внешнюю Задачу и «замирает».
- Между Camunda и Битрикс24 работает маленький микросервис-коннектор (Java), который постоянно «опрашивает» (Polling) Camunda: «Есть новые задачи?»
- Микросервис видит задачу, забирает ее и через API Битрикс24 формирует карточку: рабочая группа, ответственные, файлы, дедлайн.
- Руководитель видит обычную задачу в Битрикс24 и нажимает «Завершить задачу».
- Битрикс24 отправляет сигнал — Webhook (механизм обратного вызова) — обратно в микросервис: «Задача №123 завершена».
- Микросервис передает команду в Camunda — токен оживает и идет дальше по процессу.
Вы можете продавать заказчикам не просто внедрение BPM, а создание бесшовной экосистемы: бизнес-логику зашивать в Camunda (надежно и гибко), а «лицо» системы делать там, где удобно клиенту — интеграция с их порталом (Битрикс24) для офисных сотрудников или легкое веб-приложение для выездных бригад. Никаких компромиссов в виде стандартных неудобных форм.
7. Хореография против оркестрации
Теперь связываем движок с программами-роботами (микросервисы, 1С, транспорт), которые работают без участия человека. Существуют два принципиально разных подхода к автоматическому взаимодействию систем.
Представьте процесс «Подключение нового дома к сетям ЖКХ» с тремя участниками: Биллинг (расчеты), CRM (база клиентов) и Диспетчерская.
- Подход 1 — Хореография (Choreography): танец без дирижера. Каждая система работает сама и реагирует на события других. Биллинг кричит: «Счет создан!» → CRM создает карточку жильца и кричит: «Жилец создан!» → Диспетчерская отправляет бригаду. Проблема: нет единого центра управления. Если бригада не уехала — вы не знаете, где сбой: Биллинг считает, что отработал, CRM — тоже. Процесс «завис в пустоте». Искать ошибку — ад.
- Подход 2 — Оркестрация (Orchestration): симфонический оркестр с дирижером (Camunda). Микросервисы «молчат» и ждут команды. Дирижер смотрит в ноты (BPMN-схему) и дает приказы: «Биллинг, создай счет» → «Готово» → «Теперь ты, CRM, создай карточку». Преимущество: вы всегда можете открыть Cockpit и точно увидеть, на каком шаге сейчас подключение дома и какая именно система дала сбой.
8. Как Camunda управляет микросервисами (External Task для роботов)
Тот же механизм External Task, что и для Битрикс24, используется и для программ-роботов:
- Camunda не «стучится» в закрытые двери систем безопасности заказчика. Она кладет задачу «Выписать штраф» во внутреннюю корзину — Topic (тема подписки).
- Ваш микросервис штрафов постоянно опрашивает корзину через REST API (Polling): «Для меня есть работа?»
- Если работа есть — забирает задачу, выполняет в своей базе данных и возвращает ответ: «Штраф выписан».
Поскольку микросервисы общаются с Camunda через стандартный веб-протокол (API), не обязательно писать всё только на Java. Специалист по ИИ может написать крошечный модуль на Python для предсказания аварий на теплотрассах — он точно так же будет забирать задачи из Camunda. Разные технологии объединяются в единый процесс.
9. Управление сбоями: повторные попытки и компенсация
В реальном мире ЖКХ серверы «падают», интернет пропадает, 1С зависает из-за обновления. «Глупая» система с жестким кодом выдаст ошибку, и процесс сломается навсегда. Умный оркестратор:
- Политика повторных попыток (Retry Policy): «Если 1С не отвечает — не ломай процесс. Подожди 5 минут и попробуй снова. Три попытки. Если 1С все еще лежит — отправь уведомление системному администратору».
- Компенсация (Compensation): иногда нужно «откатить» процесс назад. Camunda дала команду Биллингу списать деньги — деньги списались. Следующий шаг: направить водовозку — но свободных водовозок нет (ошибка). В BPMN есть специальный значок — событие компенсации (кнопка перемотки назад). Camunda автоматически вернется на шаг назад и даст команду Биллингу: «Верни деньги на счет, услуга не может быть оказана». ИТ-система сама исправляет свои логические ошибки без участия программиста!
Как выглядел бы процесс исполнения строительного договора, описанный в главе 2, в движке. Токен «Договор №123» проходит этапы: «Завести договор в 1С» (External Task → коннектор) → «Назначить проектировщика, согласовать проект» (задача проектировщика в портале — паттерн External Task, раздел 5) → «Закупка: собрать коммерческие предложения» → «Сформировать заказ-наряды, назначить монтажные бригады» (параллельно на N объектов) → «ПНР и сдача: акты, исполнительная документация» → «Запустить гарантийный срок». В Cockpit руководитель в любой момент видит, на каком этапе каждый из десятков договоров и где затык (например, три договора простаивают на согласовании проекта). Если заказчик — госсектор или требует импортозамещение, роли «дирижера» играет Platform V Flow, а если нужно остаться на привычной экосистеме Camunda — OpenBPM Engine (форк Camunda 7, API-совместимый, в реестре РФ ПО).
1) Camunda 7 — выбор для типовых процессов ЖКХ (оркестрация + Cockpit + DMN, Apache 2.0); Flowable — для гибких кейсов (CMMN); Zeebe — для HighLoad-телеметрии, но требует Kubernetes и облака. 2) Интерфейсы: Tasklist — только для MVP; для Production — кастомный фронтенд или интеграция в портал через External Task + Webhook. 3) Оркестрация всегда лучше хореографии для управляемости. 4) Retry + компенсация делают процесс выживаемым в реальном мире. 5) Для госсектора закладывайте в сравнение отечественные движки: Platform V Flow (low-code BPM, BPMN 2.0, 99,99%), OpenBPM Engine (форк Camunda 7, API-совместим, в реестре РФ ПО; синергия: Synapse — шина, Pangolin — СУБД).
ESB: единая шина данных и интеграция зоопарка систем
Как победить «архитектуру спагетти», как устроена шина изнутри (маршрутизация, конвертация протоколов, трансформация форматов, обогащение) и что выбрать на рынке: Apache Camel, WSO2 или отечественная Platform V Synapse.
1. Проблема: интеграция «точка-точка» и архитектура спагетти
В реальной практике предприятий ЖКХ (водоканалы, теплосети, управляющие компании) никогда не бывает одной универсальной программы. Всегда есть «ИТ-зоопарк»: 1С для бухгалтерии, старая биллинговая система (написанная 15 лет назад), новая программа диспетчеризации автотранспорта и современный портал Битрикс24.
Когда руководство ставит задачу «Сделайте так, чтобы при оплате счета в 1С у диспетчера появлялась галочка в Биллинге», программисты обычно выбирают самый быстрый и пагубный путь — интеграцию Point-to-Point (точка-точка): 1С напрямую стучится в базу Биллинга. Затем появляется Битрикс24 — и его тоже напрямую связывают с 1С и с Биллингом. И так далее.
Количество связей при прямой интеграции: N × (N − 1) / 2. Три системы — 3 связи. Шесть систем — уже 15 связей. Десять систем (стандарт для среднего предприятия) — 45 уникальных связей! Эта картина называется Spaghetti Architecture: если в 1С программисты обновят формат даты, это вызовет каскадное обрушение в девяти других системах, потому что все они жестко привязаны друг к другу.
2. Решение: концепция ESB
Чтобы разорвать хаос, в архитектуру вводится центральный элемент — шина данных. Представьте сетевой фильтр (удлинитель) или USB-хаб: компьютеру не нужно знать, как устроены мышка или клавиатура — они просто втыкаются в единый хаб по общему стандарту.
В программировании ESB — это мощная серверная программа, которая становится единым центром обмена сообщениями.
Ни одна система на предприятии не имеет права напрямую «разговаривать» с другой. Все коммуникации идут только через шину. Это называется слабой связностью (Loose Coupling): 1С просто отправляет в шину «Оплата получена» — а шина сама знает, кому это доставить (в Биллинг, в Camunda или в Битрикс24).
3. Три кита, на которых стоит ESB
Шина — это не просто труба, по которой летят данные. Это умный механизм, выполняющий три ключевые задачи, которые экономят бизнесу тысячи часов программирования.
Routing (маршрутизация)
Умное почтовое отделение: шина сама решает, кому доставить сообщение (одному или десяти), основываясь на правилах.
Пример: диспетчеризация присылает «Авария на насосной» — шина видит слово «Авария» и развозит сообщение сразу в три места: в Camunda (запуск процесса ремонта), в Битрикс24 (уведомление руководству) и в SMS-оповещения.
Protocol Conversion (конвертация протоколов)
Старая бухгалтерия умеет только выгружать файл по FTP. Новое мобильное приложение говорит только на REST. ESB из коробки забирает файл из папки FTP и превращает его в REST-запрос для приложения — без кода-переходника.
Data Transformation (трансформация форматов)
Самая важная функция для ЖКХ с его Legacy-системами: два самых популярных формата — тяжелый XML (старые банки, 1С) и легкий JSON (все новые веб-сервисы). Внутри ESB — визуальный Data Mapper: аналитик мышкой соединяет <Name> с FullName и <Debt> с OwedAmount. Никакого Java-кода!
4. Обогащение сообщений (Message Enrichment)
Иногда система-отправитель передает слишком мало данных. Датчик давления шлет в шину короткий сигнал: {"sensor_id": "845", "status": "critical"}. А Camunda для отправки бригады нужен полный адрес.
- Шина получает сигнал
sensor_id: 845. - «Ставит сигнал на паузу» и молниеносно делает скрытый запрос в базу оборудования: «Какой адрес у датчика 845?»
- База отвечает: «Улица Ленина, 15, подвал».
- Шина обогащает исходное сообщение и передает в Camunda полный пакет:
{"sensor_id": "845", "status": "critical", "address": "Улица Ленина, 15, подвал"}.
С точки зрения архитектуры это гениально: ни датчику не нужно хранить адреса (он остается дешевым и простым), ни Camunde не нужно лезть в справочники оборудования. Всю «грязную работу» берет на себя шина.
5. Обзор рынка интеграционных решений
На рынке Open Source два абсолютных лидера — Apache Camel и WSO2 — исповедуют два совершенно разных подхода. Плюс для госсектора и крупных компаний в сравнение нужно включать отечественную Platform V Synapse (СберТех).
Apache Camel (фреймворк)
Не готовая программа, а набор библиотек для программистов: Java-разработчики берут Camel и в своем микросервисе кодом задают правила маршрутизации. Концепция EIP (Enterprise Integration Patterns) — сборник из десятков готовых коннекторов для сотен систем (включая 1С по FTP).
- Плюс: невероятная гибкость, работает быстро, потребляет минимум ресурсов.
- Минус: нет встроенной визуальной панели — все изменения форматов делают программисты в коде.
WSO2 Micro Integrator (сервер)
Полноценный сервер с визуальной средой разработки (Integration Studio), похожей на Camunda Modeler: аналитик перетаскивает иконки «1С» и «CRM», ставит между ними Data Mapper и проводит связи.
- Плюс: готовая панель управления и мониторинга, низкий порог входа (Low-Code).
- Минус: «тяжеловесная» — требует больше памяти и мощных серверов.
Platform V Synapse (СберТех)
Synapse App Mesh — распределенная корпоративная сервисная шина (ESB) нового поколения: обмен данными между ИИ-агентами и автоматизированными системами предприятия. Микросервисная, работает в Kubernetes, конструирование потоков low-code, встроенные ИИ-ассистенты и готовые коннекторы (включая 1С и SAP). Аналоги — IBM WebSphere/MQ, IBM Cloud Pak for Integration, SAP AEX, Oracle Service Bus, BizTalk. По опыту работы в Сбере надежность — 99,99%, производительность 50 000+ операций/с; есть сертификат ФСТЭК (безопасный интеграционный слой по требованиям регуляторов). Зарегистрирован в Едином реестре российского ПО; поддержка производителя 8/5 или 24/7; полная автоматизация типовых операций обслуживания и эксплуатации сокращает OPEX. Входит в Платформу V как часть экосистемы (наряду с Flow — low-code BPM-системой, главой 3, SOWA — API-шлюзом, главой 5, Pangolin/О.К.Е.А.Н. — СУБД, главой 5).
| Критерий | Apache Camel (фреймворк) | WSO2 (серверный продукт) | Platform V Synapse (платформа) |
|---|---|---|---|
| Формат работы | Написание кода (Java/XML) | Визуальный редактор (drag-and-drop) | Low-code конструктор потоков + кодинг |
| Интерфейс мониторинга | Нет (нужно прикручивать сторонние) | Есть встроенная панель (Dashboard) | Есть (платформа управления потоками) |
| Порог входа | Нужны сильные Java-разработчики | Достаточно системных аналитиков | Аналитики + DevOps (Kubernetes) |
| Ресурсы | Минимальные (легковесный) | Высокие (много памяти) | Кластерная модель (K8s) |
| Реестр российского ПО | — | — | Да (Synapse) |
Заказчик говорит: «Мы хотим сами видеть потоки данных и настраивать маршруты, у нас есть администраторы, но нет программистов» → предлагайте WSO2 (или Platform V Synapse для госсектора/импортозамещения): готовый «коробочный» продукт, который заказчик сможет сопровождать. Вы продаете заказчику свой программный продукт «под ключ», и нужно, чтобы он незаметно и быстро забирал данные из старых систем → используйте Apache Camel: Java-программисты встроют его внутрь вашего продукта, и он будет работать как швейцарские часы без лишнего визуального интерфейса. Если заказчик уже выбрал экосистему Platform V, шину играет Synapse, а роль «дирижера» процессов забирает Platform V Flow (см. главу 3) — схема «дирижер + шина + база» при этом не меняется.
Прямые связи («точка-точка») допустимы только для крошечных компаний или прототипов. Если заказчик хочет объединить свой зоопарк, начинать нужно не с написания новых программ, а с внедрения ESB, к которой эти программы будут поэтапно подключаться. За счет шины ваша команда объединяет системы заказчиков в разы быстрее: программистам больше не нужно писать уникальные скрипты перевода форматов каждый раз, когда предприятие покупает новую программу.
В экосистеме Digital Q роль шины сообщений играет интеграционная платформа Q.Integration (группа «Интеграция и ESB»). Если проект идет на Camunda + WSO2/Synapse, эта платформа интереса не представляет; но когда требования импортозамещения касаются и шины тоже, экосистема дает ESB от того же вендора, что и BPM-движок (Q.BPM) и слой безопасности (Q.Security), — один контракт поддержки вместо трех. Перед включением в архитектуру стоит запросить у вендора демонстрацию: на странице Digital Q предлагают демо-стенд и скачивание дистрибутива экосистемы. В главе мы изучали WSO2/Synapse и Camel как эталон — возможности любой отечественной шины оцениваются именно против них.
Монтажная бригада завершает объект — мобильное приложение отправляет в шину событие {"object_id": "B-17", "status": "installed", "evidence": ["фото1.jpg","фото2.jpg"]}. Дальше работает маршрутизация (раздел «Routing»): шина обогащением (Enrichment) достает из справочника адрес объекта и данные договора, и развозит сигнал сразу всем, кому нужно — в 1С (сформировать акт выполненных работ), в портал (задача «выполнить приемку» для куратора и уведомление клиента), в КД (привязать исполнительную документацию к договору), в сервис (поднять гарантийный договор по объекту). Слабая связность в деле: мобильное приложение бригады не знает и не важно, что бухгалтерия заказчика — в 1С или в другой системе; шина сама доставит и переведет форматы (JSON → XML для старых систем).
1) Point-to-Point ведет к «спагетти»: 10 систем = 45 связей. 2) ESB — единый центр обмена: маршрутизация, конвертация протоколов (FTP→REST), трансформация форматов (XML↔JSON) и обогащение сообщений. 3) Рынок: Camel — код для своих программистов, WSO2 — коробочный продукт с визуалом, Platform V Synapse — отечественная low-code шина в реестре РФ ПО. 4) Shina переводит на лету: современный REST-клиент никогда не узнает, что внутри живет старая SOAP/XML-система (глава 5).
API, API Gateway и хранение данных
На каком языке системы общаются с шиной и с внешним миром: что такое API и почему прямой доступ к чужим базам данных запрещен, как устроен «охранник» на входе (API Gateway), REST против SOAP и выбор между SQL и NoSQL.
1. Что такое API
В старых монолитных системах программа (например, 1С) просто брала данные напрямую из своей собственной базы. В микросервисной архитектуре, где десятки программ разбросаны по разным серверам, прямое чтение чужих баз строго запрещено. Системы должны «общаться» культурно — через специально выделенные окна. Это окно и называется API (Application Programming Interface — программный интерфейс приложения): набор строгих правил, по которым одна программа может попросить другую что-то сделать или отдать данные.
Вы пришли в ресторан и смотрите в меню — хотите стейк. Пойти на кухню (в базу данных), открыть холодильник и начать жарить на плите нельзя: кухня — закрытая зона с собственными правилами безопасности. Вы зовете официанта, передаете заказ по строгим правилам (какая прожарка, какой гарнир). Официант относит заказ поварам, ждет, забирает готовое блюдо и приносит вам. Официант — это и есть API: принимает запрос, относит его в систему и возвращает ответ.
2. Почему запрещаем прямой доступ к базам данных
Как руководитель, вы должны жестко пресекать попытки ИТ-отдела сделать интеграцию «прямым чтением базы данных» другой системы. Три причины:
- Нарушение бизнес-логики. Если программа «А» просто запишет данные в таблицу программы «Б», программа «Б» об этом не узнает: не сработают проверки, не отправятся уведомления. Через API программа «Б» сама решает, как правильно обработать данные.
- Безопасность. База данных содержит всё. API позволяет выдать только нужную часть: транспортной компании — номер машины и время выезда, но не зарплатные ведомости водителей.
- Контракт (API Contract). Если программисты переделают структуру таблиц внутри своей базы, прямой доступ сломается. Но если есть API-контракт, они обязаны поддерживать его неизменным снаружи, даже если внутри всё переделали.
3. Swagger (OpenAPI): как API описывают для людей
API — это интерфейс для машин: у него нет кнопок и красивого дизайна. Как программист узнает, как правильно «попросить» данные у чужой системы? Стандарт документации — Swagger (OpenAPI): веб-страница, автоматически генерируемая из кода, где человеческим языком описано:
- Endpoint (эндпоинт) — адрес, куда обращаться, например
https://api.vodokanal.ru/get_debt; - Request (запрос) — что нужно отправить (например, номер лицевого счета);
- Response (ответ) — в каком виде придет ответ (цифра долга).
Если ваша компания разрабатывает новый микросервис, он обязан иметь документацию Swagger. Без нее ваш микросервис — это черный ящик, с которым никто не сможет интегрироваться. Пишите это в ТЗ каждого нового проекта.
4. REST против SOAP: битва стандартов
| SOAP (старый строгий) | REST (современный легкий) | |
|---|---|---|
| Аналогия | Официальное заказное письмо с сургучной печатью, описью вложения и уведомлением о вручении | Короткое сообщение в мессенджере |
| Формат данных | XML (тяжелый) | JSON (легкий) |
| Где применяется | Старые банковские системы, Госуслуги, СМЭВ (межведомственное взаимодействие) | Мобильные приложения, Битрикс24, все новые микросервисы |
| Особенности | Очень сложен в разработке, много кода, работает медленно из-за размера файлов | Разрабатывается быстро, работает моментально, легко читается даже человеком |
Сегодня 90% новых мировых ИТ-систем строятся на REST. Но в госсекторе и ЖКХ SOAP все еще жив: вы не заставляете свои мобильные приложения учить этот сложный язык — вы пропускаете запросы через шину (ESB), которая переводит легкий REST в тяжелый SOAP и обратно, «на лету».
5. API Gateway: главный «охранник» вашей архитектуры
Представьте, что в ресторан одновременно ворвались 10 000 человек, или кто-то попытался пройти на кухню без пропуска. Официанты (API) не справятся, и работа предприятия встанет. Чтобы защитить микросервисы и шину от внешнего хаоса, в архитектуру внедряется API Gateway (Шлюз API) — единая точка входа для всех внешних запросов.
Аналогия: крупный бизнес-центр. Шлюз — это ресепшн и турникеты с охраной на первом этаже. Мобильное приложение бригадира не знает адреса серверов, где лежат 1С или биллинг — оно знает только один адрес: адрес вашего API Gateway. Подходит к ресепшену, показывает пропуск, и только тогда его направляют на нужный этаж.
6. Три главные функции шлюза
- Аутентификация и авторизация. «Кто ты?» — шлюз проверяет логин, пароль или цифровой токен. «Что тебе можно?» — проверяет права: бригадиру Иванову можно запрашивать список своих заявок, а финансовые отчеты всей компании — нельзя (ошибка
403 Forbidden, запрос даже не доходит до 1С). - Rate Limiting (ограничение частоты запросов). Защита от перегрузок и DDoS-атак (когда систему заваливают миллионами фальшивых запросов). Правило: «Один IP может делать не более 100 запросов в минуту». Если система умных счетчиков сошла с ума и шлет по 5000 показаний в секунду, шлюз отбросит лишнее, спасая внутренние базы данных.
- Маршрутизация и сокрытие архитектуры. Внешнее приложение обращается по красивому адресу
api.vodokanal.ru/v1/payments, а шлюз «под капотом» перенаправляет запрос на скрытый внутренний сервер192.168.1.45:8080/billing/pay. Завтра перенесете биллинг на новый сервер — мобильное приложение этого даже не заметит: вы просто поменяли маршрут на ресепшене.
Обе системы занимаются маршрутизацией, но границы у них разные. API Gateway стоит на границе (периметре) сети: работает невероятно быстро, проверяет пропуска, отсекает атаки, работает с легким REST и не занимается тяжелым переводом данных. ESB стоит глубоко внутри предприятия: это тяжелый конвейер, который переводит старый XML в новый JSON, обогащает данные и раздает их нескольким системам. Правило: внешний трафик сначала попадает в API Gateway (проверка безопасности), а оттуда шлюз передает команду в ESB (сложная внутренняя маршрутизация).
Kong
Самый популярный в мире Open Source-шлюз, построенный на сверхбыстром веб-сервере Nginx.
- Огромное количество готовых плагинов (Rate Limiting включается одной кнопкой).
- Отлично подходит для предприятий (Enterprise).
KrakenD
Сверхбыстрый шлюз, написанный на современном языке Go.
- Без базы данных: вся конфигурация — в простом текстовом файле.
- Невероятная производительность при пиковых нагрузках; чуть меньше «коробочных» плагинов, чем у Kong.
Любая современная система, выставленная в интернет (кабинет жильца, приложение бригадира), обязана быть защищена API Gateway — это ваш «цифровой забор». Если разработчики предлагают пустить мобильное приложение напрямую к шине (ESB) или к базе данных — это архитектурная ошибка, которая при первой же хакерской атаке или сбое счетчиков приведет к «падению» всего предприятия.
Если заказчику нужен «цифровой забор» из российского ПО, в сравнение нужно включить SOWA — API Security Gateway, который защищает и интегрирует API как внутри организации, так и с внешними системами (задачу, которую на Западе закрывает, например, IBM DataPower).
- Комбинация API Gateway и WAF в одном устройстве — комплексная защита API и веб-сервисов от кибератак.
- Поддержка широкого спектра протоколов и их конвертация — шлюз может «переводить» трафик между разными форматами обмена.
- Гибкие политики управления, контроля и безопасности + подключение собственных протоколов взаимодействия заказчика.
- Форматно-логический контроль (FLK): различные схемы валидации — входящие сообщения проверяются по содержимому, а не только по формату.
- Умный трафик: оптимизация нагрузки на бизнес-сервисы и более эффективное управление потоками данных.
- Интеграция с инструментами безопасности: АВПО, SIEM, DLP и другие — шлюз становится частью единого контура безопасности.
Продукт зарегистрирован в Едином реестре российских программ. Для схемы из Рис. 5.2 это «охранник в DMZ» на отечественном ПО: внешний трафик проходит через SOWA, и только проверенные запросы доходят до доверенной зоны.
7. Хранение данных: SQL против NoSQL
В монолитной архитектуре все данные хранились в одной гигантской таблице. В микросервисной реальности каждая программа имеет свое независимое хранилище. Два главных подхода:
| SQL (реляционные) | NoSQL (нереляционные) | |
|---|---|---|
| Как хранят | Строгие таблицы с колонками и строками (как в Excel): заранее определено, что в колонке «Телефон» — только цифры | Гибкие документы (чаще JSON): у одного жильца в карточке только телефон, у другого — телефон, email и номер паркинга; база примет оба без переписывания структуры |
| Главная сила | Гарантия транзакций (ACID): при отключении сервера перевод денег либо завершится полностью, либо полностью отменится — данные не «повиснут» в промежуточном состоянии | Высокая скорость: идеальны для записи миллионов мелких событий в секунду |
| Где применять | Бухгалтерия (1С), расчет тарифов, биллинг ЖКХ | Телеметрия с умных счетчиков, каталоги оборудования, логи мобильных приложений |
| Примеры продуктов | PostgreSQL, MySQL | MongoDB, Redis |
В целевой архитектуре мы больше не ищем один универсальный инструмент для всего предприятия. Микросервис «Финансы» использует строгий SQL (PostgreSQL) для бухгалтерских отчетов. Микросервис «Диспетчеризация» — гибкий NoSQL (MongoDB) для быстрого поиска по неструктурированным заявкам. А оркестратор Camunda управляет процессами через шину, даже не зная, как именно микросервисы хранят свои файлы внутри. Выбор базы данных — внутреннее дело каждого микросервиса.
Отечественные СУБД: Platform V Pangolin и О.К.Е.А.Н.
Для заказчика из госсектора, при импортозамещении или требованиях регуляторов PostgreSQL из строки выше можно заменить на российские решения. Два ключевых продукта семейства Platform V:
Platform V Pangolin
Специальная enterprise-сборка PostgreSQL с более чем 80 доработками производительности, безопасности, удобства разработки и сопровождения (аналоги — Oracle, MS SQL, IBM DB2). Позволяет мигрировать с Oracle, MS SQL и PostgreSQL без революции в командах: команда, знакомая с PostgreSQL, начинает работать почти сразу.
- 100 000+ инсталляций в Сбере и других крупных компаниях; команду продукта — 130+ инженеров.
- Внедрен в процессинг Сбера — самую высоконагруженную систему Восточной Европы; поддерживает нагруженные ERP-системы.
- Высокая производительность 1С благодаря собственным разработкам.
- Собственная графическая платформа для сопровождения и мониторинга — Platform V Kintsugi.
- Зарегистрирован в Едином реестре российских программ — помогает соответствовать требованиям регуляторов.
О.К.Е.А.Н.
Инновационная распределенная СУБД корпоративного уровня: надежность и скорость лучших традиционных СУБД плюс горизонтальная масштабируемость без ограничений (аналоги — OceanBase, YugabyteDB). Мнемоника в названии: О — оптимизация объемов хранения и ТСО, К — кластеризация и георезервирование, Е — единый язык запросов SQL, А — аналитика и транзакции в одной СУБД, Н — надежность и неограниченная масштабируемость.
- HTAP: аналитика в реальном времени прямо из базы — без ETL-пакетов и «запаздывающих» хранилищ.
- Экономия: объем хранения меньше в 2–5 раза (до 90% за счет эффективного сжатия); миграция без изменений в коде.
- Надежность: гарантия нулевых потерь данных; отказоустойчивость на уровне сервера, дата-центра и города/региона.
- Временные машины: ретроспективные запросы — данные на любой момент в прошлом без резервных копий.
- Сценарии: пиковые нагрузки банков (зарплатные дни), миллионы транзакций в дни распродаж, телеком-трафик, облачные платформы.
Если заказчик требует отечественную СУБД: строгие транзакционные сервисы (биллинг, расчеты) → Pangolin (команда PostgreSQL-специалистов не ломает стек, 1С работает быстрее). Сервисы с экстремальной нагрузкой и аналитикой «здесь и сейчас» (телеметрия, реалтайм-дашборды, пиковые периоды) → О.К.Е.А.Н.. Для проектов без таких требований PostgreSQL из open source остается полностью легитимным выбором.
К трем подходам к интерфейсам из главы (коробка / кастом / портал) отечественная экосистема добавляет еще один: Q.Palette — low-code-платформа проектирования пользовательского интерфейса (UX/UI), то есть «лицо» приложения — формы, портал, кабинет — тоже собирается из компонентов с минимальным кодом. Для интегратора это вариант собрать «Кабинет клиента» и «Приложение бригады» в той же экосистеме, что и шина с BPM, без полноценной frontend-команды. Рядом в каталоге — Q.Library (готовые компоненты экосистемы): отечественный ответ на «берем open-source компоненты и собираем сами».
Клиент в кабинете «Мой договор» просит «покажи статус работ по объекту и приложи фото» — запрос идет только через API Gateway в сервис «Договоры/Объекты» (и никогда напрямую в базу — раздел 2). Тот же API обслуживает мобильное приложение монтажной бригады на объекте: те же запросы, тот же шлюз, но другие токены и права (бригада видит только свои объекты). Для госсекторных объектов (госучреждения, импортозамещение) периметр «охраны» можно собрать на отечественном SOWA (Gateway + WAF, реестр РФ ПО), а данные договоров и объектов держать на Pangolin (реестровая СУБД, совместимая с 1С) — схема при этом не меняется: API → шлюз → сервис → своя база.
1) API — «официант»: единственная точка, через которую системы просят друг друга о действиях. Прямой доступ к чужим БД запрещен (логика, безопасность, контракт). 2) Swagger — обязательный «паспорт» каждого нового API. 3) REST (JSON, быстро) — стандарт нового мира; SOAP (XML, строго) — живой в госсекторе; шина переводит между ними на лету. 4) API Gateway — периметровая «охрана»: аутентификация, лимиты, маршрутизация (Kong / KrakenD; отечественный вариант — Platform V SOWA: Gateway + WAF); ESB — внутренний «конвейер-переводчик». 5) Данные: SQL для строгих финансов, NoSQL для потоков и телеметрии — каждый сервис со своей базой; при импортозамещении PostgreSQL заменяется на Pangolin (transakcii, 1С) или О.К.Е.А.Н. (распределенная, HTAP).
Как правильно «резать» монолит и связывать сервисы
Самая частая ошибка, приводящая ИТ-проекты к краху — неправильное дробление системы. Вертикальная нарезка по DDD, золотое правило «база данных на каждый сервис», правило «двух пицц», синхронное и асинхронное общение, паттерн Сага и выбор брокера: Kafka против RabbitMQ.
1. Как НЕ надо делить систему (техническая нарезка)
Переход от монолита к микросервисам — это не просто техническая задача, а изменение мышления. Когда программистам дают задачу «распилить монолит», они часто начинают мыслить техническими слоями: один сервис для всех баз данных, один — для всей бизнес-логики (расчетов), один — для интерфейса. Это называется Horizontal Slicing (горизонтальная нарезка).
Почему это катастрофа? Если бизнес просит добавить новую галочку «Срочный ремонт» на экран диспетчера, программистам придется вносить изменения во все три слоя. Они будут ждать друг друга, тестировать всё вместе — и система останется такой же неповоротливой, как монолит. Получается «распределенный монолит», который работает еще медленнее, чем обычный.
2. Правильный подход: DDD (Domain-Driven Design)
Чтобы микросервисы приносили пользу бизнесу, ИТ-архитектура должна копировать структуру самого предприятия. Этот подход называется DDD (предметно-ориентированное проектирование): мы режем систему не горизонтально (по технологиям), а вертикально — по бизнес-функциям. В терминологии архитектуры это называется Bounded Context (ограниченный контекст).
У предприятия ЖКХ (управляющая компания, водоканал) есть четкие независимые отделы: Биллинг (считает тарифы, формирует квитанции), Диспетчерская (принимает аварийные заявки), Автопарк (управляет тракторами и водовозками). По правилам DDD каждый из этих отделов должен стать отдельным микросервисом. Микросервис «Диспетчерская» содержит внутри себя всё необходимое для работы диспетчера: свой интерфейс, свою бизнес-логику на Java и свою собственную базу данных.
3. Золотое правило: Database-per-Service
Самое сложное для принятия, но критически важное правило: каждый сервис обязан иметь свою изолированную базу данных.
В монолите все таблицы лежали в одной базе: диспетчер брал ФИО жильца из таблицы «Клиенты», и бухгалтер брал ФИО из той же таблицы. В микросервисной архитектуре:
- Микросервис «Биллинг» хранит у себя ФИО жильца, номер счета и баланс;
- Микросервис «Диспетчерская» хранит у себя то же ФИО, адрес и историю аварий.
Почему нельзя сделать общую базу? Если будет общая, то программист «Биллинга», решив переименовать колонку FIO на FullName, мгновенно «сломает» микросервис «Диспетчерская». Раздельные базы гарантируют слабую связность (Loose Coupling): если сервер «Биллинга» сгорит, «Диспетчерская» продолжит принимать аварийные заявки, потому что у нее есть своя независимая база с адресами и фамилиями.
4. Правило «двух пицц» (Two-Pizza Team)
Как руководителю понять, правильного ли размера получился микросервис? Правило, придуманное в Amazon: микросервис должен быть такого размера, чтобы его могла полностью спроектировать, написать, протестировать и поддержать команда, которую можно накормить двумя пиццами (обычно 4–6 человек).
Если для поддержки сервиса «Биллинг» требуется 15 разработчиков — это уже не микросервис, вы снова создали монолит, и его нужно делить дальше (например, на «Тарификатор» и «Генератор квитанций»).
Если ваша команда начала переписывать старую монолитную систему заказчика, запретите им создавать «единую базу данных для всего». Заставьте аналитиков пойти к заказчику, изучить организационную структуру (отделы) и нарезать микросервисы строго по этим отделам (Bounded Context). Это единственный способ сделать так, чтобы программы можно было обновлять быстро и независимо друг от друга.
5. Синхронное и асинхронное взаимодействие
Предприятие ЖКХ — единый организм: если Диспетчерская оформила вызов сантехника (услуга оказана), Биллинг должен об этом узнать, чтобы выставить счет. Как изолированные программы должны общаться? Два принципиально разных подхода.
Синхронное взаимодействие реализуется через REST API или gRPC (более быстрый протокол от Google). «Диспетчерская» отправляет «Биллингу» вопрос «Какой баланс у Иванова?» и ждет ответа. Плюс: просто запрограммировать, ответ мгновенный. Минус: каскадные сбои — описаны на рисунке.
Асинхронное взаимодействие использует Message Brokers (брокеры сообщений) — серверы-почтальоны (Kafka, RabbitMQ). «Диспетчерская» кидает в брокер «Заявка №123 выполнена» и сразу продолжает принимать новые звонки. «Биллинг» забирает сообщение, когда готов. Минус: сложнее в разработке, результат не мгновенный (Eventual Consistency — согласованность в конечном счете).
6. Событийно-ориентированная архитектура (EDA) и паттерн Сага
Асинхронный подход породил самую современную парадигму — EDA (Event-Driven Architecture): микросервисы не отдают друг другу прямые приказы, а генерируют События — факты того, что что-то произошло. Умный счетчик шлет «Показания воды изменились» → Биллинг слушает и сам решает обновить счет → генерирует «Счет сформирован» → сервис уведомлений отправляет SMS жильцу.
Все внутренние коммуникации между микросервисами должны быть асинхронными (через события). Прямые REST-запросы допустимы только тогда, когда интерфейсу пользователя (сайту, мобильному приложению) нужно прямо сейчас показать данные на экране (например, вывести баланс).
Проблема распределенных транзакций. Когда базы были едиными, существовал механизм транзакций: если посередине перевода денег отключался свет, база сама откатывала всё. В микросервисах (у каждого своя база) классическая транзакция невозможна. Что делать, если «Биллинг» деньги списал, а «Склад» выдал ошибку (нет запчастей)?
Решение — паттерн Saga (Сага): цепочка локальных транзакций. Если один из шагов дает сбой, запускается цепочка компенсирующих транзакций в обратном порядке: Шаг 1 — списать деньги (успех) → Шаг 2 — выделить бригаду (сбой: нет свободных) → Компенсация Шага 1: вернуть деньги на счет жильца с пометкой «Отмена заявки». Именно Camunda — идеальный оркестратор для паттерна Сага: в BPMN-схеме есть специальный значок компенсации, который позволяет настроить возврат средств визуально, без сложного кода.
7. Выбор брокера: Kafka против RabbitMQ
На рынке Open Source доминируют два брокера, которые работают по абсолютно разным фундаментальным принципам. Ошибка в выборе между ними обойдется заказчику в миллионы рублей на переделку архитектуры.
| Характеристика | RabbitMQ | Apache Kafka |
|---|---|---|
| Принцип работы | Очередь (Message Queue), стандарт AMQP | Поток логов (Event Stream), распределенная платформа |
| Что происходит с сообщением | Удаляется сразу после прочтения (Ack) | Хранится на диске заданное время (Retention) |
| Модель доставки | Push — брокер сам проталкивает | Pull — клиенты сами вытягивают |
| Сложность маршрутизации | Высокая (распределяет по сложным правилам) | Низкая (просто пишет всё подряд в топик) |
| Производительность | Десятки тысяч сообщений в секунду | Миллионы сообщений в секунду (создан в LinkedIn для триллионов в день) |
| Идеальный сценарий в ЖКХ | Маршрутизация задач сотрудникам, генерация счетов, отправка Email | Сбор телеметрии с датчиков, история событий предприятия (Event Sourcing) |
У отечественной экосистемы есть свои версии двух ключевых кирпичиков главы: Q.MessageBroker — брокер сообщений для микросервисных продуктов (линейка Kafka и Artemis), и Q.DataBase — российская СУБД для правила «database-per-service». В одной линейке за ними идет Q.Archer — платформа разработки микросервисных приложений, то есть «нарезка» на сервисы тоже предлагается из той же коробки. Открытые Kafka/RabbitMQ и PostgreSQL (или Pangolin при требованиях к реестру) остаются эталоном главы; отечественные варианты выбираются, когда «российский паспорт» требуется и инфраструктуре, а не только бизнес-приложению.
Интегратор систем безопасности сам подсказывает границы сервисов (Bounded Context): «Договоры» (отдел договоров и снабжения), «Проектирование» (проектный отдел), «Закупки» (закупки оборудования), «Монтаж» (монтажные бригады и объекты), «Сервис» (гарантия и выезды). Каждую область закрывает команда «двух пицц», и у каждого сервиса — своя база: база «Договоры» не имеет общих таблиц с базой «Объекты» — договоры и наряды общаются через события по шине. Простой сага-пример «Ввести камеру в эксплуатацию»: оборудование пришло на склад (закупки) → бригада установила (монтаж) → инженер настроил (ПНР) → клиент принял (договоры); если этап «настроил» упал — компенсация: перепланировать выезд бригады, а не оставлять объект «половинчатым». Синхронно здесь действительно нужен только UI-ответ клиенту («покажи статус»), остальное — событиями.
1) Нарезка по DDD — строго по отделам заказчика (Bounded Context), не по техническим слоям. 2) Database-per-Service — железное правило: общая база = распределенный монолит. 3) Правило «двух пицц» — размер сервиса = 4–6 человек. 4) Внутренние связи — асинхронные (события); синхронный REST — только для немедленного ответа интерфейсу. 5) Saga + Camunda — отмена и возврат средств без единой распределенной транзакции. 6) Брокеры работают вместе: Kafka — мощный поток сырых данных (счетчики, датчики), RabbitMQ — точечные важные команды (акт в 1С, выгрузка в банк).
Безопасность микросервисов: SSO, токены и ролевая модель
Как управлять доступом, когда у предприятия 10 разных веб-приложений: аутентификация и авторизация, IAM-сервер Keycloak и единый вход (SSO), анатомия JWT-токена и стандарт OAuth 2.0, ролевая модель RBAC и ее развитие ABAC.
1. Два столпа безопасности: аутентификация и авторизация
В микросервисной архитектуре безопасность должна быть централизованной: 20 разработчиков не должны писать модуль проверки логинов и паролей внутри каждого нового микросервиса — это долго, дорого и небезопасно. Всю работу с паролями выносим в отдельную инфраструктурную систему.
| Authentication (аутентификация) | Authorization (авторизация) | |
|---|---|---|
| Главный вопрос | «Ты действительно тот, за кого себя выдаешь?» | «Тебе разрешено выполнить это действие?» |
| Суть | Проверка пароля, отпечатка пальца, кода из SMS | Проверка роли пользователя |
| Пример | Диспетчер Иванов вводит логин и пароль — система говорит: «Да, это действительно Иванов» | Иванов нажимает «Удалить базу должников» — «У тебя роль «Диспетчер», а нужна «Администратор». В доступе отказано» |
2. IAM (Identity and Access Management) и Keycloak
Для управления доступом разворачивается отдельный серверный продукт — IAM (Identity and Access Management), его также называют IdP (Identity Provider — поставщик учетных данных). Это специализированная, невероятно защищенная база данных, в которой хранятся профили всех сотрудников, жильцов и подрядчиков: логины, пароли в зашифрованном виде (хеши) и роли.
Почему это важно для заказчика: ни один микросервис («Биллинг», «Автопарк», Camunda) больше не хранит в своих базах ни одного пароля. Если хакер взломает микросервис «Диспетчерская», он не украдет пароли жильцов — их там просто нет, они изолированы в IAM-сервере.
Когда заказчик не хочет платить миллионы за коммерческие решения (вроде Microsoft Active Directory), стандартом де-факто является Keycloak — мощнейший IAM-сервер от Red Hat, бесплатный для коммерческого использования. Он идеально интегрируется с Camunda «из коробки», умеет делать SSO и поддерживает MFA/2FA (многофакторная аутентификация: пароль + код из SMS или приложения-аутентификатора) — все настраивается мышкой в интерфейсе, Java-разработчикам не придется писать ни строчки кода.
3. SSO (Single Sign-On): один пароль на всё предприятие
SSO — механизм, при котором пользователь вводит пароль только один раз и получает доступ ко всем разрешенным корпоративным приложениям без повторного ввода. Как это выглядит для мастера участка:
- Мастер утром открывает корпоративный портал (Битрикс24). Система перенаправляет его на страницу входа корпоративного IAM-сервера.
- Он вводит логин и пароль. IAM-сервер проверяет их.
- Затем мастер открывает на планшете программу управления складом. Система видит, что он уже прошел аутентификацию утром, и пускает его автоматически.
- Если мастер увольняется, администратор безопасности нажимает одну кнопку «Заблокировать» в IAM-сервере — доступ мгновенно аннулируется ко всем программам предприятия.
4. Токен: что это такое (аналогия с отелем)
Этот «ключ» называется Token (электронный пропуск/маркер). Представьте заселение в отель:
- Вы подходите на ресепшн (наш сервер Keycloak) и показываете паспорт (логин и пароль). Это аутентификация.
- Администратор убеждается, что вы — это вы. Он не отдает вам ключи от всех дверей, а выдает пластиковую карточку-пропуск (токен).
- На карточке магнитной лентой записано: «Гость из номера 415. Оплатил на 3 дня. Можно в свой номер и в спортзал, нельзя в кабинет директора». Это авторизация.
- Вы подходите к номеру (наш микросервис или портал Битрикс24), прикладываете карту — дверь открывается. Двери не нужен ваш паспорт, ей достаточно правильной карточки.
Пароль передается по сети только один раз — на сервер Keycloak. Внутри сети между системами «гуляют» только временные токены.
5. JWT: вскрываем токен
Самый популярный в мире формат электронных пропусков — JWT (JSON Web Token). Многие думают, что токен — зашифрованный черный ящик. На самом деле JWT — это просто длинная строка текста, внутри которой хранится открытая информация. Любой разработчик может взять токен и прочитать, что там написано.
6. Как системы договариваются: OAuth 2.0 и OIDC
Если JWT — это сам электронный пропуск, то как звучат правила его выдачи? Мировые стандарты позволяют программам разных производителей (от 1С до мобильных приложений) понимать друг друга без переводчиков.
- OAuth 2.0 (Open Authorization) — стандарт, который позволяет выдать программе ограниченные права, не передавая ей пароль пользователя. Аналогия: ключ парковщика (Valet Key) — можно завести двигатель и проехать 100 метров, но открыть багажник этим ключом нельзя. На практике: приложение «Умный дом ЖКХ» просит у Keycloak доступ к вашим счетчикам — и получает токен, который может только читать счетчики, но не может оплачивать счета.
- OIDC (OpenID Connect) — OAuth 2.0 отлично выдает права, но ничего не говорит о том, кто этот человек. OIDC надстроен поверх OAuth 2.0 и добавляет в JWT информацию с фамилией «Иван Иванов» и его фотографией. Если корпоративный портал поддерживает OIDC, вход через Keycloak настраивается за 10 минут.
Если бы шлюза не было, каждому из 20 программистов пришлось бы в каждый микросервис вшивать сложный код для расшифровки JWT и проверки подписей. В правильной архитектуре шлюз делает это за них: мобильное приложение бригадира шлет запрос «Покажи мои заявки» и прикладывает JWT. Шлюз (Kong) проверяет «сургучную печать», смотрит, не истекло ли время жизни (15 минут), и есть ли у бригадира нужная роль. Если все отлично — пропуск внутрь без проверок (внутри все свои). Ваши Java-программисты пишут только бизнес-логику!
7. Ролевая модель: RBAC и ABAC
Кто решает, что именно будет написано в токене? Как система понимает, что Иванову можно удалять заявки, а Петрову — только смотреть? Для этого архитектор проектирует модель управления доступом — иначе программисты зашьют проверки прямо в код (хардкод), и система станет неуправляемой.
RBAC (Role-Based Access Control) — самый популярный и надежный стандарт. Проблема: 100 диспетчеров × 50 разных разрешений. Назначать разрешения каждому лично — администратор сойдет с ума. Решение: люди и разрешения никогда не связываются напрямую — между ними вводится прослойка «Роль». ИТ-архитектор создает роль «Старший_Диспетчер» и привязывает к ней разрешения: Создать_Заявку, Удалить_Заявку, Просмотр_Отчетов. Иванову просто назначают роль — он автоматически получает все права. Если правила компании меняются (диспетчерам запретили удалять заявки), администратор снимает «галочку» с самой роли в Keycloak — и это мгновенно применяется к сотне сотрудников.
ABAC (Attribute-Based Access Control) — эволюция, когда RBAC не хватает. Пример: два диспетчера, Иванов (Северный район) и Петров (Южный). RBAC потребует ролей «Диспетчер_Север» и «Диспетчер_Юг» — а если районов 50 и еще разделение по типам аварий? Ролей станут тысячи (взрыв ролей — Role Explosion). ABAC решает иначе, оценивая атрибуты: атрибут пользователя «работает в филиале Северный» + атрибут заявки «район Северный» → правило: разрешить доступ, если атрибуты совпадают. В Keycloak ABAC настраивается через визуальные конструкторы правил.
8. Единый источник правды: синхронизация прав в зоопарке систем
У Битрикс24 есть свои «Отделы» и «Рабочие группы», у Camunda — свои внутренние пользователи для распределения задач по веткам BPMN, у ваших Java-микросервисов — свои права. Архитектурное решение: сервер Keycloak становится Single Source of Truth (единым источником правды). Настраивается Identity Provisioning (синхронизация учетных записей): администратор заводит нового сотрудника Иванова только в одном месте — в Keycloak, назначает роль «Инженер». Keycloak сам автоматически отправляет команды в Битрикс24 (создать профиль) и в Camunda (создать профиль), прокидывая нужные роли. Никакого ручного дублирования в разных базах!
Слой «периметр + доступы» из главы в отечественной экосистеме закрывает Q.Security — платформа выполнения требований информационной безопасности (управление доступом: единый вход, роли, проверка прав — та же роль, что в нашей схеме играет связка Keycloak + API Gateway). Для интегратора с государственными заказами интересен пакетный вариант: IAM от того же вендора, что и шина (Q.Integration) и BPM-движок (Q.BPM) — один контракт и одна линия ответственности. В open-source-стеке эталоном остаются Keycloak + Kong из главы; отечественный вариант подбирается, когда «российский паспорт» требуется именно для слоя безопасности.
Один вход (SSO через Keycloak) — человек логинится один раз и работает в 1С, в портале и в мобильном приложении; права синхронизированы из единого источника правды. Роли (RBAC): бригадир видит только свои объекты и состав бригады; проектировщик — только свои проекты и стадии согласования; инженер сервиса — только активные гарантийные договоры и заявки; клиент — только свои договоры, акты и исполнительную документацию (никогда — чужие объекты). JWT-токен в мобильном приложении бригады работает «в поле» даже при плохой связи на объекте: токен самоподтверждаемый, у него есть срок жизни, и шлюз проверяет подпись, а не дублирует запрос к серверу авторизации на каждый клик.
1) Аутентификация = «кто ты», авторизация = «что можно» — не путайте. 2) Все пароли — только в IAM-сервере (Keycloak, Open Source от Red Hat, SSO + MFA «из коробки»). 3) Пароль летит по сети один раз; дальше — временные JWT-токены (15 минут) с криптографической подписью; OAuth 2.0 выдает ограниченные права, OIDC — добавляет «кто это». 4) Проверку токенов делает API Gateway, а не каждый микросервис. 5) Права проектируются через RBAC (роли-прослойка); при «взрыве ролей» — ABAC по атрибутам. 6) Keycloak — единый источник правды для Битрикс24, Camunda и микросервисов.
Наблюдаемость: логи, метрики, трассировки и умные оповещения
Система запущена, и в ней произошел сбой: «заявка жильца потерялась». Как найти ошибку в зоопарке из десятков независимых программ? Почему старые методы больше не работают, Correlation ID, стек ELK, Prometheus и Grafana, распределенная трассировка и правила Alertmanager.
1. Почему старые методы поиска ошибок больше не работают
Это то, что в ИТ называют «Day 2 Operations» — система запущена в работу, и в ней произошел сбой. В эпоху монолитов программисты заходили на единственный сервер, открывали один большой текстовый файл — Log (журнал системных событий), — нажимали «Поиск» и сразу видели, на какой строчке кода произошел сбой. В микросервисной архитектуре этот метод абсолютно бесполезен.
Проследим путь одного простого нажатия кнопки «Оформить наряд» в целевой архитектуре ЖКХ: запрос прилетает с планшета в API Gateway → шлюз проверяет права в Keycloak → шлюз отправляет запрос в микросервис «Диспетчерская» → «Диспетчерская» кидает сообщение в очередь RabbitMQ → Camunda забирает сообщение и дает приказ через ESB → шина передает приказ микросервису «Склад». За одну секунду заявка «прыгнула» через 6 разных программ на 6 разных серверах. Без новой дисциплины 20 программистов могли бы потратить несколько дней, вручную собирая логи со всех серверов и сопоставляя их по времени.
2. Централизованное логирование и Correlation ID
Микросервисам запрещено хранить логи внутри себя на жестком диске. В современных системах сервер с микросервисом может быть автоматически уничтожен при сбое и заменен на новый — если логи лежали на нем, они исчезнут навсегда. Внедряется Centralized Logging: все программы непрерывно, как из брандспойта, «выплевывают» свои журналы наружу, в центральную базу данных логов. Теперь программист открывает единый веб-интерфейс и видит журналы абсолютно всех систем в одном окне.
Но даже собрав все логи в одном месте, возникает вторая проблема: ежесекундно льются тысячи строк от сотен диспетчеров — как понять, какие строчки относятся к зависшей заявке Иванова? Гениальный обязательный паттерн — Correlation ID (уникальная метка запроса):
- Когда запрос впервые касается границы системы (попадает в API Gateway), шлюз генерирует случайный уникальный номер, например
Trace-ID: 999-ABC, и «приклеивает» бирку к запросу. - Каждая следующая система пишет в свой лог строку с этой же биркой и передает ее дальше.
- Результат: программист вводит
999-ABCв строку поиска и мгновенно видит всю цепочку шагов через все 6 серверов.
3. Три столпа наблюдаемости (Observability)
В современной архитектуре термин «Мониторинг» уступил место термину Observability (Наблюдаемость — способность системы самой рассказывать о своем внутреннем состоянии). Чтобы ИТ-отдел мог сказать, что система полностью управляема, она должна поставлять три вида данных:
Logs (логи)
Подробный текст о том, что именно произошло: «В 14:00 жилец Иванов оплатил квитанцию на 500 рублей». Инструмент: ELK / OpenSearch.
Metrics (метрики)
Пульс системы: «За последнюю минуту 50 оплат, загрузка процессора 80%». Инструмент: Prometheus + Grafana.
Traces (трассировки)
Путь запроса: через какие микросервисы прошла оплата Иванова и где она «застряла». Инструмент: Jaeger / Zipkin.
4. Работа с логами: стек ELK (или OpenSearch)
Elasticsearch
Сверхбыстрая поисковая база данных: хранит миллионы строк текста и позволяет делать по ним поиск за доли секунды — «как Google внутри вашей компании».
Logstash / Filebeat
Маленькие программы-агенты (Shippers — «доставщики»), установленные рядом с 1С, Битрикс24, Camunda и Java-микросервисами. Они безостановочно «пылесосят» логи и отправляют их в Elasticsearch.
Kibana
Визуальный веб-интерфейс: сюда заходит программист, вбивает номер заявки (Correlation ID) и видит всю историю по всем серверам ЖКХ.
Компания Amazon выпустила полностью бесплатный и открытый форк (копию) этой системы под названием OpenSearch, который сейчас активно внедряется вместо классического ELK.
5. Метрики (Prometheus) и визуальный пульт (Grafana)
Логи — отличный инструмент для расследования аварий, которые уже произошли. Но руководитель и системный администратор хотят узнавать о проблемах до того, как они сломают систему (например, когда жесткий диск заполнен на 95%). Для этого нужны метрики.
Prometheus — лидер сбора метрик, база данных временных рядов (TSDB). Главное архитектурное отличие — модель Pull (вытягивание): если логи сами «текут» в базу (Push), то Prometheus работает иначе. Он похож на обходчика с блокнотом: каждые 10 секунд Prometheus стучится в микросервисы через скрытый API-адрес /metrics и спрашивает: «Сколько оперативной памяти ты потребляешь? Сколько аварийных заявок сейчас в очереди?» Сервисы отдают цифры, и Prometheus складывает их в графики, привязанные к точному времени. Если сервис «упал» и не ответил на стук — Prometheus мгновенно это зафиксирует.
Grafana — инструмент красивых дашбордов: подключается к Prometheus, базам SQL, к 1С и переводит скучные цифры в спидометры, графики, круговые диаграммы и тепловые карты. Пример для ЖКХ: на одном огромном телевизоре в ситуационном центре диспетчерской — текущее давление в трубах (датчики IoT через Kafka), количество зависших процессов в Camunda (бизнес-показатели), загрузка процессоров на серверах Битрикс24 (ИТ-показатели). Все в одном окне.
6. Распределенная трассировка (Distributed Tracing)
А что делать, если система не выдает явной ошибки, а просто очень медленно работает? Диспетчеру нужно объяснить жильцу, почему страница с квитанцией грузится 15 секунд. Для поиска узких мест (Bottlenecks) применяется третий столп — Tracing, стандарты вроде OpenTelemetry, а среди продуктов — Jaeger или Zipkin.
Trace (трасса) — полный путь запроса от начала до конца, связанный тем самым Correlation ID. Трасса разбивается на Span (интервал/шаг): спан 1 (API Gateway): занял 10 мс; спан 2 (Диспетчерская): 40 мс; спан 3 (Склад): 4.85 секунды! Программист открывает интерфейс Jaeger, вбивает номер заявки и видит каскадный график (похожий на водопад), где сразу красным подсвечена самая длинная полоска. Споры между отделами («Это ваша программа тормозит!» — «Нет, ваша!») заканчиваются мгновенно.
7. Умные оповещения: Alertmanager и ловушка «усталости от алертов»
Grafana отлично показывает графики, когда на них кто-то смотрит. Но ночью администраторы спят — сервер должен сам будить людей. В экосистеме Prometheus есть модуль Alertmanager с умной логикой маршрутизации (не слать все ошибки всем подряд):
Предупреждение
Использование диска достигло 80% — сервер еще работает. Alertmanager отправляет тихое сообщение в корпоративный мессенджер (рабочая группа Битрикс24 или Telegram) системному администратору: «Завтра нужно почистить диски».
Критическая авария
Микросервис «Биллинг» перестал отвечать (упал) — предприятие теряет деньги. Alertmanager инициирует автоматический телефонный звонок (или SMS) дежурному инженеру, чтобы разбудить его в 3 часа ночи.
Если система каждую минуту присылает «Процессор загружен на 90%» и «некритичная ошибка в логе», через неделю инженеры просто отключат уведомления или перестанут на них реагировать — и проспят настоящую аварию. Архитектурное правило: если алерт пришло, он должен требовать немедленного действия человека. Если алерт не требует реакции (система сама восстановилась через секунду) — такой алерт нужно удалить.
В техническом задании на разработку любой новой системы для заказчика должно быть жестко прописано: «Система обязана поддерживать сквозную передачу Correlation ID во всех API-запросах и асинхронных сообщениях», «Централизованный сбор логов», «Открытые метрики /metrics для Prometheus». Переход на микросервисы без этого — гарантированный провал при эксплуатации.
Для столпов наблюдаемости у экосистемы Digital Q есть готовые версии: Q.ELK — платформа быстрой сборки и анализа логов (линейка ELK: агенты, поисковая база, интерфейс — те же три компонента из главы, только российской разработки) и Q.Sensor BI — платформа визуальной аналитики, то есть дашборды. Для столпов «метрики» и «трассы» каталог отдельной платформы не называет — здесь остаются open-source-стандарты Prometheus, Grafana и Jaeger из главы. Сценарий тот же, что и в предыдущих главах: ELK-линия выбирается, когда требования реестра или регулятора касаются всей инфраструктуры — тогда «сбор логов» перестает быть точечным инструментом, а становится частью единого контракта.
Клиент пишет в портал «камера не работает» — заявка получает Correlation ID и уходит по цепочке: портал → сервис «Сервис» → проверка гарантийного договора → уведомление → приложение бригады. В централизованном логе видна вся цепочка по одному ID (где именно заявка застряла — в проверке договора или в назначении бригады). Метрики: среднее время реакции на сервисные заявки по городам, доля заявок, решенных в рамках SLA. Алерт: «доля отказов на этапе ПНР выросла три дня подряд» — сигнал проверить партию оборудования или методику настройки, а не гасить последствия по одной. Для руководителя это переводит разговор с клиентом из плоскости «где моя заявка?» в плоскость цифр и прогнозов.
1) Без централизованного логирования и Correlation ID микросервисы — «гарантированный провал»: поиск ошибки превращается в раскопки по 6 серверам. 2) Три столпа: Logs (ELK/OpenSearch + Kibana), Metrics (Prometheus pull-модель + Grafana), Traces (Jaeger/Zipkin — «водопад» спанов). 3) Alertmanager будит людей по правилам: Warning — в чат, Critical — звонок. 4) Правило против Alert Fatigue: каждый алерт = обязательное действие человека. 5) Продавая решение ЖКХ-заказчику, связка OpenSearch + Prometheus + Grafana показывает абсолютную техническую зрелость: вы продаете не «черный ящик», а прозрачную систему.
Docker, Kubernetes и CI/CD
Как установить «зоопарк» из десятков программ на серверы заказчика, не превратив это в месяцы мучений: контейнеризация (контейнер против виртуальной машины), оркестрация K8s с самовосстановлением и автомасштабированием, автоматизация доставки кода через конвейер CI/CD с обновлением без простоя.
1. Проблема «У меня всё работает»
В эпоху монолитов установка программы (Deployment) была простой: сисадмин брал один большой файл, копировал на сервер заказчика и запускал. В микросервисной архитектуре у вас десятки программ — каждой нужна своя версия Java, свои настройки ОС, свои библиотеки. Самая частая фраза при сдаче проекта: «Я не знаю, почему сервер заказчика выдает ошибку. У меня на компьютере всё работает!»
Программист пишет код на ноутбуке с Windows и Java 11. А сервер заказчика работает на Linux с Java 8. Программа, идеально работавшая у разработчика, при переносе ломается из-за несовпадения окружения (Environment). Когда программ много, вероятность конфликтов версий близится к 100%. Эта ситуация получила название «Матрица из ада».
2. Решение: контейнеры (аналогия с морскими перевозками)
До 1950-х годов погрузка кораблей была хаосом: мешки с кофе, бочки с маслом, ящики с телевизорами. Грузчики тратили недели, чтобы уложить всё в трюм, а мешки часто рвались. Потом придумали стандартный морской контейнер: портовому крану стало абсолютно все равно, что внутри. В 2013 году компания Docker совершила такую же революцию в ИТ: разработчик упаковывает код в Container вместе с нужной версией Java, системными библиотеками и настройками. Системный администратор заказчика берет контейнер и просто запускает его — программа внутри думает, что работает на компьютере разработчика, и 100% не выдаст ошибку версий.
Docker Image (образ)
Текстовый файл-инструкция, как собрать контейнер. Изменен только для чтения. Аналогия: рецепт пирога в кулинарной книге.
Docker Container (контейнер)
Живой запущенный процесс, созданный на основе образа. Из одного рецепта (образа) можно испечь хоть 100 одинаковых пирогов (контейнеров), чтобы справиться с высокой нагрузкой.
Потребуйте от ИТ-отдела, чтобы абсолютно все новые продукты (интерфейсы, микросервисы на Java, коннекторы) разрабатывались и передавались заказчикам исключительно в виде Docker-контейнеров. Это навсегда убьет проблему «У меня на компьютере все работает» и сделает развертывание на объектах ЖКХ предсказуемым, как сборка конструктора Lego.
3. Почему одного Docker недостаточно: проблема масштаба
Если микросервисов всего 3, сисадмин запускает их вручную. Но представьте: комплексная система защиты периметра (СКУД) на критически важном объекте — очистные сооружения острова Белый для Водоканала. Запущено 50 контейнеров на трех разных физических серверах. В 3 часа ночи один сервер выходит из строя из-за скачка напряжения — вместе с 15 контейнерами. При обычном Docker система остановится: администратор проснется, удаленно подключится к резервному серверу и будет вручную запускать каждый из 15 упавших контейнеров. В критических инфраструктурах такой простой недопустим. Нужна программа, которая следит за контейнерами и управляет ими автоматически.
4. Kubernetes (K8s): «начальник порта»
Kubernetes (Кубернетис) — платформа для оркестрации контейнерами, изначально разработанная в Google. (K8s — потому что между первой буквой «K» и последней «s» ровно 8 букв.) Если Docker — матрос, который умеет переносить один контейнер, то Kubernetes — начальник порта, который знает, куда поставить каждый ящик, следит за их сохранностью и руководит всей логистикой.
Self-healing (самовосстановление)
Вы задаете правило: «Сервис СКУД должен работать всегда в 2 экземплярах». Сервер ломается и один контейнер погибает — K8s мгновенно замечает это и сам запускает копию на соседнем живом сервере. Человек не нужен.
Auto-scaling (автомасштабирование)
С 20:00 до 22:00 тысячи жильцов одновременно заходят на портал передавать показания. K8s видит, что контейнер «Биллинг» не справляется, — автоматически создает еще 5 его копий. Нагрузка спала — «убивает» лишние, экономя ресурсы.
Load Balancing (балансировка)
Когда K8s создает 5 копий сервиса, он сам распределяет входящие запросы от жильцов между ними поровну — ни один контейнер не «задохнется».
Если заказчику нужны не просто «голые» контейнеры и Kubernetes, а корпоративный уровень управления кластерами на российском ПО (аналог OpenShift, зарегистрирован в Едином реестре российских программ), в сравнение включается DropApp — решение полного цикла для управления кластерами Kubernetes и контейнерными нагрузками:
- Отказоустойчивость и безопасность: строгие правила контроля доступа и авторизации — сертификат ФСТЭК; защита контейнерных приложений от несанкционированного доступа.
- 50+ встроенных инструментов: CI/CD-стек, CNI, стек мониторинга и логирования — часть «начальника порта» (раздел 4) и конвейера (раздел 5) собирается из коробки.
- Управление жизненным циклом приложений: автоматическое развёртывание, масштабирование по нагрузке, запуск/остановка/обновление, репликация и балансировка нагрузки при сбоях.
- Экономия на инфраструктуре: эффективное использование ресурсов и управление кластером через IaC (Infrastructure-as-Code).
- Бесшовная миграция: легкий переход с Kubernetes, OpenShift и других оркестраторов, полная совместимость с open source версиями; интеграция с ОС Platform V SberLinux OS Server.
- Продвинутое: Kube-in-Kube (изолированные рабочие пространства внутри одного кластера) и ИИ-ассистент по анализу состояния и администрированию ресурсов.
В нашей схеме ЖКХ DropApp занимает место слоя «Kubernetes как управляемый продукт»: вместо того чтобы команде ЖКХ долго учиться «в ручную» администрировать кластер, администраторы получают готовый пульт с автоматизацией жизненного цикла сервисов.
5. CI/CD: автоматизация доставки кода
Вспомните, как обновляли системы ЖКХ 10 лет назад: в пятницу вечером сисадмин выгонял всех пользователей, останавливал сервер, вручную копировал файлы, запускал сервер и молился. Если возникала ошибка (Human Error), диспетчеры сидели без системы до понедельника. В современной архитектуре ручной перенос файлов строго запрещен. Используется конвейер CI/CD.
CI (Continuous Integration — непрерывная интеграция): 20 программистов ежедневно пишут сотни строк кода. Практика CI — весь новый код автоматически собирается и проверяется роботом несколько раз в день. Программист заканчивает задачу и отправляет код в центральное хранилище — Git (система контроля версий). Сервер CI мгновенно замечает новые строки: сам «собирает» из них программу и запускает автотесты. Если программист ошибся и новый код ломает расчет тарифов — сервер CI загорается красным и блокирует этот код. Ошибка даже не доходит до тестировщика, не говоря уже о заказчике.
CD (Continuous Deployment — непрерывная доставка): если код успешно прошел все автоматические тесты, CD забирает его, запаковывает в Docker Image и доставляет на боевой сервер (в Kubernetes). Главная магия CD — Zero Downtime Deployment (развертывание без простоя):
- В Kubernetes работает старая версия «Биллинга» (1.0).
- Сервер CD отправляет в K8s новый контейнер «Биллинга» (2.0).
- K8s запускает 2.0 рядом со старой, не выключая старую, и проверяет, что новая версия успешно включилась.
- K8s плавно, за долю секунды, переключает поток пользователей со старого контейнера на новый.
- Старый контейнер удаляется. Система обновилась днем, прямо во время работы предприятия — и ни один диспетчер или жилец этого не заметил!
GitLab CI
Самый популярный корпоративный стандарт: единый портал, где хранится и сам код (Git), и визуально настраиваются все шаги конвейера.
Jenkins
Более старый, но невероятно мощный инструмент для сложных сценариев сборки, где нужно объединять много разных технологий.
За 9 глав мы прошли путь от устаревшего монолита до передовой Enterprise-архитектуры. Теперь вы знаете, что: бизнес-логика живет в Camunda; интеграция систем происходит через ESB и Kafka; безопасность обеспечивает API Gateway и Keycloak (SSO); каждая программа — независимый микросервис со своей базой данных; все программы упакованы в Docker-контейнеры и управляются через Kubernetes; доставка обновлений происходит автоматически через CI/CD. Эта архитектура позволит вашей небольшой компании (20 человек) брать крупные федеральные проекты в сфере ЖКХ, гарантируя заказчикам отказоустойчивость, безопасность и скорость внедрения изменений.
Инфраструктура главы тоже получает «российский паспорт» в экосистеме: Q.Kubernetes — платформа управления контейнерами с микросервисами (локализованная линейка Kubernetes — self-healing, оркестрация и масштабирование как в главе), и Q.DevOps — доставка и развертывание программных продуктов (роль конвейера GitLab/Jenkins из Рис. 9.3). В той же группе — Q.AppServer (управление серверами приложений), Q.Tasks&Teams (задачи и команды) и Q.PM (управление проектами). Сценарий выбора неизменен: open-source-стек — эталон, отечественные платформы — когда требования реестра/регулятора касаются инфраструктуры; плюс в таком случае весь стек поставляется и поддерживается одним вендором.
«Кабинет клиента» и «мобильное приложение бригад» разворачиваются контейнерами: в сезон пикового монтажа (финишные этапы десятков объектов одновременно) Kubernetes автоматически поднимает дополнительные реплики кабинета (auto-scaling), а ночью сервисная нагрузка падает — и реплики уменьшаются. Конвейер CI/CD обновляет кабинет к релизу без минуты простоя (zero downtime) — клиент не видит «техработ». А если объект госсекторный и нужен управляемый Kubernetes на российском ПО с сертификатом — слой «начальника порта» закрывает DropApp (SberTech, глава 9 курса), а не «голый» K8s с ручным администрированием.
1) «Матрица из ада» (конфликты окружений) лечится контейнерами: Образ = рецепт, Контейнер = пирог; один сервер — сотни контейнеров (в отличие от ВМ). 2) Один Docker не управляет масштабом: K8s дает self-healing (самоподнятие упавших копий), auto-scaling (до 5 копий «Биллинга» к вечернему пиковому входу жильцов) и балансировку. 3) CI/CD: код проходит автотесты, упаковывается в образ и обновляет Kubernetes без простоя (Zero Downtime). 4) Инструменты: GitLab CI / Jenkins + Docker Registry + K8s; для госсектора — отечественный DropApp (SberTech): корпоративное управление кластерами K8s с сертификатом ФСТЭК и 50+ встроенными инструментами.
Итоговая целевая архитектура и план перехода
Собираем всё в одну схему: от пользователя до Kubernetes. Пофазный план миграции без остановки текущих процессов заказчика и 4 правила, как организовать обучение команды, чтобы трансформация не рассыпалась на середине пути.
1. Итоговая схема: вся архитектура на одном листе
Перед вами — картина, которую вы теперь можете нарисовать с закрытыми глазами и объяснить любому заказчику. Пять горизонтальных «слоев»: пользователи, периметр с безопасностью, оркестрация и шина, профильные системы с брокерами, инфраструктура (Kubernetes) и наблюдаемость. Запомните эту схему — она является ответом на вопрос «куда мы вообще идем?»
2. План перехода: пять фаз без остановки бизнеса
Переход от монолита к этой архитектуре — не «большой бабанец» за одну ночь, а пофазная миграция. Каждая фаза дает самостоятельную ценность и не останавливает текущие процессы предприятия.
Начинайте не с «напишем новую систему», а с ESB + SSO + Camunda-пилот (фазы 2–3): шина объединяет зоопарк, единый вход решает боль паролей, а один живой процесс, перенесенный из хардкода в BPMN, — лучшее доказательство для топ-менеджмента и банковского бюджета. Масштабирование (K8s, CI/CD) подключается, когда количество сервисов реально требует оркестрации.
3. Как лучше организовать обучение команды
Курс получился плотным и требует фундаментальной смены инженерного мышления — поэтому его прохождение нужно строго регламентировать. Четыре правила:
Дозированная выдача
Не открывать доступ сразу ко всем главам — это вызывает информационный перегруз. Маршрутизация в портале: новый урок ставится в работу только после успешного закрытия предыдущего (как в этом курсе). Ритм: 1 урок в два дня, дедлайн — материалы и тест пройдены до 20:00 назначенного дня.
Отчетность и контроль
Сотрудник прикладывает скриншот с финальным результатом теста (зеленый текст с баллами) в комментарий к задаче перед ее закрытием. Сводная таблица успеваемости выводится в живую ленту портала — здоровая профессиональная конкуренция внутри коллектива.
Практика на ревью
Теория без практики быстро забывается. Обсуждение пройденного материала включается в плановые проверки эффективности (performance reviews). На встречах предметно обсуждаются текущие продукты компании: какой именно модуль на Java сотрудник вынес бы в отдельный микросервис в первую очередь и почему.
Командный воркшоп
По завершении курса — общая встреча всей команды. Берется реальный, самый жестко закодированный и проблемный бизнес-процесс одного из текущих ЖКХ-заказчиков. Команда совместно перепроектирует его на маркерной доске или в Miro: отрисовывает схему в BPMN для Camunda и продумывает маршрутизацию через ESB.
Для заказчика из госсектора или с требованиями импортозамещения «дирижер + шина + охрана + базы + инфраструктура» из Рис. 10.1 собирается полностью на российских продуктах — все зарегистрированы в Едином реестре российских программ:
| Роль в архитектуре | Международный вариант | Platform V (СберТех) |
|---|---|---|
| BPM-дирижер (BPMN 2.0) | Camunda 7 / Flowable | Flow — low-code BPM: 99,99%, 360+ млн запусков/мес, кейс BPMS Сбера (гл. 3) |
| Шина данных (ESB) | Apache Camel / WSO2 | Synapse App Mesh — low-code потоки, коннекторы 1С/SAP, ИИ-агенты, ФСТЭК (гл. 4) |
| API Gateway (периметр) | Kong / KrakenD | SOWA — Gateway + WAF, FLK, интеграция с АВПО/SIEM/DLP (гл. 5) |
| СУБД (транзакции) | PostgreSQL | Pangolin — enterprise-PostgreSQL, 80+ доработок, 100 000+ инсталляций, мониторинг Kintsugi (гл. 5) |
| СУБД (масштаб и аналитика) | PostgreSQL + шардирование / хранилища ETL | О.К.Е.А.Н. — распределенная HTAP: SQL, сжатие 2–5×, запросы «в прошлое», георезервирование (гл. 5) |
| Управление K8s | OpenShift / «голый» Kubernetes | DropApp — ФСТЭК, 50+ инструментов (CI/CD, мониторинг), IaC, Kube-in-Kube, SberLinux (гл. 9) |
Все продукты создаются и поддерживаются в РФ, поддержка производителя 8/5 или 24/7. Для проектов без импортозамещения открытые аналоги (Camunda, Camel/WSO2, PostgreSQL, Kubernetes) остаются легитимным и более дешевым выбором — решение подбирается по требованиям заказчика.
Если заказчик хочет остаться на привычной Camunda 7, но получить «российский паспорт» и поддержку — существует OpenBPM Engine (Хоулмонт): форк Camunda 7 CE с полной совместимостью API, включенный в реестр российского ПО (Camunda 7 CE сама с октября 2025 в архиве). Подробности — глава 3.
Второй кандидат «полной экосистемы» — Diasoft Digital Q (Санкт-Петербург): Q.BPM (процессы), Q.Integration (ESB), Q.Security (безопасность/IAM), Q.DataBase (СУБД), Q.MessageBroker (Kafka/Artemis), Q.Kubernetes и Q.ELK (контейнеры и логи), Q.DevOps (доставка), Q.Palette (low-code интерфейсы), Q.Agents (ИИ-агенты) + отраслевые CRM/СЭД/HR/ERP (главы 3–9). Выбор «весь стек от одного вендора» (Digital Q или Platform V) против «open-source точечных решений + платный движок» принимается с заказчиком по требованиям: реестр, закупки, единый контракт поддержки.
Синтез курса под нашу область (проектирование · монтаж · сервис): процесс «исполнение строительного договора» в BPM-движке (Camunda 7 / OpenBPM Engine / Platform V Flow / Q.BPM — на выбор по лицензиям и требованиям заказчика) — «дирижер»; 1С, КД, портал и мобильные приложения бригад связаны шиной (Synapse или Camel/WSO2); микросервисы «Договоры», «Проектирование», «Закупки», «Монтаж», «Сервис» — каждый со своей базой (Pangolin / О.К.Е.А.Н. при импортозамещении); на периметре — API Gateway (SOWA для госсектора); вся активность видна в наблюдаемости (Correlation ID по заявкам и этапам договора); приложения доставляются CI/CD на K8s (DropApp при требованиях регулятора). Первый шаг уже сделан — процесс договора описан в BPMN (Рис. 2.5); дальше по плану перехода (Рис. 10.2): выбрать движок → подключить 1С через External Task → вывести этап «согласование проекта» в портал.
Вы прошли полный путь: от «бетонного куба» монолита — через BPM и BPMN, рынок движков (включая отечественную Platform V: Flow — BPM, Synapse — шина, SOWA — API-защита, Pangolin/О.К.Е.А.Н. — СУБД, DropApp — K8s), шину данных, API и безопасность, микросервисы и брокеры, наблюдаемость — до контейнеров, Kubernetes и CI/CD. Итоговая схема (Рис. 10.1), план перехода (Рис. 10.2) и шпаргалка по отечественной линейке выше — это ваш рабочий инструмент для проектов с заказчиками. Финальный тест проверит, насколько глубоко материал усвоен по всем главам сразу.