私の仕事では、いくつかの既存の Enterprise Java アプリケーションを AWS に移行する必要があります。私は aws.amazon.com の多くのページに目を通し、十分にグーグルもしました。また、stackoverflow で関連するすべての質問を調べてみました。これらすべてにより、多くのことが明らかになりましたが、私はまだ混乱しています。アプリケーション構造は次のとおりです。
- これは、Spring MVC をプレゼンテーション レイヤーとして使用し、ビジネスおよびデータ ロジックを処理するためのプレーンな Java インターフェイスおよびクラスを使用する Spring ベースのアプリケーションです。
- MySQL は永続化のために使用されます。
したがって、アプリケーション アーキテクチャは十分に単純です。ただし、問題は、このアプリケーションの多くのインスタンスをデプロイする必要があることです。この数は現在 15 で、30 を超える可能性があります。もう 1 つのポイントは、これらすべてのインスタンスが共通のデータベースを共有していることです。
AWS に移行することで達成する必要があるのは次のとおりです。
- アプリケーションの耐障害性が向上します。最近、専用ホスティングでサーバー/電源障害に直面し、数時間のダウンタイムが発生しました。
- 応答時間とスループットに関して、アプリケーションのすべてのインスタンスのパフォーマンスが向上します。
- MySQL の耐障害性が向上しました。最近、一部のハードウェア (ハード ドライブ) が原因で、サーバーの 1 つでアプリケーション インスタンスがダウンし、基本的に MySQL が予期せず停止しました。ハード ドライブのファイル システム全体が読み取り専用になり、そのサーバーでホストされているアプリケーション インスタンスの誤動作が発生しました。
- インフラストラクチャ管理の総コストとオーバーヘッドを明らかに削減します。
これまでAWSインフラストラクチャを理解できる限り、セットアップのためにAWSで必要なものは次のとおりです。
- Tomcat と MySQL がインストールされた EBS ベースの LINUX AMI の 4 つのインスタンス。それぞれが約 10 のアプリケーション インスタンスをホストします。
- これら 4 つのインスタンスのそれぞれに対して、フォールト トレランス用に 1 つのインスタンスが必要であり、合計で 8 つのインスタンスが必要になると推測しています。
- すべてのサーバー インスタンスには、約 160 GB の EBS があります。
- 4 つのエラスティック IP
- 4 つのエラスティック ロード バランサー
- スナップショットなどのその他のもの
ここに私の質問があります:
EBS が AWS によって自動的にバックアップされ、ハードウェア障害が発生した場合に新しい EBS に同じデータを提供することを考えると、メイン サーバー インスタンスごとに追加のサーバー インスタンス (フォールト トレランス用) が本当に必要ですか?
上記のシナリオで、すべてのサーバー インスタンス (4x2) 間でデータベースを共有するにはどうすればよいですか? 私が見ている 1 つのオプションは、これらのサーバー インスタンス間で MySQL クラスタリングを実装することです。たとえば、MySQL クラスターに 1 つの管理ノード、3 つの SQL ノード、および 4 つのデータ ノードが含まれているとします。ただし、この場合、クラスターを維持することは私たちにとって追加のオーバーヘッドになり、インフラストラクチャ管理を取り除きたいため、これは受け入れられない可能性があります.
データベースの代わりに RDS を使用し、すべてのサーバーインスタンス (4x2) から MySQL インスタンスを削除する必要がありますか? はいの場合、EC2 インスタンスに加えて RDS インスタンスを購入する必要がありますか (RDS 用に別のインスタンスを購入する必要がある場合、インフラストラクチャ全体のコストは少なくとも 75% 増加すると思います)、または RDS インスタンスはコンピューティング ユニットも提供します。アプリケーション開発のために、アプリケーション展開のためのインスタンスの総数を減らしますか?
RDS 実装の場合、EBS ベースの EC2 インスタンスが本当に必要ですか? RDS インスタンスを配置した EC2 インスタンスから EBS 要件を取り除くことができれば、総コストを削減できます。
問題を特定するのが明確でなく、任意の点についてさらに明確にする必要がある場合はお知らせください。