【オーケストレーションパターン】
オーケストレーションパターン とは?
💡 指揮者が全奏者に「次はあなたの番」と指示するオーケストラ型アーキテクチャ
📌 このページのポイント
オーケストレーションパターンって、普通のマイクロサービスと何が違うの?
マイクロサービスはサービスの分割方針で、オーケストレーションパターンはそのサービス同士をどう連携させるかという設計パターンなんだよ。連携の「やり方」の話だね。
中央の指揮者ってどんなもの?
例えば「注文処理フロー」というオーケストレーターが、まず在庫サービスに「在庫確保して」と呼び出し、OKが返ったら決済サービスに「課金して」と呼び出す、という感じだよ。全部の流れをオーケストレーターが知っているんだ。
それって便利そうだけど、問題はないの?
大きなデメリットはオーケストレーター自身が壊れると全体が止まる「単一障害点」になることだよ。またサービスが増えるたびにオーケストレーターの変更が必要になって、だんだん複雑になりやすいんだね。
コレオグラフィとどっちを選べばいいの?
フローの全体像を把握しやすくしたい、監視や変更をしやすくしたいならオーケストレーション、サービスを疎結合に保ちたい・スケールしやすくしたいならコレオグラフィが向いているよ。どちらが絶対に正解ということはなくてシステムの要件次第なんだね。
SAGAパターンでも使われるって聞いたけど?
そうなんだよ。SAGAパターンはマイクロサービスをまたぐ長いトランザクションを実現する方法なんだけど、「オーケストレーション型SAGA」と「コレオグラフィ型SAGA」の2種類があるんだ。AWS Step Functionsはオーケストレーション型SAGAの代表例だよ。
まとめ:ざっくりこれだけ覚えればOK!
「オーケストレーションパターン」って出てきたら「中央の指揮者が各サービスを順番に呼び出す連携パターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Orchestration Pattern」 = 指揮・調整パターン
💬 オーケストラの「指揮者(Conductor)」がすべての楽器奏者に指示を出すように、中央のコンポーネントが各サービスを調整するイメージだよ