JavaEE アプリケーションがあります。EJB と SOAP を使用する 1 つの EAR。サーブレットを使用するいくつかの WAR。現在、EAR は Glassfish 3.1.2 (コミュニティ エディション) にデプロイされ、WAR は Tomcat または Glassfish サーバーにもデプロイされています。
このアプリは MySQL データベースに支えられており、ほとんどの場合、データベースに出入りするいくつかの些細なデータ マッサージを行います。実質的に静的コンテンツはありません。現在のアーキテクチャでは、事実上、war 自体によって応答できる要求はなく、常に EAR が関与します (再設計によってこれを変更できる可能性があります)。
これは、20 人の同時ユーザーに対してすぐに使用でき、中規模のサーバーで最大 200 人の同時ユーザーに対していくつかの http スレッド プールを微調整することで機能します。
ここで、1,000,000 人のユーザーに対応できるようにアプリケーションをスケーリングする必要があります (これは楽観的な推測ではなく、ビジネスにとって現実的な要件です。「ユーザー」のほとんどは、現場で展開されるデバイスになります)。
1.000.000 の同時ユーザーを処理するためにこのアプリケーションをスケーリングするにはどうすればよいですか? 特に:
- 1 つのグラスフィッシュ サーバーで 200 ~ 500 人を超えるユーザーにサービスを提供できるようにする必要がありますか (あまり要求の厳しい Web アプリケーションの場合)。はいの場合、何を目指すべきですか?
- GlassFish クラスターはオプションのようですが、それはどの程度スケールしますか? それでも、1,000 ~ 2,000 台のサーバーを (クラウドであっても) 実行することは、私にはあまり魅力的ではありません。
- tomcat/glassfish が間違っている場合、代替手段は何ですか?
- 現在、ボトルネックは webapp ですが、ある段階で DB も問題になる可能性があると思います。MySQL はそのようなサイズにどの程度スケールしますか?