プロジェクトアーキテクチャの計画

プロジェクトアーキテクチャの計画



計画の必要性



プロジェクトのアーキテクチャを完全に忘れて、すべてのリスクをサービスプロバイダーの肩に移そうとする誘惑が常に非常に大きいと言っても、私は間違いないと思います。 すべてを1つのサーバーに展開し、インフラストラクチャを節約し、節約した予算をプロジェクトのプロモーションに費やします。これらはすべて、プロジェクトが訪問される前に機能します。



インターネットプロジェクトの人気が計画的な形で現れることはめったにありません。通常、広告会社によって生成されるトラフィックの爆発的な増加、新しい興味深い製品機能のリリースです。 トラフィックの増加時にプロジェクトのアーキテクチャのスケーリングの準備が整っていない場合、予算の一部を無駄にするリスクがあります。 次に、アーキテクチャを構築し、柔軟な水平スケーリングのためにプロジェクトを準備するためのオプションを検討します。



計画中



フォールトトレラントシステムを構築するには、サーバーからの応答を受信する前にユーザーの要求を渡すプロセスを完全に理解する必要があります。 また、プロジェクトのさらなる発展について事前に考える必要があります。そうすることで、アーキテクチャの問題のために成長することが不可能になることはありません。 プロセス全体を、クライアント要求とアプリケーション側でのクライアント要求の処理という2つの独立した部分に分けましょう。



顧客の要求



インターネットの現在のアーキテクチャでは、クライアントからエンドシステムへのほとんどの要求はドメイン名を使用して発生します。 したがって、DNSレコードは、クライアントのアプリケーションのエントリポイントを定義します。 DNSレコードを使用すると、アプリケーションへの複数のエントリポイント間でユーザー要求のバランスをとることができます。これにより、1つのドメインに対して複数のAレコードを作成することで、システムの予約が少し増えます。



リクエスト処理



要求がエントリポイントを通過した後、それ以降のパスはアプリケーションのロジックのみに依存します。 この段階で、楽しみが始まります。 すべてのアプリケーションはユニークであり、アドバイスすることは困難ですが、ほとんどのプロジェクトの開発を検討した後でも、一般的な例を使用してこのプロセスを分析することができます。開発プロセス自体は全体的に同じであるため、唯一の違いは特定のレベルからアプリケーションを起動することです アプリケーションがその寿命を開始するステップが高いほど、将来の維持と拡張が容易になります。



開発例



まず、最も単純なサービススキームであるコンテンツ生成サーバー+データベースを検討します。 通常、最初は、お金を節約するために、すべてが単一のサーバー内に展開されます。 原則として、アプリケーションの起動時に、このオプションは負荷を理解するのに適している場合があります。 そのようなサーバーは適切に最適化でき、サーバーリソースが完全に使用されるまですべてが完全に機能します。 その後、何らかの方法で追加の容量が必要になりますが、それらを追加することは非常に重要なタスクになります。 この手順の誰かがデータベースを別のサーバーに配置するだけで(クラスタリングとフォールトトレラントデータベースの構築については説明しません)、一定量のリソースを解放しますが、一般にこれは問題を解決しません。 次のステップは、別のサーバーへのフロントエンド(エントリポイント)の作成/削除です。これにより、コンテンツ作成サーバーを簡単に追加できます。 この段階では、少なくとも3つの独立したサーバーが既に用意されており、それぞれのリソースは特殊なタスクに完全に使用されています。これにより、各タスクのサーバー構成をより明確に決定する機会が得られます。インフラストラクチャコストを最適化する機会がここにあります。 必要に応じて、フロントエンドサーバーを安全に追加し、それらのAレコードを追加できます。 また、フロントエンドの前にバランシングサーバーを配置することをお勧めします。そうすれば、ユーザー要求を渡すプロセス全体を完全に制御できます。 ロジックの以降の構築はすべて、アプリケーションによって完全に決定されます。 このようなスキームは次のようになります。



プロジェクトのアーキテクチャ



結論



プロジェクトの初期段階からアーキテクチャを計画する必要があり、開発プロセスで多くの時間と労力を節約できます。 プロジェクトのアーキテクチャを計画するときは、細かな部分にも注意を払う必要があります。 また、主なポ​​イントを覚えておく必要があります。

1.各プロジェクトサービスの予約。

2.フロントエンド間のバランス。

3.バックエンド間のバランス。

4.データベースのクラスタリングと個別の削除。



プロジェクトの成功した実装と柔軟なスケーリング!



All Articles