分散システムデザインパターン
https://www.oreilly.co.jp/books/images/picture_large978-4-87311-875-8.jpeg
コンテナ技術の知識がある前提で書かれている
dockerを普通に使えるレベルの知識が無いと読んでも理解できないだろう 特にマルチノードからはkubernetesのYAMLが普通にバンバンでてくるのでマニフェストをある程度理解してないとわかんないかも コードレベルの説明はほとんどなく、あくまでアーキテクチャの話
と思ったけれど後半は結構実装サンプルが載ってた
ただdockerをある程度使ったことがある人ならそれだけでも割とイメージできると思う 200ページ無いのでサクッと読める
知らずに使っていた実装パターンに名前がついていることが分かった
共通言語として使えるようになるので、覚えておいて損はない
バッチ処理、キュー、FaaSなど、幅広い手法が載ってる
リザーブドインスタンスとかSQSとか
コンテナを活用して関心の分離、疎結合を実現できる
こんな活用の仕方があるんだなぁと思うことが結構あったので読んでよかった
シングルノードで使えるデザインパターンだけでも読む価値がある
学び
シングルノード
サイドカー
サイドカーで設定を同期する
設定更新APIという手法があることを知らなかった
topzでコンテナ監視
サイドカーでリポジトリの更新を監視してアプリケーションを自動更新
アンバサダパターン
シャーディングアンバサダプロキシ
ストレージが1台のマシンに収まらず、複数台に分散して配置しないといけない場合、ストレージレイヤのシャーディングが必要
シャーディングアンバサダを使うことで、アプリケーションからは1つのエンドポイントにアクセスするだけでよい
シャーディングはシャーディングアンバサダがやってくれる
また、開発環境と本番環境の環境差異を吸収できる
サービスブローカアンバサダ
DBが複数台構成の場合の適切なアクセス先の制御をコンテナにやらせるパターン
アプリケーションからは1台のコンテナにアクセスするだけでよい
実験的運用やリクエストの分割
IPハッシング
ユーザがアクセスするたびに試験システムと本番システムの交互にアクセスしないように制御する仕組み
アダプタパターン
監視
ログ
アプリがファイルにログを書いているのをstdoutにリダイレクトする方法
アプリ直接更新してログのフォーマット変えればよくね?って思ったらそれも書いてあった
他の人が作ったコンテナを再利用するケースだとアダプタパターンは役に立つ
ヘルスモニタの追加
手を入れられないDBコンテナのヘルスチェックをできるようにする
いずれもコンテナとして再利用可能になっていると、アプリに手を入れずに汎用的に使えるようになる
マルチノード
セッション保持
IPベースのセッション保持はNAT経由の場合正常に動かない場合が多い
Cookieを使うほうが良い
大事な言葉
サイドカーはモジュール化されて再利用可能であるという一貫した重要なテーマがあります。サイドカーは幅広いアプリケーションやデプロイ環境で再利用可能なのが、成功の秘訣です。