amplify を調べる

aws amplify
現状の理解
- S3 と cloudfront を使って、静的ファイルを配信しつつ、backend も用意してくれる、infra template のサービス
- SPA app や、フロントエンドが得意なエンジニアが使うようなイメージ
- CLI 周りが少し整備されておらず、大変だという話を何度か聞く
知りたいこと
- そもそもどういう仕組みなのか
- デプロイしたアプリケーションをスケールさせることができるのか

AWS Amplify
フルスタックのウェブアプリケーションとモバイルアプリケーションを数時間で構築します。開始も簡単、スケールも簡単
React Native にも対応している
amplify studio (GUI) と amplify CLI がある
amplify のライブラリの中に Datastore などのパッケージもある。これを使えば AWS sdk を直接使わなくて良いとか、そんな形だろうか

Chat GPT
AWS Amplifyに関するレポート
1. AWS Amplifyとは?
AWS AmplifyはAmazon Web Services(AWS)のフルスタック開発サービスの一部で、クラウドリソースとアプリケーションの作成、デプロイ、およびホスティングを簡単に行うことができるツールセットを提供しています。Amplifyは、フロントエンド開発者が、認証、API、ストレージ、サーバーレス関数などのバックエンド機能を簡単に追加できるように設計されています。
2. 主な特徴
- 静的ホスティング: Amazon S3とAmazon CloudFrontを使用して、静的ウェブアセットを全世界に高速に配信します。
- バックエンド機能の追加: GraphQLやREST APIのようなサービスを簡単に統合できます。
- フルスタックアプリケーション: クライアントサイドとサーバーサイドの両方のコードを一元的に管理します。
3. 仕組み
Amplifyは、フロントエンドアプリケーションとクラウドリソースを連携させるCLIツール、JavaScriptライブラリ、UIコンポーネントを提供しています。CLIを使用すると、AWSサービスを設定してデプロイするための環境を生成することができます。また、JavaScriptライブラリを使用すると、これらのクラウドリソースをフロントエンドから直接アクセスするための認証やAPI呼び出しを簡単に実装できます。
4. スケーラビリティ
AWS AmplifyはAWS上に構築されているため、Amazonのインフラストラクチャを利用して簡単にスケーリングすることができます。例えば:
- Amazon S3: データは自動的に複数の施設に冗長に保存されるため、高い耐障害性が確保されます。
- Amazon CloudFront: グローバルなネットワークを通じてコンテンツを迅速に配信するためのコンテンツ配信ネットワーク(CDN)サービス。
また、他のAWSサービス、例えばLambdaやDynamoDBといったサーバーレステクノロジーも、トラフィックが増加した場合に自動的にスケーリングします。これにより、アプリケーションが大規模なユーザーベースにスケールする際の手間を大幅に減少させることができます。
5. 考慮点
AmplifyのCLIやフレームワークには独自の学習曲線があります。CLIの機能や設定は時々複雑であり、特定のカスタマイズが求められる場合、深い知識が必要となることがあります。そのため、Amplifyを選択する前に、チームの技術的スキルやプロジェクトの要件を慎重に評価することが重要です。
まとめ
AWS Amplifyは、フロントエンドとバックエンドの開発を効率的に統合し、高速にデプロイするための強力なツールセットを提供します。AWSのインフラ上に構築されているため、スケーラビリティの面で非常に優れていますが、最大の効果を得るためには、Amplifyの独自のツールとフレームワークに習熟する必要があります。

Amplifyだとapp routerの機能に制約がある
Computingでセルフホストすれば、全ての機能が使える。この場合も自分でcloudfrontでキャッシュ戦略は可能

Amplify のバックエンドはlambdaかAPI gatewayで動きそうなので、いずれにせよスケールしないことはないが、不安定になるのでは、という懸念がある

Coldstart問題はありつつも、ベストプラクティスを意識すれば、そこまで問題ないのかもしれない。