非常時の可用性をフィーチャーフラグで保つアイディア
はじめまして、iwamotです。勤務先ではインフラ・SREチームのマネージャーを務めています。
AWSを使うことが多いため、AWSに関する話を書きますが、オンプレミスを含め他の環境でも役立つよう心がけます。
この記事ではAWSのベストプラクティス「緊急レバーを実装する」を紹介するとともに、その実装にフィーチャーフラグを用いるアイディアを提示します。
重要でない機能をすみやかに落とす「緊急レバー」
「緊急レバーを実装する」は、非常時でも可用性を保つためのベストプラクティスのひとつです。AWS Well-Architected Frameworkの「信頼性の柱」に挙げられています。
「アクセス急増などの非常時に、重要でない機能をすみやかに落とし、重要な機能にリソースを集中させるプロセス」を、AWSでは緊急レバーと呼んでいます。ちなみにAmazon.comでは、緊急レバーが引かれた場合、検索結果にカスタマーレビューの評価が表示されなくなるそうです。
緊急レバーのポイントは「すみやかさ」にあります。重要でない機能を落とすのに時間がかかると、可用性のリスクが高まるからです。重要でない機能を落とす仕組みには「グレイスフルデグラデーション」という別の名前がついています。グレイスフルデグラデーションをすみやかに行えるのが緊急レバーです。
緊急レバーの実装にフィーチャーフラグを用いる
そんな緊急レバーですが、いったいどう実装すべきなのでしょうか。ぼくの知るかぎり、AWSは実装方法までは示していません。最適な実装はシステムごとに違うでしょうから、しかたないことだと思います。
ぼくはフィーチャーフラグを用いるのがよさそうに感じます。AWSで運用しているシステムであれば、AWS AppConfigを使って緊急レバーのオン/オフを切り替えるイメージです。
一般的にフィーチャーフラグは新機能のリリースに使われます。まだ公開したくない機能を隠しておき、時期が来たらフラグをオンにして公開する使い方です。アプリケーションの再デプロイなしに、すみやかに新機能をリリースできます。
このフィーチャーフラグを緊急レバーに用いれば、重要でない機能をすみやかに落とせるのではないでしょうか。まだ思いつきの段階ですが、まずは勤務先で提案してみようと考えています。
おわりに
フィーチャーフラグを緊急レバーに用いるアイディアを思いついたものの、先行事例を見かけないため、叩き台として提示してみました。もしかしたら、ぼくが見逃しているだけかもしれません。
ご意見やご感想がありましたら、ぼくのXにお送りいただければ幸いです。