マイクロサービスとは、ThoughtWorksのジェームス・ルイスが提唱するアーキテクチャです。2016年刊行の『マイクロサービスアーキテクチャ』が、基本的な概念とどのように構築するかを解説するものであったのに対し、本書は実際にどのように運用するかに焦点を当てています。運用をある程度標準化し、システマチックに運用することで、生産性、安定性、拡張性、耐障害性に優れたより強固なマイクロサービスの構築と運用を実現します。
https://www.ohmsha.co.jp/book/9784873118154/
正誤表やDLデータ等がある場合はこちらに掲載しています
はじめに
1章 マイクロサービス
1.1 モノリスからマイクロサービスへ
1.2 マイクロサービスアーキテクチャ
1.3 マイクロサービスエコシステム
1.3.1 レイヤ 1:ハードウェア
1.3.2 レイヤ 2:通信
1.3.3 レイヤ 3:アプリケーションプラットフォーム
1.3.4 レイヤ 4:マイクロサービス
1.4 組織的な課題
1.4.1 逆コンウェイの法則
1.4.2 技術的スプロール
1.4.3 障害の種類の増加
1.4.4 リソースの奪い合い
2章 本番対応
2.1 マイクロサービスの標準化にまつわる問題
2.2 可用性:標準化の目標
2.3 本番対応の標準
2.3.1 安定性
2.3.2 信頼性
2.3.3 スケーラビリティ
2.3.4 耐障害性と大惨事対応
2.3.5 パフォーマンス
2.3.6 監視
2.3.7 ドキュメント
2.4 本番対応の実装
3章 安定性と信頼性
3.1 安定性と信頼性を備えたマイクロサービスを構築するための原則
3.2 開発サイクル
3.3 デプロイパイプライン
3.3.1 ステージング
3.3.2 カナリア
3.3.3 本番
3.3.4 安定性と信頼性のあるデプロイの保証
3.4 依存関係
3.5 ルーティングと検出
3.6 非推奨と廃止
3.7 マイクロサービスの評価基準
3.7.1 開発サイクル
3.7.2 デプロイパイプライン
3.7.3 依存関係
3.7.4 ルーティングと検出
3.7.5 非推奨と廃止
4章 スケーラビリティとパフォーマンス
4.1 スケーラビリティとパフォーマンスを備えたマイクロサービスを構築するための原則
4.2 成長の判断基準
4.2.1 質的な成長の判断基準
4.2.2 量的な成長の判断基準
4.3 リソースの効率的な使い方
4.4 リソースの把握
4.4.1 リソースの要件
4.4.2 リソースのボトルネック
4.5 キャパシティプランニング
4.6 依存関係のスケーリング
4.7 トラフィック管理
4.8 タスクの処理
4.8.1 プログラミング言語の限界
4.8.2 効率のよいリクエスト、タスクの処理
4.9 スケーラブルなデータストレージ
4.9.1 マイクロサービスエコシステムにおけるデータベースの選び方
4.9.2 マイクロサービスアーキテクチャ独特のデータベースの問題
4.10 マイクロサービスの評価基準
4.10.1 成長の判断基準
4.10.2 リソースの効率的な利用
4.10.3 リソースの把握
4.10.4 キャパシティプランニング
4.10.5 依存関係のスケーリング
4.10.6 トラフィック管理
4.10.7 タスクの処理
4.10.8 スケーラブルなデータストレージ
5章 耐障害性と大惨事対応
5.1 耐障害性のあるマイクロサービスを構築するための原則
5.2 単一障害点の除去
5.3 大惨事と障害のシナリオ
5.3.1 エコシステム全体でよく見られる障害
5.3.2 ハードウェア障害
5.3.3 通信レベルとアプリケーションプラットフォームレベルの障害
5.3.4 依存関係の障害
5.3.5 内部(マイクロサービス自体の)障害
5.4 回復性テスト
5.4.1 コードテスト
5.4.2 ロードテスト
5.4.3 カオステスト
5.5 障害の検出と修正
5.6 インシデントと機能停止
5.6.1 適切な分類
5.6.2 インシデント対応の 5つの段階
5.7 マイクロサービスの評価基準
5.7.1 単一障害点の除去
5.7.2 大惨事と障害のシナリオ
5.7.3 回復性テスト
5.7.4 障害の検出と修正
6章 監視
6.1 マイクロサービスの監視の原則
6.2 主要メトリック
6.3 ロギング
6.4 ダッシュボード
6.5 アラート
6.5.1 効果的なアラートの設定
6.5.2 アラートの処理
6.6 オンコールローテーション
6.7 マイクロサービスの評価基準
6.7.1 主要メトリック
6.7.2 ロギング
6.7.3 ダッシュボード
6.7.4 アラート
6.7.5 オンコールローテーション
7章 ドキュメントと組織的な理解
7.1 マイクロサービスのドキュメントと理解に関する原則
7.2 マイクロサービスのドキュメント
7.2.1 説明
7.2.2 アーキテクチャ図
7.2.3 連絡先とオンコール情報
7.2.4 リンク
7.2.5 オンボーディング /開発ガイド
7.2.6 リクエストフロー、エンドポイント、依存関係
7.2.7 オンコールランブック 155
7.2.8 FAQ
7.3 マイクロサービスについての組織的な理解
7.3.1 アーキテクチャレビュー
7.3.2 本番対応の監査
7.3.3 本番対応へのロードマップ
7.3.4 本番対応チェックの自動化
7.4 マイクロサービスの評価基準
7.4.1 マイクロサービスのドキュメント
7.4.2 マイクロサービスについての組織的な理解
付録A 本番対応のチェックリスト
A.1 本番対応サービスは安定性、信頼性を備えている
A.2 本番対応サービスはスケーラブルでパフォーマンスが高い
A.3 本番対応サービスは耐障害性があり大惨事対応力がある
A.4 本番対応サービスは適切に監視されている
A.5 本番対応サービスはドキュメントが整備され、組織的に理解されている
付録B マイクロサービスの評価基準
B.1 安定性と信頼性
B.1.1 開発サイクル
B.1.2 デプロイパイプライン
B.1.3 依存関係
B.1.4 ルーティングと検出
B.1.5 非推奨と廃止
B.2 スケーラビリティとパフォーマンス
B.2.1 成長の判断基準
B.2.2 リソースの効率的な利用
B.2.3 リソースの把握
B.2.4 キャパシティプランニング
B.2.5 依存関係のスケーリング
B.2.6 トラフィック管理
B.2.7 タスクの処理
B.2.8 スケーラブルなデータストレージ
B.3 耐障害性と大惨事対応
B.3.1 単一障害点の除去
B.3.2 大惨事と障害のシナリオ
B.3.3 回復性テスト
B.3.4 障害の検出と修正
B.4 監視
B.4.1 主要メトリック
B.4.2 ロギング
B.4.3 ダッシュボード
B.4.4 アラート
B.4.5 オンコールローテーション
B.5 ドキュメントと組織的な理解
B.5.1 マイクロサービスのドキュメント
B.5.2 マイクロサービスについての組織的な理解
用語集
索引