はじめに
先日、AWS JumpStart for NewGrads 2022(オンライン開催)に参加してきました!
今回は3日間にわたるイベントの内容を振り返りながら、成果物の紹介をしていきます!
※インターン内容公開の許可をいただいております。
AWS Jumpstart for NewGradsとは?
新人エンジニアの方々を対象とした、3日間の実践的な研修プログラムです。 将来的にAWS活用をリードする人材になるための第一歩をスムーズに踏み出せるようなコンテンツをというコンセプトで企画されているため、単なるAWSサービスの学習だけでなく、チームに分かれて要件に合った適切なアーキテクチャを検討・設計する経験を積む部分にフォーカスした内容となっています。
出典:「新卒エンジニア向け研修プログラム AWS JumpStart for NewGrads のご紹介」
本イベントの参加者は約220名!
ソフトウェア、情報処理サービス(SI)、Web、ゲームなど様々な業界の新卒エンジニアが一堂に会し、ハンズオンやグループワークでのアーキテクチャ検討を通してAWSについて学んでいく研修です。
実施期間
- 9/7(水)~9/9(金) の3日間
プログラム内容
3日間の主な内容は以下の3点になります:
- 3-4人の少人数グループでアーキテクチャ検討(グループワーク)
- AWS EC2・ALB・RDSを用いたスケーラブルなWebアプリの構築(ハンズオン)
- AWS Lambda・API Gateway・DynamoDBを用いたサーバーレスなAPIの作成(ハンズオン)
今回は、その中でもメインイベントである「アーキテクチャ検討」について書いていこうと思います🐬
スケジュール
アーキテクチャ検討(グループ課題)
このプログラムの流れとしては、「3日間でとあるWebサービス(お題)に沿った適切なアーキテクチャの構成をチームで考えて発表しよう」 というものでした。
サービスの概要としては大規模なチャットAPIで、様々な要望や仕様の要求(上記例)をクリアする構成を必死に考えることが求められました。
各日程に1~2回、AWSのソリューションアーキテクトの方にアーキテクチャ構成について質問する時間が設けられており、いかにその機会を上手く活用するかという部分が肝になっていました。
成果
- 費用と工数を抑えるため、Lambdaを用いたサーバーレス構成
- チャットのメッセージはリアルタイム性を持った送受信が必要なためDynamoDBへ
サービスの前提
アプリ概要:
- 自社-会社間のみで使用するチャットサービス
- iOS / Android対応
- 朝 / 昼間にアクセス数ピークの時間帯あり
5つのコア機能:
- アカウント管理(招待/会員登録/ログイン/Profile/削除)
- メッセージ機能(送受信/編集/削除・DM/グループトーク)
- 検索機能(メッセージ・ユーザー)
- グループ機能(作成/検索/退会/削除)
- 通知機能(→デバイス)
検討した5つの観点
①信頼性
リージョンサービスが中心⇒ AZレベルの耐障害性が高いアーキテクチャ
②パフォーマンス
- Auto Scaling/Provisioned ConcurrencyでLambdaの同時実行数制限を緩和
- OpenSearchでDynamoDBの検索性を改善
③コスト
- アクセス頻度の低い画像を安いストレージクラスに移す
- Lambda でアクセス過疎時間帯のコスパを高める
④運用
- 開発_ CloudFormation, Github Actions による自動デプロイ
- ヘルスチェック_ CloudWatch によるLambda監視
- ユーザ管理_ Cognito の利用
⑤セキュリティ
- Cognito + Key Managment Serviceでユーザレベルの暗号化
- S3 のパスレベルでのアクセス制御
感想・学び
3日間のハンズオンとグループワークを通じて、数多くのAWSサービスを組み合わせながら取捨選択する機会が多くありました。研修が始まる段階では、AWSの基礎概念(リージョン、AZ、個々のマネージドサービス)をなんとなく理解しているようなレベルでしたが、運用面やパフォーマンス面を意識しながら研修に取り組むことで、以前には持っていなかった観点でサービスの選定が出来るようになったと思います。