【コレオグラフィ】
コレオグラフィ とは?
💡 指揮者なしで踊るダンサーたち——各自がビートに合わせて動くアーキテクチャ
📌 このページのポイント
- 各サービスがイベントをパブリッシュし、他サービスがそれをサブスクライブして連鎖的に動く
- 中央集権の制御がないためオーケストレーターが単一障害点になるリスクを避けられる
- サービスを追加するだけで処理フローを拡張しやすく疎結合を維持できる
- 全体のフローが分散しているため追跡・デバッグが難しくなりやすい
コレオグラフィって踊りのこと?ITでも使うんだね。
そうなんだよ。マイクロサービスの連携方法の一つで、各サービスがイベントに反応して自律的に動く仕組みをダンスの振り付けに例えているんだ。
指揮者なしってどういうこと?誰も全体を管理しないの?
うん、例えば「注文が入った」イベントが発行されると、在庫サービスが反応して在庫を減らし、次に「在庫確保済み」イベントを出して決済サービスが動く、という連鎖になるんだよ。誰かが「次は決済して」と命令するんじゃなくてイベントで繋がっていくんだね。
それってオーケストレーションパターンと何が違うの?
オーケストレーションは中央の指揮者(オーケストレーター)が「在庫サービスよ、確保して」「決済サービスよ、処理して」と順番に指示を出すパターンだよ。コレオグラフィはその指揮者がいないんだね。
指揮者がいないほうが良さそうだけど、デメリットはないの?
デメリットもあるよ。全体のフローがコードの中に散らばるから「今どこまで処理が進んでいるか」が追いにくくなるんだ。障害調査やデバッグが複雑になりやすいのが欠点だね。
どんな場面でコレオグラフィを選ぶといいの?
サービスの追加・変更が多い場合や、一つのサービスがボトルネックになるのを避けたい場合に向いているよ。SAGAパターンと組み合わせて使うことも多いんだね。
まとめ:ざっくりこれだけ覚えればOK!
「コレオグラフィ」って出てきたら「指揮者なしでイベントで連携するマイクロサービスパターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Choreography」 = 振り付け・コレオグラフィ
💬 ダンスの「振り付け(Choreography)」が語源で、指揮者が指示するのではなく各ダンサーが決められた振り付けに従って自律的に動くイメージだよ