WebSocketプロトコルを使用するインタラクティブなレンダリングサービスをデプロイしたいと思います。このサービスはコンテナ化されており、最大N(たとえば、1 <= N <= 10)のクライアントにサービスを提供できます。 Nが小さい理由は、新しい接続ごとに、かなりのリソース要件を持つ新しいプロセス(コンテナー内)が作成されるためです。アプリケーションロードバランサー、サービスロードバランサー、AWS Fargateなどに関するチュートリアルをいくつか読みました。これらの負荷分散戦略は、主にCPU負荷またはメモリ使用量に焦点を当てています。しかし、「接続ベース」のルーティングを行うドキュメントは見つかりませんでした。
「現在の」コンテナ(タスク?)の1つが(ほぼ)「席を外している」ときに新しいコンテナ(タスク?)を起動できるAWSテクニック/サブシステムはありますか?ルーティングでは、それ以上の接続を「フル」コンテナにルーティングしてはなりませんが、そのフルコンテナの既存の接続を削除してはなりません。コンテナ(タスク?)に接続がなくなったら、不要なリソースを過剰に消費しないように、コンテナを停止する必要があります(最後のコンテナでない場合)。
あなたはこのサービスの作者/開発者ですか?あなたが説明したものが適切でスケーラブルなアーキテクチャではないので、あなたはあなたがそれをよりよく再設計するでしょう。
あなたが述べた要件に到達できる最も近いものはAWS Lambdaを使用することです-ラムダはリクエストごとに作成されます。つまり、1つのクライアントがある場合、1つのラムダが実行されます。 100個のラムダが実行されています。自動的に。通常、フロントエンドとしてAWS API Gatewayを指定してLambdaを使用します。
[〜#〜] alb [〜#〜]、[〜#〜] ecs [で同じことを行う〜#〜]、Fargateなどは、開発する必要のある複雑なオーケストレーションを必要とします。私はそのようには行きません。
Lambdaを使用するか、バッチ処理などに再設計します。
それが役に立てば幸い:)