QiitaでAWSの大規模障害を振り返る記事があった。その中でも天災ではなく人災を中心に、どういう改善策を練ったのかをピックアップしてみる。
まず2017年のS3の障害。入力ミスで想定より多くのサーバが削除されたとのこと。削除されたのはインデックスとプレースメントの2つのサブシステム。日本時間の深夜2:37に発生し早朝6:54に復旧が完了している。
で、対策が「ツールを改造して、一気に削除するのではなく、ゆっくり削除するようにする」というもの。なるほど、地味に効果ありそう。
次はロードバランサーを提供するELBで、これもメンテナンス中に誤って削除したというもの。どういう目的のメンテナンスで、どう間違ったのかは読み取れない。
アクセスごとに承認するべきところが、永続的に承認されていたので、これを戻したという。これ、対策じゃなくて原因じゃないかなと若干もやもやする。
最後のケースはルーティングを書き換えるときに他のプライマリにルーティングするつもりが、自分自身の冗長ルートにルーティングしてしまいEBSを孤立させてしまったというもの。ただ孤立しただけでなく、ミラーリングする相手がいなくなったので、再ミラーリングが始まりリソースが枯渇した。
対策として、①単一のAZからの応答に時間がかかる場合のタイムアウトを見直すこと、②容量を超えたときにインテリジェントに負荷を軽減させるということを上げている。
あちこちで自動化を進めているから、どこで暴走するか予想しにくくもなっているのだろう。一方で、ひとつめの「削除はゆっくり」みたいなプラクティスなんかも蓄積されているのかもしれない。