В чем отличие оркестрации от хореографии в микросервисах
Что проверяют
Понимаете ли вы, где живёт логика бизнес-процесса, который проходит через несколько сервисов, и чем за это платите. Аналитику это нужно, чтобы описать процесс, который реально можно реализовать. Следом обычно просят разобрать оформление заказа и спрашивают, как откатить процесс при сбое на середине.
Как отвечать
- оркестрация: есть координатор, который знает весь процесс и по шагам вызывает сервисы: зарезервировать товар, списать деньги, создать доставку. Состояние процесса хранится в одном месте. Инструменты: Camunda, Temporal или свой сервис;
- хореография: центра нет. Сервис публикует событие «Заказ создан» в брокер (Kafka, RabbitMQ), остальные подписаны на него, реагируют и публикуют свои события.
Сравнение по делу:
- связанность: при хореографии сервисы знают только события, новых участников добавлять проще. При оркестрации координатор знает всех, зато процесс виден целиком;
- прозрачность: оркестрацию легко описать в BPMN и увидеть, на каком шаге завис заказ. В хореографии для этого нужны трассировка (OpenTelemetry) и корреляционный идентификатор в каждом событии;
- ошибки и откат: оба подхода реализуют сагу, то есть цепочку локальных транзакций с компенсирующими действиями. В оркестрации компенсации запускает координатор, в хореографии каждый сервис сам слушает события об отказе;
- изменения: поменять порядок шагов в оркестрации значит поправить одно место, в хореографии придётся менять несколько сервисов и контракты событий.
Практическое правило: простые реакции вроде уведомления удобно делать хореографией, длинный процесс с деньгами, таймаутами и компенсациями лучше оркестрировать. В живых системах подходы обычно смешивают.
Где спотыкаются
Приводят Airflow как пример оркестрации микросервисов. Это оркестратор пакетных пайплайнов данных, для бизнес-процессов между сервисами берут Camunda или Temporal.
Говорят, что хореография всегда быстрее и гибче. Цена в том, что процесс никто не видит целиком, а циклические цепочки событий обнаруживаются уже в проде.
Путают с оркестрацией контейнеров в Kubernetes, а это совсем другое значение слова.