The DevOps Handbookで紹介されていた
を読んだら面白かったというメモ。国内ではあんまり取り上げられていないような気もする(もしくは私が不勉強で知らないだけ?)

The DevOps ハンドブック 理論・原則・実践のすべて
- 作者: ジーン・キム,ジェズ・ハンブル,パトリック・ボア,ジョン・ウィリス
- 出版社/メーカー: 日経BP社
- 発売日: 2017/07/04
- メディア: Kindle版
- この商品を含むブログを見る
開発部門が下流の作業の状況をフォローし、本番インシデントの解決の作業に参加すれば、アプリケーションは次第に運用にとってよい設計になっていく。さらに、スピーディなフリーとデプロイのしやすさを正面から意識してコードやアプリケーションを設計するようになると、すべての本番サービスに組み込みたいと思う一連の非機能要件が見つかる。
これらの非機能要件を実装すれば、サービスはデプロイしやすく、本番環境で動き続けるようになる。そして、本番環境では、問題を早い段階で見つけ、解決できるようになり、コンポーネントが故障したときには穏やかにグレードダウンできるようになる。そのような非機能要件の例を挙げておこう。
The DevOps ハンドブック 理論・原則・実践のすべて (20.5 非機能要件を体系化して運用にやさしい設計を実現する、より)
The Top Ten DevOps “Operational Requirements”
というわけで元記事を元にメモ。
- Documentation
- ちゃんとドキュメントを書いてくれ。
- 俯瞰的な概念図
- 全ての依存関係
- 全てのエラーメッセージと詳細
- すべての設定オプション/スイッチ/フラグ/キーなどの詳細
- (実行状況)計測機能のエンドポイントと期待値
- 前提条件、デフォルト値など
- ちゃんとドキュメントを書いてくれ。
- Robust Regression Test suite
- 自動回帰テストのサポート。
- Automation and “scriptability”
- Horizontal Scalability (for all tiers)
- 全階層における水平方向のスケーラビリティ。
- “Feature Flags”
- Configurability
- 設定容易性。ハードコードなどもってのほかで、正しく設定できるように構築する。
- Backward/Forward Compatibility
- 後方/前方互換性。これはオンライン中でのアップグレードを行う前提となるため。
- Code defensively & degrade gracefully
- 主にサードパーティサービスに対する防御的な実装と、縮退稼動のサポート。
- Keep track of the Dependencies!
- アプリケーションの依存関係が把握され文書化されていること。
- Instrumentation
- (稼動状況の)計測のサポート。アプリケーションの稼働状況がモニタリングできる方法のサポート。
うん、わかるわかる。