0Pricing
Cloud & IT Cert Prep · Урок

Шаблоны хореографии и оркестрации

Сравните хореографию событий (каждый сервис реагирует независимо) с оркестрацией (центральный координатор управляет сервисами) и выберите подходящий шаблон для своей архитектуры.

«Шаблоны хореографии и оркестрации» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Два подхода к координации микросервисов

Когда микросервисам необходимо совместно выполнить бизнес-процесс, существуют два основных шаблона координации. Orchestration использует центральный координатор (например, Step Functions), который явно отдаёт команды каждому сервису. При Choreography центрального координатора нет: сервисы прослушивают события и реагируют на них независимо. Понимание того, какой подход и когда использовать, а также когда их комбинировать, — важный архитектурный навык, проверяемый на экзамене SAA-C03.

Объяснение шаблона оркестрации

При orchestration центральный сервис (orchestrator) управляет последовательностью операций. Он вызывает сервис A, ждёт ответа, затем вызывает сервис B и так далее. Orchestrator полностью видит состояние процесса, обрабатывает ошибки и повторные попытки и может принимать решения на основе промежуточных результатов. В AWS каноническим orchestrator является Step Functions: он определяет весь рабочий процесс как конечный автомат и управляет каждым этапом.

# Orchestration: Step Functions state machine drives order processing
# StepFunctions -> ValidateOrder Lambda -> ChargePayment Lambda -> NotifyShipping Lambda
# Each arrow is an explicit command from the orchestrator
# If ChargePayment fails, Step Functions catches the error and routes to NotifyFailure
# The orchestrator (Step Functions) knows the full state of the order at every moment

Объяснение шаблона хореографии

При choreography сервисы взаимодействуют через события без центрального координатора. Сервис A завершает свою задачу и публикует событие (например, OrderValidated) в шину событий или топик. Сервис B прослушивает события OrderValidated и обрабатывает платёж, после чего публикует PaymentCharged. Сервис C прослушивает PaymentCharged и отправляет заказ. Каждый сервис автономен и слабо связан с другими: он знает только о событиях, которые потребляет и создаёт, но не о других сервисах.

# Choreography: EventBridge bus connects services without central coordinator
# OrderService -> publishes 'OrderPlaced' to EventBridge
# PaymentService -> listens for 'OrderPlaced', charges card, publishes 'PaymentCharged'
# ShippingService -> listens for 'PaymentCharged', creates shipment, publishes 'OrderShipped'
# NotificationService -> listens for 'OrderShipped', sends email
# No service calls another service directly — all communication is via events

Сервисы AWS для каждого шаблона

В AWS основным инструментом orchestration является Step Functions. Для choreography основными инструментами служат Amazon EventBridge (для маршрутизации событий между сервисами с фильтрацией по содержимому), Amazon SNS (для простой рассылки) и Amazon SQS (для обмена сообщениями между сервисами по схеме «точка-точка»). Можно сочетать эти шаблоны: использовать EventBridge для хореографии между ограниченными контекстами разных предметных областей, а Step Functions — для оркестрации этапов внутри одной области.

Компромиссы: наблюдаемость

Orchestration обеспечивает централизованную видимость: история выполнения Step Functions точно показывает, на каком этапе находится рабочий процесс, сколько длился каждый этап и что завершилось ошибкой. Отладка проста. При Choreography видимость распределена между несколькими сервисами и шинами событий: для отслеживания одной бизнес-транзакции необходимо сопоставлять журналы и события множества сервисов. Поэтому системы хореографии активно используют идентификаторы корреляции и распределённую трассировку (AWS X-Ray) для сквозной видимости.

# Correlation ID pattern for choreography observability
# Every event includes a correlationId that flows through the entire chain
{
  'source': 'com.myapp.orders',
  'detail-type': 'OrderPlaced',
  'detail': {
    'orderId': 'ORD-123',
    'correlationId': 'CORR-abc-456',  # propagated to every downstream event
    'customerId': 'CUST-789',
    'total': 99.99
  }
}

Компромиссы: связанность

Choreography обеспечивает более слабую связанность: добавление нового сервиса, прослушивающего существующие события, не требует изменений в существующих сервисах. Например, добавление сервиса аналитики, прослушивающего события OrderPlaced, никак не влияет на сервис заказов или платежей. Orchestration создаёт более тесную связанность между orchestrator и всеми вызываемыми им сервисами: добавление нового этапа требует изменения определения конечного автомата, хотя отдельные сервисы остаются изолированными.

Компромиссы: обработка ошибок

Orchestration делает обработку ошибок явной: блоки Catch в Step Functions определяют резервные состояния для каждого типа ошибок, а полная история рабочего процесса показывает контекст сбоя. При Choreography обработка ошибок распределена: каждый сервис должен обрабатывать собственные сбои и при необходимости публиковать событие сбоя, на которое могут реагировать другие сервисы. Реализовать саги (компенсирующие транзакции для отмены выполненной работы при сбое этапа) при choreography значительно сложнее, чем при orchestration.

# Saga pattern in choreography: compensating events
# Happy path:
# OrderPlaced -> PaymentCharged -> InventoryReserved -> OrderShipped
#
# Failure path (InventoryReservation fails):
# InventoryReservationFailed event published
# PaymentService listens -> issues refund -> publishes PaymentRefunded
# OrderService listens -> cancels order -> publishes OrderCancelled
#
# In orchestration (Step Functions), the compensating logic is in explicit Catch states

Когда выбирать оркестрацию

Выбирайте orchestration, когда: бизнес-процесс имеет чёткую линейную или разветвлённую последовательность с явно определёнными результатами успеха и сбоя; Вам нужна централизованная видимость состояния процесса для эксплуатации или соответствия требованиям; обработка ошибок включает сложную логику компенсации; либо рабочий процесс длительный и должен переживать перезапуски сервисов. Примеры: выполнение заказов, подключение пациентов, обработка страховых требований — все эти процессы имеют чёткие начало и конец, а также требования к аудиту.

Когда выбирать хореографию

Выбирайте choreography, когда: сервисами владеют разные команды, которые не должны быть тесно скоординированы; система должна позволять добавлять новые сервисы без изменения существующих; события представляют факты, а не команды (например, «OrderShipped», а не «ShipOrder»); либо Вам нужна максимальная масштабируемость, поскольку центральное узкое место отсутствует. Примеры: приём данных для аналитики, рассылка уведомлений, ведение журнала аудита — все случаи, когда несколько независимых потребителей реагируют на одно и то же событие.

Hybrid Architectures

В большинстве реальных архитектур AWS используются оба паттерна на разных уровнях детализации. Распространённый гибридный подход: использовать хореографию EventBridge для разделения ограниченных контекстов (например, домен Order генерирует события, а домены Inventory, Payment и Shipping независимо реагируют на них), а внутри домена Payment применять оркестрацию Step Functions для координации этапов внутреннего рабочего процесса оплаты (списание средств, проверка на мошенничество, авторизация, проведение платежа). Это обеспечивает слабую связанность между доменами и при этом сохраняет ясность внутренних процессов.

# Hybrid: EventBridge for inter-domain + Step Functions for intra-domain
#
# EventBridge bus (choreography):
#   Order domain publishes 'OrderPlaced'
#   Payment domain receives it, starts Step Functions execution
#
# Step Functions (orchestration inside Payment domain):
#   ValidateCard -> FraudCheck -> AuthorisePayment -> SettlePayment
#   On success: PaymentDomain publishes 'PaymentCharged' to EventBridge bus
#   On failure: Step Functions Catch -> publishes 'PaymentFailed' event

Сигналы на экзамене SAA-C03

На экзамене обращайте внимание на следующие сигналы. Ключевые слова для хореографии: «слабая связанность», «сервисы реагируют на события», «команды владеют независимыми сервисами», «распределение событий между несколькими потребителями», «добавление нового сервиса без изменения существующих». Ключевые слова для оркестрации: «координация последовательных шагов», «отслеживание состояния рабочего процесса», «обработка частичных сбоев с компенсацией», «этап с одобрением человеком», «длительный процесс с обработкой ошибок». Вопрос, в котором центральный координатор управляет другими сервисами, всегда описывает оркестрацию.

Быстрая проверка

Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.

Повторение урока

В этом уроке Вы узнали, что оркестрация использует центральный координатор (Step Functions) для явного и наблюдаемого управления рабочим процессом, хореография использует события (EventBridge) для слабой связанности и расширяемости, а в большинстве промышленных архитектур оба паттерна сочетаются на разных уровнях детализации. Далее мы рассмотрим формат экзамена SAA-C03 и стратегию распределения усилий с учётом веса доменов.

Часто задаваемые вопросы

Урок «Шаблоны хореографии и оркестрации» бесплатный?

Да — полный текст урока «Шаблоны хореографии и оркестрации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чему я научусь в уроке «Шаблоны хореографии и оркестрации»?

Сравните хореографию событий (каждый сервис реагирует независимо) с оркестрацией (центральный координатор управляет сервисами) и выберите подходящий шаблон для своей архитектуры. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?

Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Шаблоны хореографии и оркестрации»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?

Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. EventBridge: шина событий и правила
  2. Step Functions: оркестрация бессерверных рабочих процессов
  3. Kinesis Data Streams для обработки событий в реальном времени
  4. Шаблоны хореографии и оркестрации
← Назад к Cloud & IT Cert Prep