Оркестрация и хореография в микросервисной архитектуре
В микросервисной архитектуре для организации взаимодействия микросервисов между собой используют два подхода: оркестрацию и хореографию.
Оркестрация – это подход, при котором есть центральный сервис (оркестратор), который координирует и управляет всеми остальными сервисами. Оркестратор знает всю логику бизнес-процесса и вызывает нужные сервисы в нужном порядке, передавая им необходимые данные и получая от них ответы. Оркестратор может использовать разные способы коммуникации с сервисами, например, REST, RPC, очереди сообщений и т.д. Пример "коробочного" решения для оркестрации: Camunda
✅ Плюсы оркестрации
💩 Можно быстрее понять и прозрачнее отследить логику бизнес-процесса, так как она сосредоточена в одном месте, а не размыта по всем сервисам сразу
💩 Легче вносить изменения в бизнес-процесс, так как достаточно изменить только оркестратор
💩 Легче обрабатывать ошибки и альтернативные сценарии, так как оркестратор контролирует выполнение всех шагов
⛔️ Минусы оркестрации
💩 Высокая связанность между сервисами, так как оркестратор зависит от интерфейсов и доступности всех сервисов, а сервисы зависят от того, что оркестратор передает им в качестве входных данных
💩 Оркестратор становится узким местом и единой точкой отказа
💩 Добавление новых сервисов или изменение порядка вызовов требует изменения оркестратора
Хореография – это подход, при котором нет центрального сервиса, который управляет всеми остальными. Вместо этого каждый сервис самостоятельно решает, что и когда делать, на основе событий, которые он получает от других сервисов. Сервисы публикуют события в общий канал (например, топик в Kafka) и подписываются на события, которые их интересуют. Таким образом, формируется цепочка реакций на события, которая реализует бизнес-процесс.
✅ Плюсы хореографии
💩 Низкая связанность между сервисами, так как сервисы не знают друг о друге и общаются только через события, а не через прямые вызовы
💩 Высокая масштабируемость и отказоустойчивость, так как нет единой точки отказа и каждый сервис может работать независимо от других
💩 Гибкость, так как можно легко добавлять новые сервисы или изменять поведение существующих, не затрагивая другие.
⛔️ Минусы хореографии
💩 Сложнее отследить логику бизнес-процесса, так как она размазана по разным сервисам и зависит от порядка и содержания событий
💩 При внесении изменений в какой-либо сервис нужно учитывать неявное влияние на все подписанные сервисы и избегать конфликтов или несогласованностей в данных. К тому же, могут потребоваться изменения сразу в нескольких сервисах.
💩 Сложно обрабатывать ошибки и исключения, так как нет централизованного механизма компенсации или отката
Что лучше?
🔹 Оркестрация подходит для сценариев, когда бизнес-процесс имеет четко определенную последовательность шагов, требует строгого контроля и согласованности, и не подвержен частым изменениям.
🔸 Хореография подходит для сценариев, когда бизнес-процесс имеет слабо связанные шаги, требует высокой производительности и масштабируемости, и подвержен динамическим изменениям.
📎 Статьи
1. Оркестрация и хореография микросервисов в EDA-архитектуре — немного теории + небольшая практика
2. Мониторинг и управление потоком задач в рамках взаимодействия микросервисов — здесь рассматривается оркестрация и хореография на практике
3. Сравнение подходов к реализации распределенных транзакций для микросервисов + более краткая версия статьи
3. Camunda: автоматизация бизнес-процессов и оркестрация микросервисов
4. Orchestration vs Choreography
5. Аналитика микросервисов. Практический опыт аналитика в enterprise
6. Паттерн Saga в микросервисной архитектуре
7. Сага о консистентности данных
8. Сага распределенных транзакций
⏯ Видео
1. Оркестрация и хореография. Как построить бизнес-процесс в зоопарке микросервисов — воркшоп Андрея Буракова на конференции Analyst Days-14 + ответы на вопросы по результатам воркшопа
2. Применение camunda для оркестрации микросервисов
3. Обзор паттернов интеграции микросервисов
#архитектура
В микросервисной архитектуре для организации взаимодействия микросервисов между собой используют два подхода: оркестрацию и хореографию.
Оркестрация – это подход, при котором есть центральный сервис (оркестратор), который координирует и управляет всеми остальными сервисами. Оркестратор знает всю логику бизнес-процесса и вызывает нужные сервисы в нужном порядке, передавая им необходимые данные и получая от них ответы. Оркестратор может использовать разные способы коммуникации с сервисами, например, REST, RPC, очереди сообщений и т.д. Пример "коробочного" решения для оркестрации: Camunda
✅ Плюсы оркестрации
⛔️ Минусы оркестрации
Хореография – это подход, при котором нет центрального сервиса, который управляет всеми остальными. Вместо этого каждый сервис самостоятельно решает, что и когда делать, на основе событий, которые он получает от других сервисов. Сервисы публикуют события в общий канал (например, топик в Kafka) и подписываются на события, которые их интересуют. Таким образом, формируется цепочка реакций на события, которая реализует бизнес-процесс.
✅ Плюсы хореографии
⛔️ Минусы хореографии
Что лучше?
🔹 Оркестрация подходит для сценариев, когда бизнес-процесс имеет четко определенную последовательность шагов, требует строгого контроля и согласованности, и не подвержен частым изменениям.
🔸 Хореография подходит для сценариев, когда бизнес-процесс имеет слабо связанные шаги, требует высокой производительности и масштабируемости, и подвержен динамическим изменениям.
📎 Статьи
1. Оркестрация и хореография микросервисов в EDA-архитектуре — немного теории + небольшая практика
2. Мониторинг и управление потоком задач в рамках взаимодействия микросервисов — здесь рассматривается оркестрация и хореография на практике
3. Сравнение подходов к реализации распределенных транзакций для микросервисов + более краткая версия статьи
3. Camunda: автоматизация бизнес-процессов и оркестрация микросервисов
4. Orchestration vs Choreography
5. Аналитика микросервисов. Практический опыт аналитика в enterprise
6. Паттерн Saga в микросервисной архитектуре
7. Сага о консистентности данных
8. Сага распределенных транзакций
1. Оркестрация и хореография. Как построить бизнес-процесс в зоопарке микросервисов — воркшоп Андрея Буракова на конференции Analyst Days-14 + ответы на вопросы по результатам воркшопа
2. Применение camunda для оркестрации микросервисов
3. Обзор паттернов интеграции микросервисов
#архитектура