プロダクションレディマイクロサービス
――運用に強い本番対応システムの実装と標準化
https://www.oreilly.co.jp/books/9784873118154/
UberのSREが可用性の高いマイクロサービスに必要な標準について解説した書籍です。説明されている標準の中から対応できていないサービスが多いと感じたものをまとめました。
安定性と信頼性
- 開発時のテスト、パッケージング、ビルド、リリース作業を自動化すること。
- ステージング → カナリア → 本番の順で構成されるデプロイパイプラインを用意すること。
- 依存するマイクロサービスの障害時の緩和策(バックアップ、代替サービス、フォールバック、防御的キャッシュ)を講じること。
スケーラビリティとパフォーマンス
- 質的な成長の判断基準(ビジネスメトリクス)を決めて、そこから量的な成長の判断基準(リクエスト数など)を決めること。
耐障害性と大惨事対応
- 本番環境に対しても定期的にロードテストやカオステスト(ランダムに障害を発生させるテスト)を行うこと。
監視
- ホスト単体とホスト全体の両方で主要メトリックがわかるようにすること。
- スタック全体を通じて各リクエストをトレーシングできるログを取ること。
- 全てのアラートはアクション可能であること。
ドキュメントと組織的な理解
- アーキテクチャレビューを定期的に実施し、チームの理解を深めて、問題点を明らかにすること。