03.12.24

Видеокурс Camunda 8: Введение

Мстислав Мартынюк
Автор:Мстислав Мартынюк
10 мин · Обучающие

Друзья, всем привет!


На связи Мстислав, компания Реюнико. И у меня для вас отличные новости! Мы выпускаем бесплатный видеокурс для команд разработки, желающих освоить Camunda 8.




В рамках этого видеокурса мы расскажем:


  • Как можно использовать Camunda 8 в качестве песочницы, среды для моделирования и отладки исполняемых процессов?

  • Какой инструментарий для этого понадобится?

  • Как смоделировать и исполнить в Camunda 8 простой процесс?

  • Как обеспечить работу участников процесса – людей?

  • Как реализовать сервисные задачи?

  • Как моделировать сложные процессы и оркестрировать микросервисы?

  • Каким принципам стоит следовать при проектировании решений на Camunda, а чего стоит избегать?


Но для начала, в качестве вступления, я хотел бы рассказать, когда нужна "комунда" и как ее применять.


Иногда мне, как архитектору решений, приходится сталкиваться с непониманием как заказчиков, так и ИТ-специалистов – а зачем нам нужна BPM-система или оркестратор сервисов и как мы будем её использовать?


Это непонимание варьируется от скепсиса (или откровенного хейта) от вчерашних выпускников технических вузов в духе "горе программеры выдумывают сложности, проще все реализовать  в коде", до бизнесменов, представляющих себе Camunda как "волшебную палочку", некий магический low-code BPM-инструмент, позволяющий без разработки автоматизировать любой производственный процесс.


Haters gonna hate


Для того, чтобы правильно ответить на вопрос, нужна ли вам BPM-система в целом (и Camunda в частности), необходимо для начала рассмотреть сценарии, когда она не нужна.


Когда нужна и не нужна Camunda?


Типовые задачи


Мы все знаем поговорку: "Для каждой задачи нужен свой инструмент". И примерно для 80% бизнес-процессов существуют коробочные (out-of-the-box) решения, обеспечивающие их выполнение с меньшими (нежели Camunda) затратами времени и денег. Так, например, для работы бухгалтерии нужна система бухгалтерского учета, для управления материалами веб-сайта – CMS-система, а для взаимодействия с клиентами – CRM. 


Сложность процесса


Применение BPM-системы избыточно, если процесс имеет простую, линейную структуру. Как упрощенно выглядит регистрация нового клиента малого предприятия? Необходимо получить данные клиента из какого-то источника (формы обратной связи на сайте, анкеты клиента, партнерской системы) и ввести их в CRM-систему. Потенциальные ошибки, которые могут возникнуть в таком процессе, скорее всего будут связаны с недоступностью систем и легко могут быть обработаны при помощи retry-механизмов или путем применения асинхронных вызовов.


Простой процесс и сложный процесс

Но представим, что нам необходимо ввести данные клиента в банке. Используя ограниченный набор входных значений (паспортные данные, ИНН, идентификатор клиента), нам необходимо получить из разных систем огромный массив данных. При этом, набор источников для получения этих данных будет различаться в зависимости от типа клиента. После получения данные должны быть провалидированы и переданы в системы оценки риска. После оценки риска – переданы в систему принятия решений или сотруднику, принимающему решение о начале сотрудничества. В случае принятия положительного решения – в дюжине различных систем должны быть созданы соответствующие записи.


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


Можно ли реализовать такой функционал самостоятельно, без применения системы-оркестратора? Большой вопрос. Наврное да, если у вас есть миллионы долларов и компетентная команда разработки.


Техстек и ИТ-ландшафт


В больших организациях различные бизнес-задачи и функции могут быть автоматизированы с использованием различных технологий. Так, например, подразделение, ответственное за анализ и обработку данных, может использовать Python. Финансовые сервисы могут использовать Java / Spring Boot. А приложения конечного пользователя – разработаны на Node.JS или Go.


Процессы могут включать в себя обращения к системам Enterprise-уровня (Core Banking, CRM, Service Desk), вызов программных интерфейсов (API), обмен данными через брокеры сообщений, выполнение пользовательских задач (выполняемых людьми или программными роботами) и многое другое.


Как управлять таким оркестром? Конечно же, при помощи дирижера, способного обеспечить профессиональное исполнение даже самой сложной мелодии!


Высоконагруженные системы


Высокая нагрузка – это не только про число запросов в секунду, но также и другие важные атрибуты качества:


  • Надежность и отказоустойчивость;

  • Возможность масштабирования;

  • Высокая доступность;

  • Производительность.


Так, например, система может обрабатывать относительно небольшое число экземпляров процессов (до 100 в минуту), но при этом, каждый процесс в ходе выполнения может вызывать до нескольких десятков различных сервисов, приводя к значительной нагрузке на ИТ-ландшафт.


Или, например, ненагруженная запросами система может представлять собой mission-critical приложение и даже незначительный простой может повлечь за собой многомиллионные убытки.


В отличие от предыдущей версии, Camunda 8, благодаря уникальной архитектуре, практически не имеет ограничений по масштабируемости, показывая отличную производительность в высоконагруженных решениях.


Архитектура Camunda 8


Ценой высокой отказоустойчивости Camunda 8 стало усложнение архитектуры. 


Runtime


«‎Сердцем» системы является кластер Zeebe, состоящий из набора реплицирующихся между собой брокеров (Brokers). Каждый брокер хранит описания процессов и исполняющиеся экземпляры в распределенной СУБД RocksDB, представляющей собой хранилище типа ключ-значение (LST-tree). Взаимодействие с внешним миром осуществляется через шлюзы (Gateways) которые могут быть как встроены в брокер, так и работать в виде независимых узлов.


При первом подключении брокер получает информацию о топологии сети и начинает обмен с другими узлами. Данные рантайма шардированы – разделены на заданное настройками число партиций (Partitions). Для каждой из партиций существует 1 лидер (Leader) и N последователей (Followers), которые получают данные от лидера и помещают их в локальные реплики партиции. ​​Каждый брокер кластера является лидером одной партиции и последователем для других. Если по каким-то причинам лидер становится недоступен, происходят выборы и новым лидером становится один из последователей (протокол Raft).


Запуск процессов, получение и завершение задач, отправка сообщений выполняются клиентом (Zeebe Client), компонентом воркера (Job Workers). Воркер и клиент могут быть реализованы с использованием любого языка программирования или фреймворка: Spring Boot, .NET, Go, PHP. Есть даже клиент, написанный на Delphi! Взаимодействие клиента-воркера с кластером Zeebe происходит по протоколу gRPC.


История процессов


История процессов, задач и переменных хранится в индексах Elasticsearch.


Именно с индексом Elasticsearch работают веб-приложения Camunda 8: Tasklist, Operate и Elasticsearch. В нем же они хранят свою служебную информацию.


  • Operate – интерфейс оператора, позволяющий в моменте получить текущее состояние бизнес-процессов, внести изменения и обработать возникающие инциденты;

  • Tasklist – исполнение пользовательских задач;

  • Optimize – приложение для анализа бизнес-процессов, теперь входит в стандартную поставку.


Design-time


Для моделирования процессов можно использовать либо классический Desktop Modeler, либо Web Modeler, предоставляемый как в SaaS-, как и в Self Managed-версии Camunda.


Заключение


Итак, если мое вступление вас не испугало – предлагаю переходить к практике!


Спасибо за внимание и – успехов в освоении Camunda 8!