付録Bプロダクションサービスのためのベストプラクティス
執筆:Ben Treynor Sloss
編集:Betsy Beyer
B.1 処理の適切な中止
設定入力はサニタイズして検証し、ありえないような入力に対しては以前の状態のまま動作を続け、かつ問題のある入力を受け取ったことをアラートとして発しましょう。問題のある入力は、多くの場合以下のいずれかに分類されます。
- 不正確なデータ
- 構文を検証し、可能であれば意味も検証しましょう。データが空だったり、一部分だけだったり、切り捨てられてしまっていたりしないかどうかチェックしましょう(例えば、仮に設定が以前のバージョンよりも
N
%以上小さければアラートを発するといったように)。 - 遅れたデータ
- この場合、使用中のデータがタイムアウトして無効になることもあります。データが有効期限切れになる前に十分余裕を持って早めにアラートを発するようにしましょう。
許容しすぎたり単純すぎたりすることがあるかもしれませんが、設定読み込みに失敗する際には今の動作がそのままになるようにしましょう。一般的に、新しい設定が壊れているかもしれない時は、システムは元の設定のまま動作し続けて人間の確認を待つ方が安全です。
事例
2005年に、GoogleのグローバルなDNSロードバランシング及びレイテンシバランシングのシステムが、ファイルのパーミッションに問題があったために空のDNSエントリを受け取りました。システムはこの空のファイルを受け付けてしまい、Googleの全サービスで6分間NXDOMAIN
が返されてしまいました。これを受けて、現在そのシステムではgoogle.comの仮想IPの存在確認を含む、新しい設定に対するいくつもの健全性チェックを行うようになっており、受け取った新しいファイルが入力チェックをパスするまではそれまでのDNSエントリを返し続けます。 ...
Get SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.