【オーケストレーションパターン】

オーケストレーションパターン とは?

最終更新:
💡 中央の指揮者が、各サービスの連携を調整する

中央のオーケストレーターが各マイクロサービスに指示を出して処理フローを制御するアーキテクチャパターン。全体の流れが一か所に集約されるため把握しやすいが、オーケストレーター自身が単一障害点になりうる。

📌 このページのポイント
中央の調整役が連携を制御 注文処理の調整役 次の処理を決める ① 在庫 確保する ② 決済 支払う ③ 通知 知らせる 指示 結果 注文の成功例
この例では在庫確保、決済、通知の順に進める。青は指示、灰は結果の返却で、調整役が次を決める。独立した処理を並列に進める設計もある。
ひよこ ひよこ
オーケストレーションパターンって、普通のマイクロサービスと何が違うの?
ペンギン先生 ペンギン先生
マイクロサービスはサービスの分割方針で、オーケストレーションパターンはそのサービス同士をどう連携させるかという設計パターンなんだよ。連携の「やり方」の話だね。
ひよこ ひよこ
中央の指揮者ってどんなもの?
ペンギン先生 ペンギン先生
たとえば注文処理の調整役が、在庫確保を依頼し、成功したら決済、最後に通知を依頼する例があるよ。全体の順序や次の処理を調整役が決めるんだ。すべてが直列とは限らず、独立した処理を並列に進めるフローも作れるよ。
ひよこ ひよこ
それって便利そうだけど、問題はないの?
ペンギン先生 ペンギン先生
流れを追いやすい反面、調整役の処理が複雑になったり、障害で連携が止まったりするリスクがあるよ。中央というのは制御の役割の話で、物理的に1台だけとは限らない。AWS Step Functionsのように状態を管理し、複数の拠点で耐障害性を備える実装もあるんだ。
ひよこ ひよこ
コレオグラフィとどっちを選べばいいの?
ペンギン先生 ペンギン先生
コレオグラフィは、各サービスがイベントを受けて動く方式だよ。中央で流れや失敗時の処理を管理したいか、各サービスへ連携の判断を分散したいかを考えよう。どちらも依存関係や監視、障害時の動きを設計する必要があって、方式名だけで拡張性が決まるわけではないんだ。
ひよこ ひよこ
SAGAパターンでも使われるって聞いたけど?
ペンギン先生 ペンギン先生
SAGAには、調整役が各サービスの処理や補償処理を指示するオーケストレーション型もあるよ。決済が失敗したら確保済みの在庫を戻す、という補償をあらかじめ設計するんだ。全体が一つのACIDトランザクションになるわけではないし、Step Functionsを使うだけで補償が自動的に用意されるわけでもない。再試行で二重処理にならない工夫も必要だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「オーケストレーションパターン」って出てきたら「中央の調整役が各サービスを連携させる設計パターン」と思えばだいたいOK!
📖 おまけ:英語の意味
「Orchestration Pattern」 = 指揮・調整パターン
💬 オーケストラの「指揮者(Conductor)」がすべての楽器奏者に指示を出すように、中央のコンポーネントが各サービスを調整するイメージだよ

参考資料

← 用語集にもどる