Open3

「分散システムデザインパターン」での学び

かずかず

コンテナを利用した分散システムでは、複数ノードが関連しあっている。
そのうちの単一のノード内でも、サイドカーパターンなどで、複数のコンテナを利用するケースあり。

コンテナを利用することで、以下のメリットあり。

  • 各コンテナごとで利用するリソースを明確に定義・区別でき、お互いに干渉しないようにできる
  • コンテナとして機能を単体で切り出すことで、再利用性・他の要素と競合せずにそれ単体でテスト・デプロイできるようにすることが可能

サイドカーパターンを利用することで、アプリケーションコンテナに対して機能拡張が可能になる。
ユースケースとして、レガシーなアプリケーションで機能修正が大変なものに対して、サイドカーコンテナを利用することで解決する。(ex: HTTPからHTTPSの対応など)
また、設定の同期とかでも利用できる。アプリケーションコンテナは、設定の更新を意識せずに利用だけで済むようにできる。

サイドカーパターンを利用するときは、他のコンテナを利用するのでインタフェース仕様にはしっかりと設計すること。
また、再利用性が高いコンテナとして、Dockerfileなどでドキュメントを残しておくと良さそう。
LABEL、などの、イメージにメタデータを付与するやつも使えそう。

かずかず

他にも、
シングルノードのパターンとして、以下がある。

  • アンバサダパターン
    • 外部との接続の仲介周りを行う
    • 本番環境・テスト環境の接続切り替えや、接続先がシャード分割している際の適切な接続先へのルーティングに使えるかも?
  • アダプタパターン
    • 外部からのメインコンテナに関する情報を取得しようとする際に、そのインタフェースを提供する
    • メトリクスとか監視周りとかで使いやすそう

イメージ的に、
アンバサダ: 内 => 外
アダプタ: 外 => 内
のパターンで使うイメージ

分かりやすい
https://kakakakakku.hatenablog.com/entry/2018/09/24/003723