web-dev-qa-db-ja.com

AWS Fargateサービス:ゼロにスケーリング?

最近、FargateとAurora Serverlessを使用して小さなウェブアプリケーションをAWSに移行しました。アプリケーションはあまりトラフィックを取得しないので、私の目標は、誰も使用していないときにコストを節約することです。 Aurora Serverlessは、これをDB側で自動的に行うようです。

ただし、Fargateサービスをゼロにスケーリングする方法に関するリソースを見つけるのに苦労しています。

その前にALBがあり、ALBリクエストカウントをスケーリングに使用できることを知っています...理想的には、たとえば10分間の平均でリクエストが0の場合、サービスはタスクをゼロにスケールダウンします。その後、リクエストが届くと、サービスの1つのタスクのスケールアップがトリガーされます。

5
computmaxer

正確にどのように機能するかわかりません。正常なALBターゲットがない場合、ALBは503エラーを返すため、訪問者はWebサイトではなくエラーページを表示します。これによりmayがFargateコンテナの起動をトリガーしますが、多くの場合数十秒、場合によっては1分以上かかることもあります。コンテナが稼働するまでに、ビジターはおそらくなくなってしまいます。

アイドルコストがゼロの真にサーバーレスなWebサイトが必要な場合は、APIを使用して実装する必要があります。

  • frontendファイル(HTML、CSS、JS)をS3に配置します
  • [〜#〜] api [〜#〜]を介して動的コンテンツをロードします
  • ラムダ関数に動的機能を実装する
  • APIゲートウェイを使用してラムダを呼び出します
  • DBはAuroraサーバーレスまたはDynamoDB On-Demand

このアーキテクチャは、アイドル状態のときは費用がかからず、訪問者に即座に応答します。


更新:Fargateサービスを0タスクに縮小する場合は、サービスのDesiredCount0に設定することで確実に実行できます。 。それは、例えば行うことができます。 aws-cliを通じて:

~ $ aws ecs update-service ... --service xyz --desired-count 0

これをDevで実行する場合は、手動で、またはcronジョブから、またはからUpdateServiceを実行することをお勧めしますスケジュールされたLambda関数。どちらの方法でも、タスクを夜に0に設定し、翌営業日に1に戻すことができます。これは、非常に低いトラフィックではそれほど信頼できないAutoScalingに依存するよりも簡単です。

それが役に立てば幸い:)

7
MLu

上記の応答に合うようにアプリを書き直すのが選択肢ではなく、費用もかからない場合は、GCP CloudRunを調べることができます

CloudRunは、GCPによって開発されたサーバーレスコンテナです。 Webサイトをコンテナーにパックすると、CloudRunはリクエストと起動時にCPU使用量ごとにのみ課金します。最小限のコストでアプリを実行できる、本当に優れた無料枠もあります。

したがって、最小限のコストでAmazon AuroraとGCP CloudRunを組み合わせることができ、アプリを書き直す必要はありません。

2
Jimmy