私は、独自の JVM で顧客ごとに Java アプリケーションを実行するシステムを扱っています。現在、合計で 100 近くの JVM を実行している約 6 台の専用サーバーと、これらの JVM を管理するための一連のカスタム スクリプトがあります。この設定は、この時点で本当に古くなっています。多くの JVM を管理することは監視/管理の悪夢になりつつあり、私たちは常にヒープ サイズの問題に対処しています。より最新のアプローチに移行し、物理マシンごとに 1 つのアプリ サーバーで多数のアプリケーションを実行したいと考えています。ただし、アプリケーションを分離することには、分離という点で明確な利点があります (たとえば、メモリ不足エラーは 1 人の顧客にのみ影響します)。各顧客のソフトウェア スタックには、大きく異なるメモリ要件があります。
私の質問: ここで両方の長所を生かし、複数のアプリケーションを 1 つの JVM (アプリケーション サーバー) で実行しながら、ある程度の分離を維持する方法はありますか? それとも、最近では一連のアプリケーションのメモリ要件を管理する必要があるというのは、単なる現代の現実なのでしょうか? アプリサーバーや Java EE コンテナー (Wildfly や Spring など) 以外に、ここにないソリューションはありますか? このシステムは別の時代からのホールドアウトのようです!