Open3
「分散システムデザインパターン」での学び
※ 要約とかでありません
コンテナを利用した分散システムでは、複数ノードが関連しあっている。
そのうちの単一のノード内でも、サイドカーパターンなどで、複数のコンテナを利用するケースあり。
コンテナを利用することで、以下のメリットあり。
- 各コンテナごとで利用するリソースを明確に定義・区別でき、お互いに干渉しないようにできる
- コンテナとして機能を単体で切り出すことで、再利用性・他の要素と競合せずにそれ単体でテスト・デプロイできるようにすることが可能
サイドカーパターンを利用することで、アプリケーションコンテナに対して機能拡張が可能になる。
ユースケースとして、レガシーなアプリケーションで機能修正が大変なものに対して、サイドカーコンテナを利用することで解決する。(ex: HTTPからHTTPSの対応など)
また、設定の同期とかでも利用できる。アプリケーションコンテナは、設定の更新を意識せずに利用だけで済むようにできる。
サイドカーパターンを利用するときは、他のコンテナを利用するのでインタフェース仕様にはしっかりと設計すること。
また、再利用性が高いコンテナとして、Dockerfileなどでドキュメントを残しておくと良さそう。
LABEL、などの、イメージにメタデータを付与するやつも使えそう。
他にも、
シングルノードのパターンとして、以下がある。
- アンバサダパターン
- 外部との接続の仲介周りを行う
- 本番環境・テスト環境の接続切り替えや、接続先がシャード分割している際の適切な接続先へのルーティングに使えるかも?
- アダプタパターン
- 外部からのメインコンテナに関する情報を取得しようとする際に、そのインタフェースを提供する
- メトリクスとか監視周りとかで使いやすそう
イメージ的に、
アンバサダ: 内 => 外
アダプタ: 外 => 内
のパターンで使うイメージ
分かりやすい