見出し画像

AWS JumpStart 2024 for NewGradsに参加してきました!

はじめに

みなさんこんにちは!
ワンキャリアでエンジニアをしている村松です。

先日、AWS JumpStart 2024 for NewGradsというプログラムに参加してきました。AWS完全初心者の私にとって本当に学びの多い2日間だったので、その記録としてこの記事を書くことにしました。以降の章で、プログラムの内容や当日の様子、参加前と後でどのような変化があったのかなどを振り返っていきます。JumpStartに興味がある方や、私のようなAWS初心者の方の参考になれば嬉しいです。



AWS JumpStart 2024 for NewGradsとは?

AWSが主催する、新卒1年目のエンジニアなどAWS初学者を対象とした研修プログラムです。AWSのサービスを用いたアーキテクチャ設計を、ハンズオンや課題を通して実践的に学ぶことができます。プログラムは2日間にわたって行われ、総勢400名ほどが参加しました。


事前知識について

参加前の私の知識レベル

プログラムに参加する前の私の知識レベルはかなり低かったと思います。どれくらいかというと、「AWSのサービスはEC2とRDSだけギリギリ知っている」「アーキテクチャ図(ロゴとロゴが矢印で繋がれたあれ)を見てもわけがわからなくてパニックになる」くらいです。しかし、与えられた事前学習課題をしっかりこなしていくことで、足りないクラウドの知識を補うことができ、それ以外に特別な準備をしなくても当日のプログラムについていくことができました。

事前学習課題

事前学習に使用する教材は以下から選ぶことができ、私はCloud for Beginners(オンデマンド動画)を視聴してから参加しました。

実際に受けてみて、その質の高さに驚きました。重要な点がわかりやすくまとまっていて、細かい言い回しにも気を配っている印象です。AWS公式が出しているものなので信頼性も高く、初学者の勉強にうってつけです。

これらの教材はJumpStartに参加していない人でも無料でアクセスが可能ですので、ぜひ受講してみてください。


1日目

初日の午前中は、AWSの基本的な概念やサービスについての講義が行われ、実際にハンズオンでシンプルなシステムを構築するセッションもありました。
そして午後からは、午前に構築したものとは別のシステムを立ち上げ、そのシステムに対していくつかの実験を行いました。
今回構築したシステムの内容は以下の図の通りです。

このシステムはこのような流れで処理が動きます。

  1. ユーザーはまずALB(ロードバランサー)にリクエストを送信します。

  2. ALBは、2台のECSタスク(Webサーバー)にリクエストを振り分け、負荷を分散させています。

  3. その背後にはAurora(データベース)があり、書き込み用のWriterと、読み取り用のReaderの2つで処理を分散させています。

なお、サービスの中身は運営の方々が用意してくださったTodoアプリです。

1つ目の実験:フェイルオーバーの観察

1つ目の実験は、2台あるうち1台のECSタスクまたはAuroraを停止させてみる、というものです。
ALBは自身の背後にあるサーバー群に対し、ヘルスチェックを行なっています。これにより、サーバーに問題が生じるとALBが検知して他の健康なサーバーにトラフィックを割り振ることができます。
このように、サーバーに問題が生じたときに他のサーバーに自動で切り替える機能をフェイルオーバーといいます。今回は実際にサーバーを落としてフェイルオーバーを観察してみようということです。

まず、下準備として、マネジメントコンソール上で利用できるシェル環境であるCloudShellを使って以下のコマンドを実行し、1秒ごとに1回リクエストを送る設定をしました。

dns_name=<作成したALBのDNS名>
while true; do TZ=JST-9 date; curl $dns_name/items; echo; echo; sleep 1; done

次に、タスクを1つ停止します(タスクの停止操作はマネジメントコンソールから行えます)。停止してからCloudShellを確認すると、数秒「502 Bad Gateway」等が表示されることもあるそうですが、私の場合502を見ることもなく、すぐに正常なレスポンスが返ってきました。フェイルオーバーが成功したようです。
次に、マネジメントコンソールから Aurora(DB)の停止を実行してみました。すると、数秒Internal Server Errorが返ってきたものの、すぐに正常なレスポンスが復旧しました。フェイルオーバーが成功したことがわかります。

2つ目の実験:メトリクスの観察

まず、apacheBench(ab)というベンチマークツールを使って大量のリクエスト(この例では1,000,000回)を送る設定をします。以下のコマンドをCloudShellに打ち込みます。

dns_name=<作成したALBDNS名>
sudo yum install -y httpd-tools
ab -n 1000000 -c 10 http://$dns_name/items

結果は以下のようになりました。

実際にリクエストを送って、1分あたりに捌いているリクエスト数や応答時間、CPU使用率、メモリ使用率などをマネジメントコンソールから見ることができました。また、CloudWatchなどのサービスを使えば、メトリクスを監視してアラームを出したり、オートスケーリングの設定をしたりすることができるそうです。


2日目

個人でのアーキテクチャ検討

「ユニコーン・リレーション合同会社の新入社員として、新しくローンチ予定のUnicorn EC(ECサイト)のAWSでのアーキテクチャを今日中に考えて!」というお題にあわせ、午前中は個人でアーキテクチャの検討を行いました。私がその日実際に考えたアーキテクチャがこちらです。

大枠は1日目に構築したシステムのアーキテクチャを参考にしています。
1日目に構築したものに加えて、図の右上の方では、S3・CloudFrontという2つのサービスを組み合わせて静的コンテンツの高速配信を可能にしています。また、図の左側ではCloudWatchを使ってメトリクスを計測しています。

チームでのアーキテクチャ検討

午後からは、チームでのアーキテクチャ検討を行いました。最終的に完成したアーキテクチャ図はこちらです。

与えられた要件を満たしながら、それ以外の観点、例えばスケーラビリティやセキュリティ、ユーザーエクスペリエンスなども考えながらシステムを設計する必要があり、チーム全員で頭を悩ませました。
結果、私たちは、WAFの導入によりセキュリティを強化し、ECSとCloudWatchの連携によってオートスケーリングできるようにしました。また、PersonalizeとForecastによってUnicorn ECにレコメンデーション機能を実装するなど、想像を働かせて工夫をこらしました。この作業は正直とても難しかったです。
具体的なシステムアーキテクチャを自分たちで考え出すには、私たちが普段使っているシステムなどがどのようにして動いているのかの深い理解が必要です。また、AWSのそれぞれのサービスの特徴や違いについても、よく理解している必要があります。
自分たちの持てる力を振り絞ってアーキテクチャ図を作り上げたことで、達成感があったと同時に、自分たちに足りない部分も明確に見えてきたグループワークでした。


その後

アーキテクチャのアの字もわからなかった私が、2日後には(もちろん不完全な部分も多いけれど!)自分でアーキテクチャ図を書くことができたという感動的な体験をしてから、AWSへの関心は高まっていくばかりでした。その後も勉強を続け、11月にはSolution Architect Associateの認定試験を受けようとも思っています。将来的にはインフラやクラウドの知識も併せ持った開発者になりたいと思っています。

苦手意識のあったクラウドに対する態度が大きく変わったのは、JumpStartに参加させてもらい、充実した2日間を過ごしたからに他なりません。


おわりに

最後に、今後もっと勉強したい人(自分)のために、運営の方々が紹介してくださった勉強リソースを貼っておきます。

AWS Black Belt Online Seminar

AWSスキルビルダー

AWS Hands-on for Beginners

AWS JumpStart 2024 for NewGradsは、知識ほぼゼロの私でも心から楽しむことができ、大きな学びを得ることができたプログラムです。
次回の募集がはじまったら、ぜひ応募してみてはどうでしょう。


▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら

▼カジュアル面談を希望の方はこちら

▼エンジニア求人票


いいなと思ったら応援しよう!

この記事が参加している募集