AWS Networking RoadShow Gameday 2024 制覇に向けた学習のポイント

## はじめに
　「Japan AWS Top Engineers Advent Calendar 2024」(3日目) ですが、「AWS Networking RoadShow Gameday 2024 制覇に向けた学習のポイント」のテーマで投稿します。
 
　<font color="darkred">AWS Networking RoadShow Gameday 2024</font>にて自らのチームが全てのクエストを制覇し、優勝できたことはメンバと運が大きかったと思ってますが、自身がやれることとしてキチンと事前準備したことは良かったなと思ってます。

　そこで、本記事ではイベントに先駆けて実践した学習のポイントをご紹介します。ネタとしてはネットワークへ寄りがちですが、その他分野も応用できるポイントだと思ってますので、是非ご一読いただけると幸いです。
 
## AWS Networking RoadShow Gameday 2024とは？
　現実世界の技術課題に対して、AWSサービスによる課題解決を目指すAWS主催の学習/競技イベントです。re:Inventで開催された<font color="darkred">ネットワーキング特化型Gameday</font>をベースにしたもので、2024年9月の開催回が日本初でした。

- **対象者**
  AWSとネットワークの基本的な知識があり、Linuxの基本的なオペレーションが出来る方
  　※ 想定レベル 中級～上級
    　
- **スケジュール**
  2024年9月3日 (火)
  　10:30～11:00　オープニング & ルール説明
  　11:00～16:30　Gameday (ランチ、休憩も含む)
  　16:30～17:00　結果発表 & 表彰
   　
- **大まかな流れ**
  　① AWS上でネットワークを構築/運用し、クエストをクリアしたらスコアが増える
  　② クエスト進行でトラブルイベントが発生し、早期解決しないとスコアが減り続ける
  　③ 全チーム (1チームあたり3～5人) の中で、最終的にスコアの高いチームが優勝！
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/d40d3afc-29de-b653-7b67-316036c77dbf.png)

## クエスト制覇を目指すうえで大切なこと
　全てのクエスト制覇を目指すうえでは、「<font color="darkred">スキルとして実践できる</font>」レベルが欲しいです。このレベルに達するため、どのような学習のポイントがあるのかを次のセクションより紹介していきたいと思います。
- 「**知識として理解している**」
　　AWSサービスの概要を理解し、どのように機能するかを説明できるレベル
- 「**スキルとして実践できる**」
　　AWSサービスを実際に構築/運用でき、問題への対処を講じることができるレベル
- 「**人へ教える/情報展開する**」
　　AWSサービスの知識やスキルを分かりやすく教え、情報整理のうえ共有できるレベル

  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/070f2fae-8161-b9cc-cc7d-4f958794f8c6.png)

## 使ったことのないサービスを使ってみる
　当たり前過ぎて恐れ多いですが、使ったことのないサービスは使い方を思い出すではなく調べるところから始まるので、イベントでは大きな遅れとなります。
　マネジメントコンソールや試験ガイドに記載されているネットワークに関わるサービスやスキルを確認し、<font color="darkred">使ったことのないサービスを使ってみましょう</font>。

　マネジメントコンソールの場合、各サービスのメニューを上から順に確認します。また、試験ガイドの場合、各分野/タスクステートメントの対象スキルを上から順に確認します。
　確認したサービスやスキルを以下の基準に照合し、実際に試すかを判断します。試した方が良いレベルについては、学習で確保できる時間等に応じて最終判断かと思います。
 
- 「**試さなくても良い**」
　　普段から実践し、理解が十分のため、試す必要の無いレベル
- 「**試した方が良い**」
　　実践したことはあるが、詳しく覚えていないため、再び試すことが望ましいレベル
- 「**絶対試すべき**」
　　一度も実践してないどころか聞いたこともないため、ぜひ試してみるべきレベル

　
　マネジメントコンソールのVirtual Private Cloud (VPC) の例を以下に示します。気付かない間にメニューが増えていた等はよくあるのではないでしょうか。
 
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/815e0e1d-6c69-46f6-8528-cf2442347c1a.png)

　試験ガイドのAdvanced Networking Specialty (ANS) の例を以下に示します。判断が難しかったり範囲が広かったりするので、参考程度の位置付けで良いかもしれません。

  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/738a9f65-1da2-4742-ecd0-c5493b3e7840.png)

 :::note info
使ったことのないサービスを使ってみるうえでは、手順や資材が提供されている、AWS Hands-On [1] や AWS Workshop [2] の活用もオススメです。
 
[1] https://aws-samples.github.io/jp-contents-hub/#networking-content-delivery
[2] https://workshops.aws/?tag=Networking
:::

## リソースやパラメータの構成まで理解する
　サービス構成を眺めたりハンズオン手順を追ったりするだけでは、作成だけならまだしも設定変更やトラブルシュートなどで応用できず、手を付けるポイントが分からなくなってしまうことはないでしょうか。
　自分の場合、どのようにリソースやパラメータが構成されているかを理解できていれば、手を付けるポイントが鮮明となることもあり、初めて触ってみるサービスは<font color="darkred">リソースやパラメータの構成理解</font>に重点を置きます。

　サービス構成をリソースやパラメータ構成に落とし込む際は、以下のポイントを押さえるように心掛けてます。

- 「**リソース間の関連付けを明確にする**」
　　リソースの依存関係に関わるため、リソースの関連付けを明確にします
- 「**主要なパラメータのみピックアップする**」
　　全てのパラメータは覚え切れないので、主要なパラメータのみピックアップします
- 「**サービスの用語とリソースの役割を覚える**」
　　サービスの用語を交え、何するリソースなのか語れるようにします

　
　一つ目の例として、Cloud Frontのサービス例を以下に示します。
 
　<font color="darkred">ディストリビューション</font>(=エッジ)が持つドメインへリクエストし、キャッシュヒットした場合はそのままレスポンスしますが、キャッシュミスした場合は<font color="darkred">ビヘイビア</font>(=ルール)に従い<font color="darkred">オリジン</font>にリクエストし、データをキャッシングのうえレスポンスしています。
 
　例えば、パスパターンを追加したい場合は新規ビヘイビア/オリジンを作成し、ポリシーを変更したい場合は既存ビヘイビアのポリシーを変更する、などの必要な作業もリソース/パラメータ構成まで理解していることでイメージしやすくなります。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/9ae432fc-1c35-a1f4-c9db-4202933a7f55.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/3bc12d7a-1207-4c49-0ce9-f6065fca09a0.png)


　二つ目の例として、Transit Gatewayのサービス例を以下に示します。

　Transit Gateway～各VPC間は<font color="darkred">VPCアタッチメント</font>を作成します。さらに、Transit Gateway～SD-WAN VPC間はVPCアタッチメントを関連付けた<font color="darkred">CONNECTアタッチメント</font>も作成します。CONNECTアタッチメント内で<font color="darkred">CONNECTピア</font>を作成し、Transit Gateway～SD-WAN Router間でGREトンネルやBGPセッションを確立します。このような仕組みにより、SD-WAN Routerが故障した場合もフェイルオーバーするようになり、高可用性が実現可能となります。

　例えば、Transit Gateway～SD-WAN Router間のBGPセッションが確立できない場合は、VPCアタッチメント、CONNECTアタッチメント、CONNECTピアは問題ないか、などの原因切り分けもリソース/パラメータ構成まで理解していることでイメージしやすくなります。
（このような複雑なリソース/パラメータの構成の場合、Transit Gatewayの箱1個などで表現されるサービス構成だけではイメージすることが難しいかと思います。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/a766b90d-02dc-b37e-f872-72d23d9b2c6d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/191c2822-86db-5dd6-60db-31af9947bd88.png)

## 構築しにくい環境は代替サービスで再現する
　クラウド学習環境は柔軟性とコスト効率が優れており構築しやすいですが、クラウド外部環境が必要なハイブリッド接続環境は構築するハードルが高いです。実回線を準備する場合、最低利用期間のコスト、発注から工事までのリードタイムなどが必要となるためです。
　環境が構築しにくい課題は、Advanced Networking Specialty (ANS) が難しいとされる一因となっているのではないかと思います。本課題に対して、インターコネクトサービスやクラウドサービスなどの<font color="darkred">代替サービスにより構築しにくい環境を再現する</font>方法が有効です。

　代替サービスを選定するうえでは、上記の課題を解決しつつ、そもそも学習環境の意義を損なわないよう、以下のポイントを押さえるように心掛けてます。

- 「**従量課金であること**」
　　学習環境を構築するうえで、可能な限りコストを抑えるため
- 「**即時反映であること**」
　　学習環境を構築するうえで、可能な限り時間をかけないため
- 「**実環境同等のBGP構成が再現できること**」
　　実環境と遜色の無い確認ができ、イメージを深められるようにするため

　
　例として、Direct ConnectとSite-to-Site VPNのハイブリッド冗長構成を以下に示します。

　構築しにくい環境は、専用線もしくは閉域網サービス、オンプレミス環境が該当し、それぞれインターコネクトサービスのFlexible InterConnect(NTT Communications)、クラウドサービスのAWS Cloud(AWS)で代替してます。

　このような方法により、費用や時間を抑えながら、ハイブリッド接続環境を再現可能です。本環境は学習目的であれば有効ですが、実環境でのテストをすべて代替できるわけではありませんのでご注意下さい。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/6a977228-fd7b-7f75-e868-b12d915acdef.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3773513/b80692f9-ed56-0b0e-077b-e80cf7a69d2a.png)

:::note info
Virtual Private Gateway～仮想ルータ間のSite-to-Site VPN接続は、AWS Hands-On[3]でも試すことができます。
 
[3] https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Network2-2022-reg-event.html
:::

## まとめ
　AWS Networking RoadShow Gameday制覇に向けては「<font color="darkred">スキルとして実践できる</font>」レベルに達することが重要であり、そのための学習のポイントをご紹介しました。
- <font color="darkred">使ったことのないサービスを使ってみましょう</font>
- <font color="darkred">リソースやパラメータの構成まで理解しましょう</font>
- <font color="darkred">構築しにくい環境は代替サービスで再現しましょう</font>

## おわりに
　Gamedayの目的は全てのクエスト制覇だけではなく、チームで進める中で新しい気付きや学びも多いので、Gamedayの開催を見かけた方は是非ご参加下さいませ。

　↓いつもは、はてなブログでネットワーク関連のテックブログを書いています。ご興味を持って頂いた方は是非お立ち寄り下さいませ。

  https://yamamototis1105.hatenablog.com/