「プロダクションレディマイクロサービス」を読んだ

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

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

最近、分散トレーシングの導入を目論んでUberのJaegerを触っていて、分散トレーシングはマイクロサービスの文脈で語られることも多いので無関係ではないということで読んだ。著者がUberのSREということもある。この本はマイクロサービスアーキテクチャを採用する際 / した後に、それを「プロダクションレディ = 本番対応」なサービス水準に押し上げて維持していくためのエッセンス集のようなもの。マイクロサービス自体の解説は殆ど無いので、Sam Newmanの「マイクロサービスアーキテクチャ」とかMartin Fowlerのブログを読んでおいた方が良い。

マイクロサービスアーキテクチャの適否については散々語り尽くされてきて通念化してるものがあって、プロダクトのライフサイクルとか組織が受ける制約とか種々の要因で適するものは限られるけど、この本に書かれている殆どのことはアーキテクチャに依らず有益だと思う。マイクロサービスアーキテクチャを採るとより一層必要性が高まるというだけ。 ろくに考えずに部分的に取り入れると崩壊しそうなものもあるので注意が必要だけど、可能な限り実践していきたい。

達成度を測定するチェックリストが各章末に付いていて、それが良く纏まっているので使えそう。


メモ

  • 1章 マイクロサービス
    • 4層モデル
      • マイクロサービス, アプリケーションプラットフォーム, 通信, ハードウェア
      • 下位3層インフラストラクチャレイヤの抽象化
    • エコシステム
      • 複数のマイクロサービスと抽象化されたインフラストラクチャレイヤ
  • 2章 本番対応
    • エコシステム全体で高い品質を維持
      • 可用性確保 / 高いSLAの実現
      • エコシステム全体の標準化
        • 共通的に現実に適用でき測定可能な標準と要件
        • 8つの原則
          • 安定性, 信頼性, スケーラビリティ, 耐障害性, 大惨事対応, パフォーマンス, 監視, ドキュメント
  • 3章 安定性と信頼性
    • カナリア
    • 依存関係の障害に対する防御策
      • バックアップ / 代替サービス / フォールバック / キャッシュ
  • 4章 スケーラビリティとパフォーマンス
    • 並行性とパーティション分割
    • 成長の判断基準
      • ビジネスメトリックに基づく質的基準
      • 質的基準を定量化した量的基準
  • 5章 耐障害性と大惨事対応
    • 障害シナリオ
      • 内部障害 (マイクロサービス自身) と外部障害 (依存関係, 下位レイヤ)
    • 回復性テスト
      • コードテスト (lint, UT, IT, E2E) , ロードテスト, カオステスト
    • インシデント対応の5ステップ
      • 評価, 調整, 緩和, 解決, フォローアップ
  • 6章 監視
    • 主要メトリック
      • マイクロサービスメトリックとインフラストラクチャメトリックへの分類
  • 7章 ドキュメントと組織的な理解