はじめに
こちらの学習リソース集をもとに「Amplifyとは」について要点を整理する。
スタートアップが AWS Amplify を使うべき3つの理由
https://aws.amazon.com/jp/blogs/startup/techblog-3reasons-amplify/
Amplify CLI
- AWSのバックエンド構築のインターフェース
- コマンドラインから対話形式にバックエンドを構築可能
- 認証機能やAPI、リアルタイム通信、ホスティングの基盤が作れる
Amplify Framework
- AWS のバックエンドと連携する処理をわずかな行数で記述できる クライアントフレームワーク
- CLIと組み合わせてバックエンドの開発とアプリケーションとの統合を低いコストで実装可能
Amplify Console
- ホスティングやCICDを自動化するマネージドサービス
- 柔軟な開発フローの設計が可能
スタートアップが AWS Amplify を使うべき3つの理由
- 本質的な作業に集中して早くリリース可能
- 認証関連が楽に構築できる。
- 認証の仕組みを提供する
- JWTを用いたユーザセッションの管理やリソースへのアクセス管理を移譲できる
- Websocketを用いたリアルタイム通信の基盤を構築したい
- RESTやGraphQLのAPIエンドポイントを構築可能
- AppSyncのプロビジョニングも可能
- スケールしやすい
- DynamoDBやLambda、AppSyncによるバックエンドで構築されるため再構築の必要がない
- ビジネス成長に伴う環境の変更に強い
- 開発環境の変化
- 複数の環境を用意する機能がある
- ブランチごとにテスト環境を構築することが可能
- ビジネスニーズの変化
- サービスが大規模になるとCDKなどを用いたバックエンドの構築が必要になるかも
- Amplifyは併用できる
フロントエンドエンジニアに捧げるAWS Amplify Console
https://dev.classmethod.jp/articles/aws-amplify-console-guide-lines-for-frontend-engineer/
- Amplify Consoleは静的WEBサイトのホスティングができるサービス
- Amplify Console
- 静的なWebアプリケーションをホスティングするサービス
- Gitリポジトリ(GitHub・GitLabなど)や手動アップロードをソースとして自動・手動デプロイが可能
- 設定に基づいてビルド・単体テスト・E2Eテスト・デプロイまでを制御できる
- Amplify CLIを使用しているプロジェクトの場合はバックエンドまで合わせてデプロイができる
- https://aws.amazon.com/jp/amplify/console/
- スタンダードな開発フロー
- Pull Request
- 自動でビルド、ユニットテスト、E2Eテストされ結果がPull Requestに通知
- レビュー用のサーバーを立ち上げプレビュー
- レビュアーが確認してマージ プレビュー環境を削除
- マージされデプロイ
- CICD
- Basic認証(IPアドレスの制限は不可)
- リダイレクト設定(SPAに必要)
フロントエンドエンジニアのためのAWSアーキテクチャ
https://speakerdeck.com/tmizuma/hurontoentoensiniafalsetamefalseawsakitekutiya
関連するサービス
- 認証 >>> Cognito
- API基盤 >>>API Gateway, App Sync
- コンピューティング >>> Lambda
- CICDパイプライン >>> Amplify Console
- データストア >>> DynamoDB
- ストレージ >>> S3
- エッジサービス >>> CloudFront
AppSync
- DynamoDBをはじめとするデータリソースにアクセスするためのGraphQL基盤を提供
- GraphQL
- 型指定されたスキーマ
- クライアントからのレスポンスの形式を指定
アーキテクチャ
- SPA
- バックエンドはAPI層、コンピュート層、データ層となりAmplify CLIから対話的にデプロイする
- ホスティングはAmplify Consoleから行う
- CI/CDパイプラインを組めばgit push でデプロイも可能
- Amplifyが想定する最もシンプルなアーキテクチャ
- SSRの構成
- SPAよりもインフラのコンポーネントが一つ増える
- AWSへのデプロイにServerless Frameworkを用いる
- レンダリング層にCloudFront,Lamdbda@edgeを使用
- レンダリング層をServerlessFrameworkを利用してデプロイする
AWS Amplify実践編
https://speakerdeck.com/jaguar_imo/practical-aws-amplify-at-aws-dev-day-2020
- Amplify SNS Workshopがおすすめ
事例等の記事を読む
コーポレートサイトを誰にも気づかれず静的化したときの技術選択について
https://developer.hatenastaff.com/entry/2020/07/22/120000
- コーポレートサイトを静的サイトへ再構築
- CI/CDの構築がサポートされていてプレビュー環境へのアクセスやリダイレクトの柔軟さが決めて
- GraphQLのスキーマを書いておくとLambdaやDynamoDBのプロビジョニングがされてLambdaをバックエンドにしたGraphQL APIを簡単に作成可能
- 自動化する際に考えるべきことが少なくなりリリースが簡単に
AWS Amplify で実現する DX 時代のマインドチェンジ
https://speakerdeck.com/ksukenobe/aws-amplify-deshi-xian-suru-dx-shi-dai-falsemaindotienzi
- アジリティ
- 小さく初めて合格点を目指す
- 素早くリリース、何度もリリース
- Amplifyを利用してアジリティの実現を目指す
- どんなアプリにも必要な物だけどアプリそのものの価値ではないもの
- Amplifyはコマンドで片付けられる
- Amplifyですべて片付ける必要はない
Amplifyで実現した開発期間15日の路面電車乗務員勤務管理システムのフィールドテスト事例について
https://pages.awscloud.com/rs/112-TZM-766/images/EV_awsamplify-meetup-0731_Jul-2020_LT1.pdf
- Amplifyでバックエンドを楽にしてフロントエンドに集中できる
- 各AWSソースをあまり意識する必要がない
Amplify 山あり、谷あり奮闘記
https://speakerdeck.com/jyamamoto/amplifyshan-ari-gu-arifen-dou-ji
- 課題
- 実装の属人的なブレ
- リリースの手間
- 確認環境の取り合い
- 運用のオペレーションミス
- リリース後の障害
- リリース後の障害に関して、E2Eテストで対応⇒Amplify Consoleのデプロイ時間で中止している
- ポイント
- AmplifyですべてやるのはNG
- CloudFormationの基礎があると楽
他に読んだ事例などの記事