
ネットワーク アプリケーションを作成し、単一の EC2 インスタンス (M1-large) にデプロイしました。
このアプリケーションは、一種のチャット ルームのような機能 (メッセージの送信以外の機能も可能) を備えており、スマートフォンの所有者が最大 5 メートル以内の近い (物理的に) 距離で通信できるようにします。
これは私の初めてのネットワークアプリケーションであり、いくつか疑問や質問があります。
これは非常に限定的なチャット ルームなので (非常に近い人だけが表示されます)、負荷分散をどのように行うかがわかりません。たとえば、ヨーロッパと米国に 2 つのインスタンスがある場合、ヨーロッパのユーザーを前者にリダイレクトし、米国のユーザーを後者にリダイレクトしたいのですが、このリダイレクトを保証できないと、アプリケーション全体が無価値になります。Route 53 を使用してこれを行う方法はありますか? それを実行する意味はありますか? 1 つの大規模なインスタンスで十分ではないですか?
インスタンスの高負荷パフォーマンスをテストしようとしました。そこで、1 時間あたり 20 万件のリクエストをシミュレートする独自のアプリケーションを作成し、他の EC2 インスタンスで実行しました。問題はないようです (一部のリクエストのレイテンシが増加すること以外は、大量の接続を同時に受け入れる際の CPU 使用率が高いため、これは正常なようです)。私の質問は、50 万件のユーザーがいると予想される場合、これは適切な負荷テストのように思えますか。これはかなり漠然とした質問であることは承知していますが、かなり漠然とした回答でも十分でしょう。
セキュリティに関して。セキュリティ侵害のリスクを減らすために、どのような一般的な予防策を講じるべきでしょうか。ファイアウォールですべてのポート (アプリケーションのリスニング ポート以外) を無効にするのは良い考えでしょうか。それとも、それは冗長でしょうか。これもかなり漠然とした質問です。一般的な回答をいただければ幸いです。
ありがとう
答え1
アプリケーションは近接性ベースなので、クロストークをほとんどまたはまったく必要とせずに、異なる地域にサーバーをセットアップできます。Route53 の「レイテンシ ベース ルーティング」機能を活用してください。ほとんどの場合、これにより、ユーザーは最も近いサーバーにアクセスできます。ただし、「地理ベース ルーティング」ではないため、保証されません。単一の大規模なインスタンスと比較して、複数のワールドワイド サーバーの利点は、クライアントとサーバー間のレイテンシが削減されることです。
シミュレーションがユーザーの使用状況を適切に表していれば、結果から多くのことがわかります。1 時間あたり 20 万件のリクエストが 50 万ユーザーのアクティビティを適切に表していれば、問題ありません。そうでない場合は、テストを調整してください。重要なのは、テストが 50 万ユーザーを適切に表していることを確認することです。そうすれば、結果も適切に表されます。
アプリケーションに必須ではないポートについては、セキュリティ グループでポートを閉じます。RDP、SSH、データベース ポートを開いたままにしないでください。アプリケーション ポートのみを開いたままにしてください。