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