メインコンテンツへスキップ
AWS New Gradsの体験共有と所感について
  1. blog/

AWS New Gradsの体験共有と所感について

目次

こんにちは!

オズビジョン開発ユニットの木山です。

先月初めてAWS New Gradsという初学者向けの研修に参加しました。

それはとても素晴らしい経験だったので、今日はこのブログでその経験をシェアしたいと思います。

AWS New Gradsとは?

まず始めに、「AWS New Gradsって何?」と思っている方もいるかもしれませんね。

AWS New Gradsは、基本的に新卒1年目の方を対象にしたAWS公式の研修プログラムです。

私が参加したのは “AWS JumpStart 2023 for NewGrads 設計編"というセッションでした。

公式の情報によると、

“クラウドの入り口となるパートナー限定セミナーです。新入社員に特化したトレーニング「AWS New Grads Training」そして、新入社員以外の皆様向けトレーニング「はじめてのクラウド」を開催しています。「クラウドとは?」といった内容からAWSの学び方までお伝えします。IT初心者にも伝わる構成となっており、AWSを学ぶ最初の一歩として広くご利用いただけるセミナーです。”

AWS 初学者向け AWS パートナーのラーニングパスご紹介

つまり、これはAWSの入り口を学ぶためのセミナーなんです。

(ちなみに、私は新卒ではなく、社会人歴は既に4年目ですが、それでも参加は可能でした!)

さらに詳しく言うと、この研修では、「こんなサービスを作りたい!」と思い立った後、AWSでどのような構成が最適なのかを理解できるようになります。

具体的には、予想されるアクセス数、予算、可用性など、さまざまな要素を考慮した上での最適な構成を考えることができます。

しかし、AWSに詳しくない方や、インフラを他のチームが担当していて詳しくない方は多いと思います。

また、一年間の無料枠はあるものの、サービスの量が多すぎてどこから手をつけていいかわからない、または予期せぬ課金が怖いと感じてなかなか手を出せない方も多いと思います。

そんな方々にとって、この研修は大変おすすめです!

それでは、以下では研修の内容について時系列で詳しく書いていきたいと思います。

AWS New Gradsでの体験

私が参加した回は、“第一回:2023年5/31 (水) - 6/2 (金)“で、3日間開催されました。

業務時間に研修に参加させていただいたので、ここでは日ごとに研修の内容を詳しく紹介していきます。

1日目

1日目は、午前中にアーキテクチャ設計のコツを学び、午後はスケーラブルなサービス構築についてのハンズオンがありました。

アーキテクチャ設計のコツ

アーキテクチャ設計のコツでは、Webアプリケーションの基礎から学びました。

サーバーとクライアントの通信の仕組みを理解することで、AmazonのWebページでどのような通信が行われているのかを具体的に学びました。

その後、アーキテクチャ設計について学びました。

フェーズごと、目的ごとに目指すべき形が変わること、そしてそれぞれのフェーズが大きくなるにつれて考えなければならないことを学び、アーキテクチャ図を作成しました。

day1_ architecting.png

具体的には、最初はプロトタイプを想定したWebサーバーとDBだけの図から始め、DNSやロードバランサなど、一般的なサービスに必要となる要素を追加し、さらに各要素を同じ役割のAWSサービスに置き換えていきました。

day1_ architecting.png

このセッションを通して、アーキテクチャとは規模によって最適解があり、大きくなればなるほど考慮すべき点が増えるということ、そしてAWSサービスそれぞれの役割について理解することができました。

スケーラブルなサービス構築のハンズオン

スケーラブルなサービス、とは要は、必要に応じてサクッとリソースを調整できるタイプのサービスのことですね。

そんなサービスを、実際に手を動かしてAWS上に構築してみる、というのがこのハンズオンの趣旨です。

具体的には、ToDo管理アプリのアプリケーションコードが提供されていて、このコードをFargateで運用し、データはAuroraDBで保持するアプリを実装しました。

day1_scalable_1.png

始める前に、まずはpdfを使ったAWS Console上での操作説明をしてもらいます。

それからは、自分たちでpdfを参照しながら、一心不乱に作業を進めていく形です。

完成したら、以下のような構成図が出来上がるはずです。

day1_scalable_2.png

もし、作業を進めていて何かわからないことがあったら、AWS Solution Architectの方々(以下、SAと略す)に気軽に相談ができます。

2日目

2日目の午前中はEC2体験ハンズオン、そして午後がチームでアーキテクチャ検討アクティビティとなっていました。

それぞれの時間で何をやったか、詳しく書いていきましょう。

EC2体験ハンズオン

EC2体験ハンズオンでは、EC2で手軽なサーバーを立てて、その動作確認を進めていきました。

具体的には、まずはEC2インスタンスを立てて、その上でhttpdをインストールし、EC2で動かします。

そして、httpdのデフォルト画面がURLでアクセス可能であることを確認しました。

以下のような構成で行いましたが、最後には、この構成だとEC2に問題が発生した場合には問題が生じるため、それに対する対策が必要であることを確認して、午前中のハンズオンはそこで一旦終了となりました。

day2_ec2.png

アーキテクチャ検討アクティビティ

午後からはクリエイティブな時間が始まりました。

テーマが与えられ、チームでそのテーマに合ったアーキテクチャを考えるアクティビティです。

AWSの研修だけあって、さまざまな会社から新卒を中心とした若手エンジニアが集まっています。

参加者からランダムに5人ずつグループを作り、アーキテクチャについて思い切り語り合います。

社外のエンジニアとこんなに緊密に協働する機会ってあまりないので、新鮮な体験でした!

お題については詳細に語ることはできませんが、ざっくりしたイメージを伝えると、

「ある程度のユーザー数を見込んだ、こんなWEBサービスを作って欲しい!」

といった感じでお題が出されます。

それに対して、まずは動作する最低限のサービスの組み合わせは?

さらに、可用性も考えたときにどういった構成が良いのか?

そして、コスト面も考えるとキャッシュの活用や、画像などの静的データの取り扱いはどうすべきか?

などを、チームで議論しつつ、AWSのサービスアーキテクチャ図を作成します。

最初の講義やハンズオンで学んだものをベースにしながら、「これを使えば低コストになるかも」

「自分たちの会社では、こんなサービスをログ出力に利用しているんだよね」

など、現場で実装をするときの視点でディスカッションを重ね、最終的に一つの図に落とし込んでいきました。

そしてその成果物がこちらです。

(ちなみに、DynamoDBはVPCの外にあるべきなど、まだ見直すべき点はいくつかありますね汗)

day2_output.png

3日目

3日目が最後の日となり、午前中はサーバーレスハンズオン、そして午後は再びアーキテクチャ検討アクティビティで盛り上がりました!

これまで通り、午前と午後のセッションでやったことを記録していきます!

サーバーレスハンズオン

始めに行ったのはサーバーレスハンズオンです。

AWSのサーバーレスなサービスを使って、何か手軽に作ってみよう!

というテーマで、具体的にはAWS LambdaとAPI Gatewayを用いて、URLに含まれるクエリ文字列の日本語を英語に翻訳するAPIを作りました。

そして、翻訳がうまくいったことを確認したら、その翻訳履歴をサーバーレスサービスのDynamoDBに保存し、それが確認できるようにするという流れでハンズオンを進めました。

day3_serverless.png

アーキテクチャ検討アクティビティ

そして最後のセッションとなるのが、再度のアーキテクチャ検討アクティビティです!

前回作成したアーキテクチャに大きな影響を与える新たな要件が出てきました。

今日学んだサーバーレスな要素も踏まえて、新たな要件が追加された場合、どのような構成がベストなのか?再度、図を作って考えていきました。

(またもや、お題は内緒です!それは参加したらのお楽しみですよ!)

3日目になると、チームメンバーとも打ち解け、雑談混じりに楽しく話し合いができました!

中には早速ChatGPTを本格的に利用している人もいて、困ったときは調べてもらったりしてました(笑)

そんな中で最終的に出来上がった図はこちらです。

day3_output.png

2日目の内容から改良を重ね、結構しっかりできたんじゃないかな?と自負しています!

研修はこの図の作成で締めくくり、時間の都合上、いくつかのグループに対してSAの方からフィードバックをもらう時間を設け、研修全体が終了となりました。

多数のチームが図を作る中、各チームがどのような意図を持って図を作ったのかを見るのも、新たな発見がありました。

ちなみに、自分達のチームはフィードバックをもらうチームには選ばれませんでしたが、他チームがもらっていたフィードバックの一部はこんな感じでした。

分析
- RDS->S3のデータコピーを行うLambdaは定期実行ですか?全てのデータを取得するか、差分取得か。それはどのように実装するのか。15分制限は超えないか。
- Lambdaが参照しているRDS、これはなにか?上のAuroraとは別クラスタ?
- RedshiftやAthena色々選択肢があって悩ましいですよね。今回Athenaを選定した理由はなんですか?
- S3にはどのようなフォーマットで配置するのか
- 余談ですが、今回のサイトってどういうBIダッシュボード作りそうでしょうか。事業KPIは何ですか。それを計算するためのデータはRDSに格納されそうですか

CICD
- 今回GitHub Actionsを採用した理由はなんですか?Code Pipelineなども選択肢にはあったはず。
- GitHub ActionsからECSへのデプロイは具体的にどのように行いますか?ロールバックなども対応しているもの?Blue/Greenデプロイ、ローリングアップデートといったデプロイ戦略も知りたいです。
- CIとかも実装するんですかね(皆さんの会社はCICDなども実装されていますか?)

等

これらのフィードバックは私たちのチームにも当てはまる部分が多く、新たな視点を得られてとても有益でした。

AWS New Gradsの体験感想

いかがでしょうか?驚きの多い3日間でしたよね?

私がこの研修を受けるまで、AWSの一部のサービスは知っていましたが、全体のビジョンはまだ見えていませんでした。

たとえば、S3はオブジェクトキーを持ち、あらゆるファイルを保存できるストレージ、っていう基本的な知識はありました。

けれど、リクエストが発生してからサーバーが応答を返すまでの流れ、どのサービスがどのように連携し、最終的にS3がどのように動くのかという全体像は把握していませんでした。

この研修を通じて、リクエストの始まりからサーバーからの応答まで、AWSでどのようなルートを辿り、どのようなサービスが連携し、最終的にどのような形になるのかという全体像を理解できました。

さらに、研修が終わった直後に私たちの会社のAWS構成図を見てみたら、その構成と意図が理解でき、それが大きな驚きでした!

また、講義とは別の話ですが、いろいろな会社から参加していたエンジニアたちとの交流も本当に楽しかったです。

私は人見知りなので、普段は聞くだけ、見るだけ、読むだけの勉強会に参加することが多いのですが、この研修の経験は今後、コミュニケーションが必要な勉強会やハンズオンにも積極的に参加してみたいと思わせる良いきっかけとなりました。

少なくとも私は、この研修で一生の宝物となる知識を得ることができたと思っています!

もしAWSを使用していて、このような研修に参加する機会があれば、ぜひ体験してみてください!

開催は年に数回と思われるので、機会に出会うこと自体が難しいかもしれませんが、絶対に後悔しないと思いますよ。そのことだけは伝えておきたいと思います。

長くなりましたが、最後まで読んでいただき、ありがとうございました!