9章単純さ

執筆:Max Luebbe

編修:Tim Harvey

そうして費用をいくらつぎ込んでも、信頼性だけは手に入らない。

信頼性は、極限まで単純さを追求することでしか手に入らないのだ。

——C.A.R. Hoare、チューリング賞記念講演にて

元来ソフトウェアシステムは、動的で不安定なものです†1。ソフトウェアシステムが完全に安定するのは、捨て去られたときだけです。コードベースの変更をしなければ、バグを生じさせることもなくなります。下位のレイヤーのハードウェアやライブラリが決して変化しないのであれば、それらがバグを生み出すこともなくなります。ユーザーベースを現在の状態で固定できるのであれば、システムをスケールさせる必要もありません。実際のところ、システム管理に対するSREのアプローチをうまくまとめるなら「要するに、私たちの仕事はシステム内でのアジリティと安定性のバランスを取ることなのです」†2

9.1 システムの安定性とアジリティ

安定性を犠牲にして、アジリティを優先させる方が妥当なこともあります。私はしばしば、探求的コーディングと自分で呼んでいるやり方を進めることによって、なじみのない問題領域にアプローチしてきました。これは、試行錯誤をしなければ達成すべきタスクを本当に理解できないことを踏まえた上で、作成するコードに有効期限を明示的に設定することです。有効期限付きのコードは、プロダクション環境にリリースされたり、ユーザーに使われたりすることは決してないので、テストのカバレッジやリリース管理の面で、はるかに融通が利きます。

プロダクションソフトウェアシステムの大部分では、安定性とアジリティをバランス良く調整しなければなりません。SREは、ソフトウェアの信頼性を高めるための手続き、プラクティス、ツールを作成するために働きます。それと同時に、SREはこの作業が開発者のアジリティに与える影響を最小限にとどめなければなりません。実際には、信頼できるプロセスは開発者のアジリティを高めることがSREの経験から分かっています。プロダクション環境へのロールアウトを高い信頼性の下で素早く行えるなら、プロダクション環境への変更が理解しやすくなります。その結果、バグが生じたときの発見と修正までの時間が短くなるのです。開発に信頼性を持たせることによって、開発者は作成するソフトウェアやシステムの機能やパフォーマンスという、自分たちが本当に注目しなければならないことに集中できるようになります。 ...

Get SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.