見出し画像

AWS セミナー (AWS JumpStart 2022)参加リポート

旅行大好き、ゆこゆこ SRE の @kumagaias です。

この夏に AWS JumpStart という研修プログラムに参加してきました。
気になるけど参加しようか迷っている・・という方向けに、少しでも材料を提供できればと思い書いてみました。

概要

冒頭で謎の CEO からビデオレターが届き、
「チャットサービスを半年後にリリースする必要がありますが、残念ながら既存メンバーは全員退職してしまいました。
時間がないので、皆様には明日までにAWSでのアーキテクチャを考えていただきます!」
という無念極まりないお題が発表され、会場が沸きました。

また、機能要件・非機能要件が書かれたスライドも渡されました。

そちらを元に 2 日間、約 100 名のエンジニアがリモートで参加し、チームに分かれてアーキテクチャ図を作っていきました。

対象者

「AWS初学者のエンジニアの方々を対象」とあります。

  • 業務または個人的に AWS を少しでも触ったことのある方

  • 他のクラウドを触ったことのある方

上記の方ですと、十分に楽しめる内容と感じました。

チームでのアーキテクチャのセッションがメインで、コードは一切書きませんでした。

ですので、AWS は少し触っていて興味あるけどエンジニアではないし・・という方にもオススメですよ。

スケジュール

2 日間、チームでの「アーキテクチャ検討」がメインですが、途中 Fargate のハンズオンもあり、飽きさせない内容でした。

また AWS の SA (Solution Architect) さんによる、各チームへの巡回オフィスアワー (20 分 x 3 セット) もあります。
ここで現役の SA さんにざっくばらんに質問ができることも特徴だと思います。

終わりに成果発表会がありました。
各チーム、工夫した点などを発表し、SA さんや参加者からフィードバックをもらうことができました。

発表会の後は自由参加で懇親会もあり、SA さんと AWS のカルチャーについてざっくばらんに喋れたのも楽しかったです。

費用

無料

きっかけ

日頃お世話になっている AWS の担当者さんに本イベントをご紹介頂きました。
他社の方とアーキテクチャのセッションをする機会は貴重と思い参加させて頂きました。

SRE がまる 2 日間不在になるので大丈夫かな・・?と思ったのですが、上長が「ぜひ行ってきてください!」と背中を押してくれたのも後押しになりました。ありがたや。

参加してみて

チームの雰囲気

私達のチームは 3 名でした。
東京と沖縄からの参加で、リモートならではの交流が面白かったです。

スキル的にはこんな感じだったと思います。

  • 中級者 2 名 (インフラ構築経験あり)

  • 初級者 1 名 (アプリケーションエンジニア)

みんなリモート慣れしているのか、すぐに同僚のような雰囲気で (?) お題に取り組んで行きました。

苦労した点

私も含めメンバー全員「そもそもチャットってどうやって実装すんだ?」からスタートでした。

そのためアーキテクチャが想像もつかず、自己紹介までは順調だったのですが、その後すぐに全員でふ~む (?) な時間が流れました。

そこでオフィスアワー時に SA さんに質問したところ「私達 SA もいきなりアーキテクチャを描くのではなく、その前に実装面の調査をしています。チャットで使う技術を少し調査してみては?」とアドバイス頂きました。

そしてチームで調査をして行く中で WebSocket 等のキーワードがわかり、アーキテクチャに落とし込んでいくことが可能となりました。

個人的に大事にした点

チームワークを大事にしました。
具体的には以下になります。

  • いきなり本題のアーキテクチャを検討し始めず、自己紹介の時間をたっぷり取る (30 分くらい)

  • 最初に 2 日間のチームのタイムラインを決める (ここまでに○○までやりましょうか、など)

  • 休憩時間を明示してみんなで取る

  • 雑談をちょいちょい挟む

  • Slack のチームのチャンネルで自分から多めに発言する

  • 個人ワークの時間 (調査等) も取る

  • オフィスアワーで SA さんに聞くことをみんなで事前に整理する

  • 発言が少なくなってきたメンバーに「○○さん、どう思いますか?不明点はありますか?」などと話をふる

  • 発表会では誰か 1 名が全て喋るのではなく、担当を決めてチーム全員で喋る

そういえばセミナーが始まって私が真っ先にやったことは Slack のカスタム絵文字を追加したことです。
気軽に「ありがとう」や「すごい!」を言い合える関係って働きやすいんですよね。

成果物

私達のチームの成果物を添付させて頂きます。
SA さんも仰っていましたが正解はありません。

アーキテクチャ図

特徴

  • サーバレス

  • 開発速度と開発体験を重視

考察

バックエンド

  • API Gateway

    • Web Socket API

  • Lambda

    • API Gateway も Lambda もリージョンサービスであり、可用性とスケーラビリティが高いため採用。また、使っている分だけ課金されるのでコスト面でのメリットもあります

    • 求められるリアルタイム性が数秒以内だったのでコールドスタートしても概ね問題ないと判断

    • 同時実行数 1,000 は申請すれば緩和されると踏み、当面は問題ないと判断

DB
用途と特性に合わせて 3 つ考えました。

  • メッセージ保存

    • Dynamo DB

      • 性能面で NoSQL の Dynamo DB を採用

  • 会員情報保存

    • Aurora

      • 整合性が求められるので採用

      • リージョンサービスなので可用性も高い

  • メッセージ検索

    • OpenSearch (ElasticSearch)

      • ただし、仕組みを整えるためにはそれなりに実装コストと金銭コストがかかるので、最初のうちは実装を見送るよう PdM へ働きかけてもいいのでは?と生々しい話もしました (笑)

フロントエンド

  • Amplify Hosting

    • 半年後にリリースというお題の前提から、開発スピードと体験を重視

      • CI / CD を 1 から構築する必要がありません

    • こちらは私の経験からですが、フロントのホスティングであれば十分 production ready です

    • PWA もできるようです

認証

  • API Gateway x Cognito

スコープ外

  • ネットワーク

    • 最初は public / private を図に書いていましたが、SA さんに伺ったところ成果物の必須要件ではないとのことだったので、今回はより本質に注力したかったため省きました

勉強になったこと

サービスレベル

アーキテクチャを考える上で AWS のサービスレベルを意識することが大事だと改めて勉強になりました。

  • グローバル

    • CloudFront, WAF など

  • リージョン

    • API Gateway, Lambda, DynamoDB, Aurora など

  • AZ

    • EC2, RDS など

      • 可用性を高めるためには Multi AZ にしたりする

上に行くほどマネージドサービスのため可用性が高いです。

例えば Aurora は RDS に比べて料金が高いイメージがありますが、内部で冗長化されているので 10 分未満のダウンタイムが許容できれば Multi-AZ にする必要は無さそうで、実は RDS に比べて料金が安くなりますね〜、などと会話しました。

インフラもユーザーファースト

チャットアプリはどんなサービスか?
ユーザーストーリーを自分たちで設定してから、そこに向かってアーキテクチャ検討していたチームがありました。

また、SA さんの解答例では REST でのエンドポイントを軽く出して、アプリケーションの通信の流れを手書きで図にしてからアーキテクチャ検討していたのも印象的でした。

アプリケーションもインフラも、ユーザーの課題解決のためにあると再認識できました。

終わりに

普段の業務で、アーキテクチャのパターンを複数用意して比較検討する機会はなかなか無いので大変勉強になりました。

成果発表会では「なぜこのアーキテクチャになったのか」を深堀りすることができ、大変楽しかったです。


ここまでお読み頂きありがとうございました!

ゆこゆこでは一緒に働いてくれる仲間を募集中です!
ぜひお気軽にご連絡頂ければ幸いです!
https://www.yukoyuko.co.jp/recruit/employeevoice/