AWS GameDayのススメ

実践的なAWSのトレーニングイベントである[AWS GameDay](https://aws.amazon.com/jp/gameday/)について紹介&オススメします！

本記事は「[Japan AWS Ambassador Advent Calendar 2022](https://qiita.com/advent-calendar/2022/japan-aws-ambassador)」21日目の記事です。「ボーリング王子」かつ「[Ambassadorの中で更にTop Newcomersで表彰された](https://aws.amazon.com/jp/blogs/apn/congrats-to-our-2022-aws-ambassador-award-winners-and-meet-the-newest-ambassadors/)」 [サーバーワークス福島さん](https://twitter.com/kazuya_18f)からバトンを受け取りました！私は今年のM-1、カベポスターが一番好きでした。

今回は「**GameDayって何？** って人に向けて紹介」「興味ある人の背中押せたら」「参加するための**調整/説得の材料**に使ってもらえたら」「準備の参考にしてもらえたら」という思いで書いています。


# AWS GameDayとは

> 現実世界の問題を解決するためにAWSソリューションを実装するスキルを、ゲーミフィケーションされたリスクのない環境でテストする、共同学習型の演習です

https://aws.amazon.com/jp/gameday/  より


何度か参加したことがあるんですが、その度にルールや対象となるシステムは異なりました。
GameDayの内容自体を公開することは禁止されているため、例を抽象的に書いてみます。

## ルール例

シンプルな回だと例えば

- ある仮想企業のシステム構築&運用を自分たちで担当する
- システムが顧客からのリクエストを適切に捌けば捌くほどポイントを獲得できる

といったもので、獲得ポイントを各チームで競いランキング化されます。
ポイント以外にも、違う観点での賞が別途用意されている回もありました。

この「仮想企業」にはユーモアに富んだ設定やストーリーが含まれていて、業務とはまた違った雰囲気で楽しめます。

## 様々なミッション、イベント、トラブル

Gamedayはゲーミフィケーションされており、様々なイベントやトラブルが待ち構えています。

- 未作成のまま放置されたコンポーネントを、担当者の残した超雑な手順書をもとに構築したり
- エラーが出てリクエストが失敗している場合、原因をなんとか特定し改修したり
- リクエスト増加に耐えられるようスケール可能な設定や構成に改善したり
- コスト効率の良い設計に変更したり
- 突如発生する障害や妨害を特定して修復や防御をしたり


ポイントは稼ぐだけでなく、そのポイントを使ってゲームを有利に進めるといった戦略性のある回もありました。

- 稼いだポイントを使って顧客に提供する商品在庫を揃えたり
- ミッションのヒントを買ったり
- 他チームの妨害をしたり

なかなか忙しいです。毎回「うわ〜どうすればいいんだ〜」となりながら楽しんでいます。
システムの構築やトラブルシュート以外にも、ルールを把握して戦略的に立ち回ることも求められます。
でもうまくいかなくても楽しいですし悔しいですし勉強になります。

## 参加方法

私が知っている開催方法は主に２つ。

- パブリックに募集されているもの
- パートナー向けなど何かしらの括りに対してAWSから開催の案内と募集がくるもの


前者の例だと[re:Inventでの開催](https://reinvent.awsevents.com/learn/gamified-learning/)や[ WORLD CHAMPIONSHIP](https://pages.awscloud.com/GLOBAL-gamedev-OE-AWS-GameDay-WorldChampionship-2022-reg-event.html)や[AWS GameDay JapanのCompassで募集されていたもの](https://gameday-japan.connpass.com/)などがあり
後者の例のパートナー向けGameDayは[AWS JAPANブログのGamedayタグ](https://aws.amazon.com/jp/blogs/psa/tag/gameday/)に記事があがっています。

大元のGamedayは英語ですが、日本開催の大会ではローカライズされ冒頭のルール説明やサポートを日本語でしてもらえることが多いです。
ドキュメントは知っている限り英語のままですが、翻訳サービスなどの力を借りれば英語が苦手な人でもなんとかなるります。

## 公開されている情報

開催前の募集要項に、以下のような情報が公開されていたりします。

- 日時
    - ルール説明や結果発表込みで、だいたい4〜6時間くらい)
- ターゲット
    - 初心者OK、中級者以上 など
- テーマ
    - サーバレス、セキュリティ、障害(カオス) など)
- 出てくるサービス例
    - Lambda、EKS、EC2など具体的なサービス名が例示されていることがあります。ない場合もある。


例示されたサービスを未経験でも何かしらヒントがあったり、調べたり、頭抱えてみたり、他の人に任せたり、なんとかなったりします。
もちろん普段触っている方が有利です。

# 参加について

## チーム編成
オフラインで全員集まって開催されるケースでは会場でランダムにチーム編成されたりもするようですが
私が参加したことのある回では「2〜4人のチームを組んで応募してね！」という形式でした。
パートナー向け開催では１社あたりの最大チーム数が決められていたりするので、希望者多数の場合は社内で調整が要るかもしれません。

ただ、なかなか集まらないことのほうが多いと思います。自信がない、足引っ張るかも...という不安はあると思いますし、自分もありました。　「ガチガチに勝ちに行くぜ！」という方針でもなければ、楽しめればそれでいいんじゃないかとも思います。始まったら楽しむためにも真剣に勝ちにいく気概で望んで、ダメだったらダメだったでそれはそれで学びやモチベーションになるので。

人数集まらない時は、たとえ何もできなくても３人より4人の方が有利ですし。技術やトラブルシュートの面で貢献できなくても、ゲームとしての部分で貢献できることはあったりもします。

参加するとなると半日以上は費やします。参加すメリットの説明や、スケジュール調整が必要になるかもしれません。
個人的にはGameDay参加はコストパフォーマンスがいいと思っているので、配下メンバーが参加に興味を示したときは、可能な限り調整しています。


## 参加メリット

- 安全な環境で実績的な様々なトラブルシュートが体験できる。
    - 「こういうところ普段も大事だよな」を半日に詰め込んで体験できる
    - 原因の切り分け・絞り込み
    - AWSの各種オブザーバビリティサービスの活用
    - 役割分担・状況共有
- 普段さわってないサービスを触ってみることができる。
- 「嬉しい!」「悔しい...」といったストレートな感情を味わうことができる
- チームを組んだ人と戦友になれる
    - 普段から仕事一緒にしている人と出てもいいし
    - 普段は部署や会社が違う人と出てもいいし

## 準備

登場するサービスが例示されているので、余裕があれば準備をしてもいいかもしれません。
ハンズオンをやってみたり、とりあえずBlackbeltだけは読んでおいたり。

どんなルールで、どうそのサービスが使われるかはわからないため準備が無駄に終わることもあるかもしれません。ただエンジニアとしてはきっと無駄にならないし触りだけでも学ぶきっかけになります。
とは言いつつ自分は、なかなか準備の時間が取れず何もせず当日出たとこ勝負がほとんどでした...

触ったことないサービスを公式ドキュメントやブログを漁りながらなんとか動かしてミッションをクリアした時は脳汁がドバドバ出ました。
普段触っているはずのサービスで見落としがあり時間を大幅にロスした時はデスクに平伏して溜息をつきました。


# 当日
## 環境
- 長丁場なので
    - お腹が減ると力が出ない人は
        - 眠くならない程度に食事とっておく
        - 軽食を用意しておく
        - 僕はチョコを食べています。おいしいので
    - 飲み物
    - トイレ
- マルチディスプレイ推奨
- メンバーとのコミュニケーション
    - オンラインの場合、チャットや音声でコミュニケーションをとる手段は必須
        - 大会側でチーム毎にChimeを準備しておいてくれることも
    - オフラインで集まる場合
        - オフラインで集まってやったことないけど楽しそう...


## 役割分担

並列して複数のミッションや問題にとりかかれることが多い。
事前にチームメンバーの得意分野や普段の業務を、ざっくり自己紹介などで共有しておくと分担しやすいと思います。

- 「◯◯◯触ったことあるんでモジュール２、自分やります」「手空きました、ヘルプ入ったほうがいいとこあります？」「あざす！モジュール３一緒に見てもらっていいですか？」
- 「なんか急激にスコア減ってるんでスコアイベントみてみます」「あ、さっき更新した設定まずかったかな」


## 抑えておくと良さそうなサービス
回によって出てくるサービスは異なりますが、このへんは抑えておくと汎用的に役に立つかも？をリストアップしてみました。

### CloudTrail
攻撃や障害の注入は何者かの手によって行われているはず？。不審な操作がないかCloudTrailの履歴から特定できるかも。

### CloudWatch Logs Insights
ログを漁る機会はきっとある。CloudWatch Logsをフィルターだけで検索するのはしんどい。Logs Insightsを触ったことがあればクエリを書いて柔軟・高速に検索・集計ができるかも。

### Cloud9
手軽に開発環境をホストできるのでハンズオンなどでもよく使われる。少しでもいいので触っておくと、いざというとき抵抗がないかも。

## その他 覚書

 - ルールをしっかり把握する
     - 最初はざっくり理解でもいいが、効率よくポイントを稼ぐにはルールを把握した動きが必要
 - エラーメッセージは落ち着いてちゃんと読む
 - 参加者向けに権限が払い出されているが、操作はあるていど制限されている。許可されていない操作はできないので諦め、他の手段を探す。

## 最後まで諦めない
基本的にイベント後半になるほど配点が高くなっており終盤で逆転することも十分可能
なので最後まで諦めない。
(これは後述の関連リンクの優勝記事にある土持さんが言うてました)

例えば終盤に大量のリクエストがきてうまく捌けば一気に逆転できたり。上位チームが終盤発生した障害にうまく対応できずズルズルと順位を下げたり、といったことがあります。

# 終わりに

ちょうどこの記事を書いている2022年12月21日に「年末GameDay大会 for Top Engineer」というものが開かれていました。私も参加しましたが上位に入ることはできず。悔しい〜！最後ぜんぜんわからんかった〜！その勢いでこの記事を書いています。

この大会の存在を直前まで忘れていて、募集期間ギリギリになってからGameDay一緒に出てみたかった人に社内で声かけエントリーしました。忙しい時期に誘いに乗ってくれたチームメンバーに感謝です！
「今日の結果はふるいませんでしたが、よかったらまたGameDay参加してみてもらえたら」と言ったら「いや〜このままじゃ終われないっすね」という言葉が出たので、この記事を読んでいるあなたと相まみえる日がくるかもしれませんね :wink:


明日はAWS Hero & AWS Samurai & AWS Ambassadorで、活躍はもちろん実際お会いしたときのスケールも大きな[フォージビジョン山口さん](https://twitter.com/kinunori)です！

では、また。

# 関連リンク
- [GameDayに新卒チームで参加してみた](https://iret.media/64800)
- [AWS GameDayで優勝したエンジニアがそれぞれの想いを語る](https://iret.media/51622)
- [AWS Game Day に参加して優勝してしまったくさ](https://iret.media/21678)
- 個人の感想
    - WCでたときの① https://twitter.com/shu85t/status/1567768439904948227
    - WCでたときの② https://twitter.com/shu85t/status/1575206347670691840
    - パートナーのでたときの https://www.facebook.com/shu85t/posts/pfbid0sngh3eMJ114mmMBWUoCFKYsBWbtN5A5jYbRb89DmrTEyEnxfJfhf6ar6c9M92wpHl