フロントエンドエンジニアが「AWS クイックスタート」を受講してみた

## 概要

現在企画中の[個人開発プロジェクト](https://note.com/npower_creative/n/n48dc5182423b)について、Firebaseをインフラに据えて実装したプロトタイプから機能の見直しを図って、バックエンドとインフラの再構築を検討しているところです。

完全に個人では網羅できない範囲の選定になるので実際の案件や技術フォーラムを通じて

そんな中先日の7/14(木)、[AWS Builders Online Series(AWS クイックスタート)](https://aws.amazon.com/jp/events/builders-online-series/#agenda)に参加できる機会があり、個人的に近しいフロントエンド向けのセッションがあったので自分なりにまとめたものをシェアしようと思います。


## AWSの学び方

一概にAWSと言ってもサービスの種類やコンテンツが膨大にあるので、進め方次第で学習コストがかなり変わってくる印象があります。
基本的にAWSはインフラのポジションなイメージがありますが、それだけでなくサービスの組み合わせ次第でコンテナやインフラの専⾨知識や深い経験がなくてもアプリケーション構築ができるということも知ることができました。

その最初の部分となる学び方の指標として、セッションで次のような説明を受けました。

- 「概要ベースの知識」：何ができるのか知りたい、知識を得た後に実践する
- 「開発スキル」：まずは手を動かしたい、目的がはっきりしている
のどちらを学びたいか

昔自分もIT業界入りたてでhtmlの勉強をしていた時に使っていた「用語辞典」「逆引き辞典」のような視点だ、と共感した進め方です。
次項では具体的な進め方別の紹介サービスをシェアします。


### コンテンツ別「AWSの全体像を掴もう」
概要ベースの知識ベースで進めたい人向けのコンテンツです。

- マガジン/マンガ ：
    - [builders.flash](https://aws.amazon.com/jp/builders-flash/?awsf.filter-name=*all)
    - [AWSマンガ](https://aws.amazon.com/jp/campaigns/manga/series/)
    - [AWSグラレコ解説](https://aws.amazon.com/jp/builders-flash/202101/awsgeek-well-architected/?awsf.filter-name=*all)

- トレーニング：
    - [デジタルトレーニング](https://aws.amazon.com/jp/training/digital/)
    - [クラスルームトレーニング](https://aws.amazon.com/jp/training/classroom/)
    - [AWS Cloud Quest](https://explore.skillbuilder.aws/learn/course/external/view/elearning/11458/aws-cloud-quest-cloud-practitioner)
    - [AWS Skill Builder](https://explore.skillbuilder.aws/learn)

- ハンズオン/ワークショップ：
    - [AWS Workshops](https://workshops.aws/)
    - [AWS 初⼼者向けハンズオン](https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/)
    - [Build your first CRUD API in 45 minutes or less!](https://catalog.us-east-1.prod.workshops.aws/workshops/2c8321cb-812c-45a9-927d-206eea3a500f/en-US)
    - [AWS Hands-on for Beginners Serverless #1](https://pages.awscloud.com/event_JAPAN_Hands-on-for-Beginners-Serverless-2019_LP.html)


### ユースケース別「開発スキルを学ぼう」
開発スキルベースで進めたい人向けのコンテンツです。

- 担当領域を拡⼤したい：Development tool
    - [AWS CDK](https://aws.amazon.com/jp/cdk/)
        - CDK Workshop
    - [AWS Amplify](https://aws.amazon.com/jp/amplify/)
        - Amplify Workshops

- バックエンドとの繋ぎ込みを実装したい：API
    - [Amazon API Gateway](https://aws.amazon.com/jp/api-gateway/)
        - CDK Workshop
    - [AWS AppSync](https://aws.amazon.com/jp/appsync/)
        - QuickStart

- AWSのバックエンドと連携したダッシュボードを実装したい：Dashboard
    - [Amazon QuickSight](https://aws.amazon.com/jp/quicksight/)
        - セルフハンズオンキット
    - [Amazon Managed Grafana](https://aws.amazon.com/jp/grafana/)
        - One Observability Workshop

- AWSと連携してホスティングしたい：Hosting & CI/CD 
    - [Amazon S3](https://aws.amazon.com/jp/s3/)
        - Tutorial


## AWS Amplify、AWS App Runnerという選択肢

上記を全て取得できたらもちろん万々歳ですが、学習コストを考慮するとなかなか手をつけづらいのも事実。
仕事上で多少の使用経験はあるものの、Dockerなどコンテナ・インフラ周りは疎いという人間にとってはクリティカルなツールのセッションがありました。

- [AWS Amplify](https://aws.amazon.com/jp/amplify/)
- [AWS App Runner](https://aws.amazon.com/jp/apprunner/)

「AWS Amplify」は個人的に前回選定したFirebaseに近しいものがあり、実装が叶わなかった検索機能などをクリアできるなら選択肢として十分というイメージ。
「AWS App Runner」は本来複数サービスを組み合わせて構築するインフラをパッケージで使えたり自分にとってメリットがかなり大きいイメージでした。


## セミナーを受講して固まってきた選定基準
自分のイメージとしては、確実性の高さからこれまでの経験則をもとに開発環境や仕様ツールを選定したいという考えなのですが、もちろんその中で断捨離が必要になる場面も多くあると思います。
今回セミナーで「AWS選定しようかな」と判断するための情報を得られた部分は大きく、トライアンドエラーが発生するパターンももちろんあるでしょうが

- 学習コストを含めた開発期間を短縮できるか
- リリース後サービスとして中長期的に継続できるか
- 成長フェーズの中で構築環境をアップデートする可能性やリスク・コスト

などを総合的に検討しながら進められたらと思います。