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

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

💡 指揮者が全奏者に「次はあなたの番」と指示するオーケストラ型アーキテクチャ
📌 このページのポイント
オーケストレーションパターン(中央指揮者) オーケストレーター 処理フロー全体を管理 在庫サービス Inventory 決済サービス Payment 通知サービス Notification ①指示 ②応答 特徴 全体フローが1か所に集約・把握しやすい 注意点 オーケストレーターが単一障害点になりうる
オーケストレーション:中央の指揮者が各サービスに順番に指示を出してフローを制御する
ひよこ ひよこ

オーケストレーションパターンって、普通のマイクロサービスと何が違うの?

ペンギン先生 ペンギン先生

マイクロサービスはサービスの分割方針で、オーケストレーションパターンはそのサービス同士をどう連携させるかという設計パターンなんだよ。連携の「やり方」の話だね。

ひよこ ひよこ

中央の指揮者ってどんなもの?

ペンギン先生 ペンギン先生

例えば「注文処理フロー」というオーケストレーターが、まず在庫サービスに「在庫確保して」と呼び出し、OKが返ったら決済サービスに「課金して」と呼び出す、という感じだよ。全部の流れをオーケストレーターが知っているんだ。

ひよこ ひよこ

それって便利そうだけど、問題はないの?

ペンギン先生 ペンギン先生

大きなデメリットはオーケストレーター自身が壊れると全体が止まる「単一障害点」になることだよ。またサービスが増えるたびにオーケストレーターの変更が必要になって、だんだん複雑になりやすいんだね。

ひよこ ひよこ

コレオグラフィとどっちを選べばいいの?

ペンギン先生 ペンギン先生

フローの全体像を把握しやすくしたい、監視や変更をしやすくしたいならオーケストレーション、サービスを疎結合に保ちたい・スケールしやすくしたいならコレオグラフィが向いているよ。どちらが絶対に正解ということはなくてシステムの要件次第なんだね。

ひよこ ひよこ

SAGAパターンでも使われるって聞いたけど?

ペンギン先生 ペンギン先生

そうなんだよ。SAGAパターンはマイクロサービスをまたぐ長いトランザクションを実現する方法なんだけど、「オーケストレーション型SAGA」と「コレオグラフィ型SAGA」の2種類があるんだ。AWS Step Functionsオーケストレーション型SAGAの代表例だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「オーケストレーションパターン」って出てきたら「中央の指揮者が各サービスを順番に呼び出す連携パターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Orchestration Pattern」 = 指揮・調整パターン
💬 オーケストラの「指揮者(Conductor)」がすべての楽器奏者に指示を出すように、中央のコンポーネントが各サービスを調整するイメージだよ
← 用語集にもどる