【あんばさだーぱたーん】

Ambassadorパターン とは?

最終更新:
💡 アプリのそばに置く、外部通信の代理役

アプリケーションの近くに別プロセスのプロキシを置き、外部への通信を代行させる設計パターン。通信の記録、ルーティング、再試行などの共通処理をアプリ本体から分離する。

📌 このページのポイント
Ambassador:外部通信の代理役 同じホスト環境 アプリ Ambassador 外部API 要求 → 要求 → ← 応答 ← 応答 通信の記録・TLS・再試行などを分離 サイドカーは配置方法の一例 遅延や、再試行の安全性も検討する
矢印は要求と応答の向きで、通信は代理役を経由する。コンテナのサイドカーだけでなく、同じホストの別プロセスでも実装できる。すべての通信機能が自動的に備わる図ではない。
ひよこ ひよこ
Ambassadorって、大使という意味だよね?
ペンギン先生 ペンギン先生
アプリの代わりに外部サービスへ通信する代理役を、大使になぞらえているよ。アプリの近く、同じホスト環境に別プロセスのプロキシを置き、通信の共通処理を委ねる設計なんだ。
ひよこ ひよこ
どんな処理を任せられるの?
ペンギン先生 ペンギン先生
リクエストの記録、接続先へのルーティング、TLSによる通信保護、再試行などが例だよ。アプリ本体とは別に更新・管理でき、複数の言語のアプリで共通の処理を使いやすくする。任せる機能は構成によって決めるんだ。
ひよこ ひよこ
必ずコンテナを2つ動かすの?
ペンギン先生 ペンギン先生
コンテナ環境では、アプリの横にサイドカーコンテナを置く形が使えるよ。でもそれだけではない。同じホスト上のデーモンやWindowsサービスなどで実装することもできる。Ambassadorは通信を代行する役割、サイドカーは配置やライフサイクルの考え方として分けると分かりやすいね。
ひよこ ひよこ
サービスメッシュも同じもの?
ペンギン先生 ペンギン先生
サービス間通信を扱う点は関連するけれど、サービスメッシュは複数のプロキシの設定や制御も含む仕組みだよ。Istioには各アプリのサイドカーを使う方式に加え、ノード単位のプロキシなどを使うambient方式もある。「全サービスへ必ずサイドカーを自動注入するもの」とは限らないんだ。
ひよこ ひよこ
置けば通信の問題を全部解決できる?
ペンギン先生 ペンギン先生
プロキシを通る分の遅延や、配置・運用する対象は増えるよ。再試行も、同じ操作を繰り返してよいか考える必要がある。必要な機能をアプリのライブラリで扱う方法などと比べ、分離する利点と負担を判断しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Ambassadorパターン」って出てきたら「アプリのそばのプロキシに、外部通信を代行させる設計」と思えればだいたいOK!
📖 おまけ:英語の意味
「Ambassador Pattern」 = 大使パターン
💬 Ambassadorは「大使」。アプリの代わりに外部と通信する役割を、大使になぞらえた呼び名だよ。代理役の配置はコンテナだけに限らないんだ。

参考資料

← 用語集にもどる