Production-Ready Microservices

Production-Ready Microservices:
Building Standardized Systems Across an Engineering Organization

4年前に読んだ本ですが、最近復習してきたのでメモを残しておきます。

Production-readiness のチェックリスト

1、Stability and Reliability
  • 標準化された開発サイクルがある
  • ソースコードは、コードレビュー、ユニットテスト、結合テスト、E2Eテストを通って出荷される
  • テスト、パッケージング、コンフィグレーション、デプロイメントは自動である
  • 標準化されたデプロイメントパイプライン(staging->canary->production環境)がある
  • マイクロサービスの利用者は可視化され、何か会った際に通知可能
  • 依存関係と仕様変更は管理されている。エントリーポイントの解除(deprecate)、バックアップ、キャッシュ、ロールバック手順がある
  • 安定したサービスルーティングとサービスディスカバリー仕組みがある
  • 2、Scalability and Performance

  • 明確的な利用規模増減プラン(質:業務指標、ユーザ数や注文数など。量:RPS・QPS)

  • 優先順位に基づく共有ハードウェア資源の有効利用

  • 資源のボトルネックとニーズの可視化

  • リソース配分とキャパシティプランの自動化

  • サービス間依存関係も配慮されスケール可能

  • 利用者数増減によるスケール可能

  • 業務のトラフィックモデルの可視化

  • 障害時にトラフィックルーティングの自動変更

  • スケールしやすい開発言語の使用

  • タスク処理の高速化(並列処理やスシャーディングなど)

  • データ処理の高速化とスケール

  • 3、Fault Tolerance and Catastrophe Preparedness

  • 単一障害点存在しない

  • 障害シナリオの可視化(HW障害、インフラ障害、依存障害、内部エラー)

  • コードテスト、負荷テストとカオスエンジニアリングによる伸縮性担保

  • 障害検知と復旧の自動化

  • 標準化事故と障害処理フロー
  • 4、Monitoring

  • キーメトリックスは、ホストレベル、インフラレベルとサービスレベルで識別と監視されている

  • 監査ログある

  • 分かりやすいダッシュボードある

  • 警告メッセージに対する閾値があり、操作可能

  • モニタリングの担当ローテーション配置

  • 待機体制と障害レスポンスプロセスの明確化
  • 5、Documentation and Understanding

  • 詳細なドキュメント

  • ドキュメントの定期更新

  • ドキュメント必要内容:サービス定義、アーキテクチャー図、運用担当情報、重要情報リンク、開発ガイド、リクエストフロー、エントリーポイント、依存関係、運用マニュアル、FAQ

  • 理解しやすさ

  • Production-Ready基準のクリア

  • ドキュメントレビュー済み