Amazon Prime DayでAWSがどんな役割を果たしたか。そんなレポートがAWSのブログにのっていました。

Prime Dayは年に一度Amazon上で開催されるプライム会員対象のセールで幅広い商品のお値段が安くなります。”デー“とはいいつつも、反響が大きかったため今では一回に30時間続くみたいです。

Amazonではこの日を大きな商機ととらえているようですが、それを支えるインフラ(AWS)としては一日に普段の何倍ものアクセス、トランザクションが発生します。一般的に負荷に偏りがあるとリソースのutilizationが悪化するので望ましくないのですが、AWSではこの日のために念入りに準備をします。 システムがダウンしてしまったらその分の利益が飛んでしまいますし。毎年Prime Dayが終わった次の日から以下のような準備を進めるそうです。(この話を聞いて僕は“Nightmare Before Christmas”を思い浮かべました。)

  • Auditing: リスクの特定、進捗管理、技術的な課題の洗い出しなど想定される一般的なタスクをこなしていきます。連絡フローなど事務的な処理も含まれます。
  • GameDay: 予行演習。On-callやOpsチームのシフトなども考慮してCatastorophicテストなども行う本格的なものです。考案したのはJesse Robbinsという方でChef(旧Opscode)の創業者らしいです。

GameDay: An exercise designed to increase Resilience through large-scale fault injection across critical systems. Part of a larger discipline called Resilience Engineering. Not new, just new to us ;-)

こういった試みはResilience Engineeringといいます。

この動画が詳しいです。GameDayでは迅速に障害に対処できるようチームで練習を行うのでThe Calculus of Service Availabilityでも紹介されていたMean Time to Repair (MTTR)を減らすことができます。

resilience

障害時の対応方法をRunbookやDocumentに残しておくことはよくありますが、実際にやってみないとそれが機能するのか、不備はないかということは分からないことは往々にしてあるのでGameDayのような取り組みはどんなエンジニアリングチームにおいても非常に効果的です。また障害対応はテンパることも多いので練習を何度か重ねることにより当日落ち着いて対応できるといった精神的な面でのメリットもあります。

Recap

AWS上でこのようなイベントやキャンペーンを打つのは何もAmazonに限らないはずです。そんなユーザの対し“Infrastructure Event Readiness”というWhite Paperが出されています。もしかしたらこういった内容はもっとCriticalなシステム(例えば医療機器や防衛システムなど)では当たり前のことかもしれませんが、WebサービスやEコマースくらいだとなかなかコストと時間をかけてやらないことも多いと思います。

それに得てしてエンジニアリングは技術的に解決することに主眼を起きがちですが(それがエンジニアリングの目的なので当然といえば当然ですが)GameDayのように地道に練習をしておき”build confidence”しておくというのも同時に必要なことじゃないかなと感じました。そしてこれをプロセスとして”エンジニアリング”しているあたり、AWSっぽいなと思います。

Referece