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

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 Ilya Grigorik, 和田 祐一郎/株式会社プログラミングシステム社

現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。

book

スクラム実践者が知るべき97のこと

by Gunther Verheyen, 吉羽 龍太郎, 原田 騎郎, 永瀬 美穂

アジャイル開発手法のなかで最もよく使われる手法の1つがスクラムです。スクラムは、複雑な問題に取り組むためのシンプルなフレームワークであり、シンプルであるがゆえに実践には要所を押さえるスキルが必要になります。本書は、世界中で活躍するスクラム専門家が自らの経験と知見に基づいて執筆したエッセイ集です。スクラム適用の戦略、スクラムで進める上での戦術やパターン、さまざまな職種のコラボレーション、組織への影響などについて幅広い視点で紹介します。日本語版では、及部 敬雄、小林 恭平(kyon_mm)、高橋 一貴、長沢 智治、平鍋 健児、安井 力(やっとむ)、和田 卓人、永瀬 美穂、原田 騎郎、吉羽 龍太郎による10本の書下ろしを収録。

book

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

by Melissa Perri, 吉羽 龍太郎

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

book

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

by Eve Porcello, Alex Banks, 尾崎 沙耶, あんどうやすし

今日では多くのWebサービスがRESTアーキテクチャスタイルで実装されています。RESTは2000年にフィールディングの論文で提唱された後に爆発的に普及し洗練されてきました。一方で、本書で紹介するGraphQLは2015年にFacebookによって公開されたRESTとは異なるアプローチのアーキテクチャです。GraphQLの最大の特徴はクエリ言語を用いてデータを操作する点です。クエリ言語の表現力の高さによりクライアントは本当に必要なリクエストを送ることができます。本書ではGraphQLの概要とGraphQLを用いたWebサービスの開発方法を実装例に沿って紹介します。認証やファイルアップロードといった実践的なトピックまで踏み込んだGraphQLの実用的な入門書です。