グローバルに移行する
前のユニットでは、コンピューティングのスケーリングについて説明し、プロセスで使用できるようにしました。 また、シャーディングを使用して Azure SQL データベースのパフォーマンスを向上させ、スケールアウトするために、Azure Cache for Redis を追加することをお勧めしました。
次のステップは、ビジネスの成長に合わせて、グローバルに移行することです。 ただし、完全にグローバルなアーキテクチャを実装する前に、いくつかの点を考慮する必要があります。
確認事項
最初の質問は次のとおりです。本当にグローバルに移行する必要がありますか?
そのようなタスクを実行する前に、お客様が抱えている問題を把握しておくことが重要です。そのため、さらにいくつかの点を確認してください。
- コンテンツ配信ネットワークを通じてユーザーにコンテンツを近づけることができますか?
- この特定のシステムを 2 つ (またはそれ以上) の地域に拡張する必要が本当にありますか? たとえば、米国のユーザーが英国でまったく同じアカウントを持っている必要はありますか? 独立したシステムの方が適していませんか? このパターンは、eコマースでよく使われています。
- グローバルに分散されたシステムが本当に必要な場合は、データベースにどのような整合性が必要ですか? 世界中での厳密な整合性は、正しく実現することが困難であり、Cosmos DB などのサービスでは許可されていません。この原因は、文字どおり光の速度です。
データの整合性
データの整合性の問題についてもう少し詳しく見てみましょう。
データベース システムの整合性は、いかなるデータベース トランザクションも、許可されている方法でのみ影響を受けるデータを変更できる必要があるという要件を指します。 分散コンピューティングでは 2 つの整合性モデルが使用されています。
厳密な整合性を実現できれば、線形化可能性が保証されます。 読み取りでは、アイテムの最後にコミットされたバージョンが返ることが保証されています。
次に結果整合性があります。これは時間の経過と共にデータベースまたはシステムで最終的に整合性が確保されることを意味します。 読み取りの順序の保証はありません。 さらに書き込みがない場合、レプリカが最終的に収束します。
グローバルに移行するためのツール
アプリケーションをグローバルに拡張する必要があることがわかった場合は、それを実現するために役立つ Azure サービスがいくつかあります。 Azure Traffic Manager と Azure Front Door を見てみましょう。
- Azure Traffic Manager は、DNS ベースのグローバルな負荷分散サービスです。 DNS と正常性プローブを使用して、定義したルーティング ポリシーに基づき、最も適した正常なバックエンドにユーザーをルーティングします。 これは、パフォーマンス、場所、ラウンド ロビンなどに基づいて定義することが可能です。 正常なバックエンドが特定されると、クライアントは常にそのバックエンドに直接接続します。
- Azure Front Door Service は、サービスとしての Application Delivery Network (ADN) であり、さまざまなレイヤー 7 負荷分散機能をアプリケーションに提供します。 動的サイトの高速化 (DSA) と、ほぼリアルタイムのフェールオーバーによるグローバル負荷分散を実現します。 これは、Azure によって完全に管理される可用性と拡張性に優れたサービスです。
Azure Front Door は基本的に、HTTP ベースのグローバルなロード バランサーです。 クライアントは Front Door 自体との接続を確立するため、Front Door ではユーザーの要求がプロキシ化されます。 要求された項目がキャッシュ内にない場合は、正しいルーティング規則が特定されます。 次に、関連するバックエンドの正常性プローブが確認されます。すべて正常であると仮定すると、ユーザーの要求はルーティング方法に基づいて最適なバックエンドに転送されます。
接続は Azure Front Door によってプロキシ化されるため、Web アプリケーション ファイアウォールの実行などの高度な機能を実行できます。また、キャッシュを使用すると、スケーリングに役立ちます。 これらの機能はどちらも Traffic Manager では実現できません。
この図は、両方を組み合わせて使用する方法を示しています。
このセットアップでは、Traffic Manager を使って、ストレージ アカウントの静的資産に対するシンプルな DNS ベースの負荷分散を実現します。 また、Front Door を使って、App Service と VM にわたる Web アプリケーションのパスベースのルーティングを実現します。