【さいどかーぱたーん】

サイドカーパターン とは?

💡 メインコンテナに「相棒」を横付けして機能を追加
📌 このページのポイント
サイドカーパターン Pod(同一プロセス空間) メインコンテナ アプリケーション (ビジネスロジック) localhost 共有Volume サイドカー ログ収集 プロキシ 監視 認証 ← 外部リクエスト バイクのサイドカーのように、メインに寄り添って補助機能を提供
サイドカーパターンのイメージ
ひよこ ひよこ

なんで別コンテナに分けるの?

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

関心の分離のため。メインアプリがビジネスロジックに集中し、ログ収集・暗号化・認証などの横断的な処理はサイドカーが担当する。メインアプリがPythonでもGoでもJavaでも、サイドカーのログ収集コンテナは同じものを使い回せる。言語やフレームワークに依存しないんだよ

ひよこ ひよこ

サービスメッシュとの関係は?

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

Istioなどのサービスメッシュは、各Podにenvoyプロキシをサイドカーとして自動注入する。全通信がサイドカー経由になるから、アプリコードを変更せずにmTLS(相互TLS)、リトライサーキットブレーカートラフィック分散を実現できる。これがサイドカーパターンの最も有名な活用例だよ

ひよこ ひよこ

デメリットは?

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

リソース消費。各Podにサイドカーが入ると、CPU・メモリの消費がPod数分増える。100Podなら100個のサイドカー。②レイテンシ。通信がサイドカーを経由するため数msの遅延が加わる。③デバッグの複雑化。問題がメインアプリかサイドカーかの切り分けが必要になるんだ

ひよこ ひよこ

サイドカーを使わない方法もある?

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

最近はサイドカーレスの流れもあるよ。Cilium Mesh(eBPFベース)やIstio Ambient MeshはPodごとのサイドカーではなくノードレベルのプロキシで通信制御する。リソース消費とレイテンシを削減できる。ただしサイドカーの方が細かい制御ができるから、用途に応じて選択するのが良いよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「サイドカーパターン」って出てきたら「メインアプリに補助コンテナを横付けするパターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Sidecar Pattern」 = サイドカーパターン
💬 バイクのサイドカー(横付けの座席)のように、メインの横に補助を付けるイメージだよ
← 用語集にもどる