こんにちは、新卒1年目の後藤と滝川と藤岡です!
新人研修の一環としてニフティ2024年度新卒入社の9名がAWS JumpStart 2024 for NewGradsに参加しました!
AWS JumpStart for NewGradsとは?
💡 新卒1年目のエンジニアの方々を対象とした、2日間の実践的な研修プログラム。 将来的にAWS活用をリードする人材になるための第一歩をスムーズに踏み出せるようなコンテンツをというコンセプトで企画されているため、単なるAWSサービスの学習だけでなく、チームに分かれて要件に合った適切なアーキテクチャを検討・設計する経験を積む部分にフォーカスした内容。
プログラムの到達目標
- 一般的なリファレンスアーキテクチャを理解できる
- AWSのコアサービスの概要や選定基準を理解できる
- AWSのアーキテクチャ図を作成する流れを知る
参加するまでやること
事前学習では、システムアーキテクチャ設計の考え方とAWSの主要サービスについて動画を視聴しました。
1.Cloud for Beginners(約40分)
- Webサービスの基礎
2-1.AWS Skill Builder (約4時間)
- AWS の基本的な概念を包括的に
or
2-2.Cloud for Beginners(約2時間)
- Webサービスの基礎(1の続き)
内容
- アジェンダ
- AWSやアーキテクチャ設計に関する講義
- チームに分かれてのWebアプリケーションのアーキテクチャ検討
- ハンズオンワークショップ
実施期間
- 開催日時 (各回2日間)
- 2024 年 5 月 21 日(火)~ 22 日(水)各日 09:00 – 18:00 オンライン開催
- 2024 年 9 月 26 日(木)~ 27 日(金)各日 09:00 – 18:00 オンライン開催
スケジュール
1日目
VPC、ECS Fargate、Application Load Balancer (ALB)、RDSを使用してToDoアプリケーションの構築
- VPCの設定:ネットワーク環境を構築
- ECS Fargateの設定:コンテナ化されたToDoアプリケーションのデプロイ
- AutoScaringの設定
- ALBの設定:トラフィックの分散とルーティングの実装
- RDSの設定:データベースの構築(Writerインスタンス、Readerインスタンスの作成)
システムの耐障害性テスト(Taskを意図的に停止させ、システムの挙動を観察)
- Taskの停止:手動でTaskを終了
- 新しいTaskの立ち上がりを確認:システムが自動的に新しいTaskを起動
- サービスの継続性を確認:アプリケーションが中断することなく稼働し続けることを確認
RDSの構成確認RDSの構成
- Writerインスタンスにフェイルオーバーを行い、Readerインスタンスと入れ替わることを確認
成果
2日目
アーキテクチャ検討
miroを使用し、まずは個人でアーキテクチャを検討していく課題です。
ECサイトの作成を目的として1日目の内容を参考にしながら各自、アーキテクチャ図を作成していきます。
そして、午後からは5人1グループずつほどに分かれ各グループでそれぞれのアーキテクチャ図を発表しました。
各グループは運営の方が決め、初対面の人同士で議論し組み合わせながらチームでひとつのアーキテクチャを完成させました。
以下それぞれ3人のチームのアーキテクチャ図です。
成果
後藤チーム
私たちのチームでは、Amazon ECRでコンテナイメージを一元管理し、Elastic Load Balancerで負荷分散を実現しました。Auto Scalingにより、スケーラブルな環境を構築しています。セキュリティ面では、VPCによるネットワーク分離とIAMを最小権限の原則に則ってアクセス制御を導入しました。さらに、AWS LambdaとAPI Gatewayを活用したサーバーレス構成を採用し、CloudWatchで監視を行っています。データ管理にはAmazon RDSを使用し、クラスタ構成にすることで高可用性を確保しました。外部API連携やCI/CDパイプラインは、AWS CodePipelineとCodeBuildを用いて自動化しています。チームメンバーのAWSの経験が浅い中、1日目や資料を確認しながらなんとか作成することができました。チームメンバー全員のAWS経験が浅かったにもかかわらず、1日目の学びと提供された資料を活用しながら、協力してアーキテクチャ図を完成させることができました。
滝川チーム
私たちのチームでは1日目で作成したToDoアプリをベースに構成図を作成していきました。
意識した点は可用性を高めること、管理の容易さの2点です。
可用性の点では、AZにリソースを分散配置、RDSの冗長化構成の導入、AutoScalingを活用した自動スケーリング機能の実装。
管理の容易さの点では、CI/CDの構築、CloudFrontを利用したコンテンツ配信の最適化、カスタマーサポート用の管理画面へのセキュアなアクセス経路の確立。
実際のAmazon ECサイトをモデルとしてイメージすることで、必要な要素を明確に把握し、効率的に作業を進めることができました。
藤岡チーム
私たちのチームでは2つの可用性ゾーン(Availability Zone 1とAvailability Zone 2)を設定することで、冗長性と高可用性を確保しつつ「Elastic Load Balancing」を中央に配置し、ユーザーからのリクエストが均等に分散されるようにしました。ロードバランサーの後ろには「Auto Scaling」機能で、需要に応じてサーバー数を自動的に増減させています。また、アプリケーションはコンテナとして実行しています。
チームメンバーで全体的にAWSの経験はそこまでなかったですが、1日目の資料を参考にしたり運営の方への質問、さらにAmazon Bedrockを活用することでなんとか形にすることができました。
感想
後藤
AWSについて、業務で少し触れた程度の経験しかありませんでした。アーキテクチャ図の作成を通じて、これまで業務で使用したことのないサービスについても知識を深めることができました。さらに、チームでリソースの必要性を議論する機会があり、実際の業務に近い形で経験を積むことができました。この研修は非常に学びの多いものでした。
滝川
AWS JumpStartでは特に可用性に重点が置かれている気がしました。具体的には、Auto ScalingやRDSのライター・リーダーインスタンス、Application Load Balancer (ALB)の重要性について学ぶことができました。クラウドを利用する上で、セキュリティは利用者自身が責任を持って管理しなければならない領域のため、今回セキュリティについて学べたことは非常に有意義でした。
藤岡
私はAWSを触ったことがある程度の状態で今回の研修に参加しました。2日間の研修の中でも主に実践課題に取り組むことで理解が深まったと感じました。アーキテクチャ検討では、正解は1つではなくチーム内でも様々な意見が出ましたが、生成AIであるBedrockをうまく活用することができチームの方向性が定まっていきました。今回の研修で、答えのないところから構築していくAWSの面白さを感じたとともに生成AIの活用の幅広さを体感できました。