プロダクションレディマイクロサービス ―運用に強い本番対応システムの実装と標準化

Book description

UberのSRE(サイト信頼性エンジニア、サイトリライアビリティエンジニア)として、マイクロサービスの本番対応向上を担当していた著者が、その取り組みから得られた知見をまとめたものです。モノリス(一枚岩)を複数のマイクロサービスに分割した後に、安定性、信頼性、スケーラビリティ、耐障害性、パフォーマンス、監視、ドキュメント、大惨事対応を備えたシステムにするために必要な原則と標準に焦点を当て、本番対応力のあるマイクロサービスを構築する手法を紹介します。本書で採用している原則と標準は、マイクロサービスだけなく多くのサービスやアプリケーションの改善にも威力を発揮します。

Table of contents

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

Product information

  • Title: プロダクションレディマイクロサービス ―運用に強い本番対応システムの実装と標準化
  • Author(s): Susan J. Fowler, 佐藤 直生, 長尾 高弘
  • Release date: September 2017
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118154

You might also like

book

データサイエンス講義

by Rachel Schutt, Cathy O'Neil, 瀬戸山 雅人, 石井 弓美子, 河内 崇, 河内 真理子, 古畠 敦, 木下 哲也, 竹田 正和, 佐藤 正士, 望月 啓充

コロンビア大学のデータサイエンス入門講義をベースとした本書では、データサイエンスを行う上で、どのようなプロセスが必要か、データサイエンティストとしてはどのようなスキルセットが必要で、どのような思考方法を選択する必要があるのかを実例とともに紹介します。Google、Microsoft、Facebookをはじめとした有名企業で使われているアルゴリズムや分析手法の紹介など、興味深い話題や事例を豊富に収録。幅広い解説で、データサイエンティストの参考になるトピックが満載の一冊です。

book

プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける

by Melissa Perri, 吉羽 龍太郎

本書は、顧客に価値を届けるプロダクトを作り出すプロダクトマネジメントについて学ぶ本です。プロダクトマネジメントを理解することで、企業がビジネス目標を達成しながら、顧客の課題を解決する方法を解説します。はじめにプロダクトマネージャーの役割と責任を定義し、優れた意思決定を促す戦略の立て方を紹介します。実験と最適化によって作るべきプロダクトを決めるプロセスを解説し、最後にプロダクト主導の組織を支えるための文化や方針を紹介します。ビルドトラップを避け、顧客の課題にフォーカスするプロダクトマネジメントの原則を解説する本書は、規模の大小を問わずすべてのプロダクトチーム、マネージャー、プログラマ、アーキテクト、デザイナ、マーケターに必携の一冊です。

book

デザインスプリント ―プロダクトを成功に導く短期集中実践ガイド

by Richard Banfield, C. Todd Lombardo, Trace Wax, 安藤 幸央, 佐藤 伸哉, 牧野 聡

本書はGV(旧Google Ventures)およびGoogleで提唱しているデザイン思考「デザインスプリント」の概念とその手順を実践的に解説。デザインスプリントではプロダクトやサービスのアイデアを短時間で作り上げ、ユーザーに示して評価してもらい、アイデア創出からプロトタイピング、ユーザーテストと評価までをわずか5日間で完了させるためのプロセスが定められています。本書では組織でデザインスプリントを実践するために必要な事柄を紹介し、多くのリソースを投入する前にプロダクトやサービスのアイデアを検討し、チームメンバー、ステークホルダー、そしてユーザーを巻き込みながら短期間でより良いユーザー体験を作り上げる方法を伝授します。

book

進化的アーキテクチャ ―絶え間ない変化を支える

by Neal Ford, Rebecca Parsons, Patrick Kua, 島田 浩二

現代におけるエンタープライズアーキテクチャは、もはや静的な計画をあてにすることはできなくなっています。そしてソフトウェア開発エコシステムは、ツールやフレームワーク、技術イノベーションの流れと共に絶え間なく変化しています。こうした状況の中で、いったん構築したシステムを成長させていくには、さまざまな変化に適応しながら進化するアーキテクチャをシステムに組み込む必要があります。本書は、そうしたアーキテクチャを「進化的アーキテクチャ」と名付け、その構築に必要な考え方や技術、実践方法などについて解説するものです。