ISBN 9784873118758

分散システムデザインパターン : コンテナを使ったスケーラブルなサービスの設計

分散システムデザインパターン : コンテナを使ったスケーラブルなサービスの設計
刊行
2019-04

概要

コンテナを使った分散システムの設計をパターンで体系化する

想定読者

クラウドネイティブなサービスを設計・運用する中級以上のバックエンドエンジニア・SREエンジニア

こんな人には向いていない

  • Dockerやコンテナ自体の基礎から学びたい入門者(本書はパターン適用が主題であり、コンテナの入門解説は含まれていない)
  • すでにKubernetesや分散アーキテクチャを本番規模で深く運用しており、設計パターンを体系として整理し直す必要のない読者には概念の復習比重が大きくなる

この本で身につくこと

  • サイドカー・アンバサダーなどシングルノードの再利用可能パターンを実システムの設計に適用できる
  • Webアプリケーションを前提にしたマルチノード分散パターンを目的から選択し、設計根拠を説明できる
  • イベント駆動処理に適した分散アーキテクチャパターンを構成要素から判断して使える
  • 大規模バッチデータ処理のワークフロー統合パターンを設計に組み込める
  • コンテナオーケストレーションを前提とした高可用性サービスの構築手順を体系的に理解できる

ハイライト(外部からの言及)

コンテナとコンテナオーケストレーションを使うことで、分散システムの設計をパターン化でき、スケーラブルで信頼性の高いサービスをすばやく構築できます — 出典

本書の価値提案の核心——パターン化による設計の再現性と構築速度向上が端的に表現されている

章立て

第1章 はじめに

コンテナを使った分散システムパターン本の出発点

第2章 サイドカー

アプリケーションコンテナと並走する補助コンテナのパターン。Service Mesh の前提概念

第3章 アンバサダ

プロキシ役のサイドカー。クライアントから見たサービス透明化

第4章 アダプタ

標準インターフェース変換。レガシー連携で頻出

第5章 レプリカがロードバランスされたサービス

ステートレスサービスの基本パターン

第6章 シャーディングされたサービス

ステートフルサービスの分散戦略

第7章 スキャッタ・ギャザー

並列処理パターン。検索エンジンや ML 推論で頻出

第8章 ファンクションとイベント駆動処理

FaaS とイベント駆動アーキテクチャの分散観点

第9章 オーナーシップの選出

リーダー選出アルゴリズムの実装パターン

第10章 ワークキューシステム

非同期ジョブキューの設計。Resque / Celery のパターン

第11章 イベント駆動バッチ処理

イベントをトリガとするバッチ処理の分散構成を扱う。第8章のイベント駆動処理との差分(ストリームではなくバッチ境界)を意識して読むと設計判断の軸が定まる

第12章 協調的バッチ処理

複数ノードが協調して1つのバッチを処理するパターン。第9章のリーダー選出と組み合わせて読むことで、ノード間の調整機構と処理分割の設計意図が理解しやすくなる

第13章 まとめ:新しい始まり?

本書の総括。分散システム設計の方法論としてのパターン言語の確立

関連記事 / 参考情報

学習のヒント

  • シングルノードパターン(サイドカー・アンバサダー等)から読み始めると、後続のマルチノードパターンで構成要素の組み合わせ方の直感が掴みやすくなる
  • イベント駆動処理とバッチデータ処理のパートは独立性が高いため、担当システムの性質に応じて優先順序を入れ替えて読んでも理解が崩れない
  • 各パターンはKubernetesを前提とした実装例で説明されているため、minikubeやkindのローカル環境を手元に用意しながら読むと定着が早い

前提知識

  • Dockerコンテナの基本操作(docker run、Dockerfile作成程度)
  • 分散システムの基礎概念——冗長性・可用性・スケーラビリティが何を意味するかの理解
  • KubernetesまたはDockerSwarmの概要レベルの知識(Podやサービスという概念が分かる程度)

次に読む本

Kubernetes in Action

本書はサイドカー・レプリカ・シャーディング等のパターンを設計レベルで示すが、実際のKubernetesリソース定義(Deployment/Service/ConfigMap)や障害時のデバッグ手順には踏み込まない。Kubernetes in Action はその実装ギャップを埋め、本書のパターンを実際のクラスタ上で動かす段階へ接続できる

データ指向アプリケーションデザイン

本書のシャーディング・レプリカ・ワークキュー等のパターンは選択肢を示すが、トレードオフの背景理論は省略されている。データ指向アプリケーションデザインはレプリケーションラグ・結果整合性・ストリーム処理の原理を詳述しており、本書のパターン選択に理論的根拠を与える

出版社による内容紹介

本書は、コンテナを使った分散システムのデザインパターンについて解説する書籍です。 コンテナとコンテナオーケストレーションを使うことで、分散システムの設計をパターン化でき、スケーラブルで信頼性の高いサービスをすばやく構築できます。 はじめにシングルノードパターンとして、分散システム内の個別ノード上に存在する再利用可能なパターンやコンポーネントについて説明し、次にWebアプリケーションのように継続的にサービスを提供するシステムを対象にしたマルチノードの分散パターンを紹介します。さらにイベント駆動処理、ワークフローの統合を含む大規模なバッチデータ処理の分散システムパターンを解説します。 可用性の高い分散システムの開発が効率的に行えるパターンを多数紹介する本書は、開発及びインフラエンジニア必携の一冊です。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。