2016-06-01 6 views
1

の位置I、次のものを有する:アーキテクチャ:コンポーネント

1)ジャンゴ+トルネードサーバーは(SQL DB)が離れている

2)Redisの

3)のRabbitMQ

4 )ランディングページ(静的)

5)電子メールサーバー()は、DjangoとTornadoと同じDBに接続されています。

私の質問:それらをすべて同じ物理サーバー(インスタンス)にインストールすればいいですか?

または、私が(1,2,3)と(4,5)のように分けるのに最適な方法は?

多くのリソースが使用されているように見えるので、電子メールサーバーが心配です。一方、そこに登録されているユーザーは4人以下です。

同じマシンにインストールした場合のアプローチのセキュリティはどうですか?

答えて

2

ご質問はご使用のアプリケーションによって異なりますが、しかし私は個人的な経験、学習したレッスン、他の場所で読んだベストプラクティスに基づいて一般的な答えを出すことしかできません。

答えが得られれば、解決すべき最高のアーキテクチャを理解するのに役立ちます問題:

1.スケーラビリティ

ソリューション内の各サービスの利用パターンは何ですか?他のサービスを拡張することなく、需要の高いサービスを拡張することができますか?

あなたは(いくつかの点で)RabbitMQのサービスからより高いスループットを必要とし、同様に電子メールサーバーをスケールアップすることなく、負荷に追いつくために、クラスタ内の複数のインスタンスを追加しますか?

2.一貫

あなたが同じサービスの複数のインスタンス間でワークロードを分散するためにどのような戦略を使うのでしょうか? (レプリケーション、パーティショニング、クラスタリング、シャーディングなど)

RabbitMQは負荷分散されたクラスタで動作できます。多分あなたのメールサーバーはできませんか?

3.あなたがそれらをスケールアップした場合、一部のサービスは、より良い実行できる効率

(複数のインスタンスを追加)ないうち、(それらでより多くのCPU/RAMを投げます)。

4.セキュリティ

に賢明な選択これが大きな話題ですが、私は個人的に必須と考えるいくつかのこと:

あなたのサービスのほとんどは、攻撃される可能性があり、エンドポイント(TCPソケット)を公開します。すべてのサービスを厳格なファイアウォールの内側に置いて、最も重要なポート(シナリオではWebサーバーとメールサーバー)を公開するだけです。可能であれば、サービスは認証と検証を行う必要があります。システム全体。

関連する問題