背景
静的、動的分離のない従来のプロダクトの構造は、トラフィックが増加につれてパフォーマンスがボトルネックになります。
静的、動的分離を実装しているプロダクトの構造は、柔軟な構造により大量のユーザートラフィックをサポートします。
シナリオ
- 静的ファイルへの大規模なアクセス、高いサーバー負荷、および I/O の問題により、ユーザーアクセスが遅延
- 大量の静的ファイルと不十分な記憶域スペース
- さまざまなリージョンに分散している静的ファイルへの大規模アクセス
- 一定期間内に大量のモバイル更新パッケージを高速かつ同時にダウンロード
構造の説明
大容量ファイルボリュームの保存先として、OSS に静止画像、ビデオファイル、ダウンロードパッケージ、アプリの更新プログラム、その他のリソースが保存されます。 OSS は CDN の起点サイトであるため、OSS ファイルは近くの CDN ノードにアクセス、 CDN 高速配信を通じて取得されます。
構造の利点
- Web サーバーの負荷を軽減し、すべての静的ファイルへのアクセスを CDN に指示します。
- ストレージの使用料金を最小限に抑えられます。 OSS のストレージ料金は ECS ディスクのわずか半分です。
- 構造的なアップグレードを考慮する必要なしに、大容量の記憶容量を提供します。
- トラフィック料金を最小限に抑えられます。 少量の追加起点検索トラフィックを除いて、トラフィックの大部分は CDN トラフィックです。 OSS から直接アクセスするインターネットトラフィックよりも低コストです。
ケーススタディ
例として、一般的な Web サイトを使用します。 最近設立された Web サイト www.acar.com は、 PHP に基づいて構築された自動車のニュースおよびディスカッションをする Web サイトです。 メインサイトには 10 GB の画像リソースと、いくつかの JS ファイルが保存されています。 ECS インスタンスはすべてのプログラムコードを格納するために購入され、MySQL データベースは ECS インスタンスにインストールされます。
多くのユーザーは、アクセストラフィックが増加するにつれて、画像のロードやウェブサイトの応答など、Web サイトのアクセス速度が遅くなることを経験している、という報告があります。 Web サイトの技術スタッフは、ユーザーがアップロードする画像の数が増えており、合計サイズがすぐに 1 TB を超えることを認識しています。
技術スタッフは、OSS と CDN を使用することで、Web サイトの構造を最適化し、前の図に示した静的、 動的分離を実現します。 それにより、ユーザーエクスペリエンスを向上させ、コストを管理可能なレベルに保つことができます。
- 管理を容易にするために、動的プログラムと静的リソースを別々のディレクトリに格納し、ECS インスタンスの Web サイトプログラムコードを整理します。
- Web サイトの高精細画像を保存するため、"Images" というディレクトリを作成します。
- すべての JS スクリプトを格納するため、 "Javascript" という名前のディレクトリを作成します。
- ユーザーがアップロードしたすべての画像と添付ファイルを格納するため、"Attachment" という名前のディレクトリを作成します。
- バケットの作成
ECS リージョンに基づいてバケットのリージョンを選択し、アクセス許可オプションで [公開読み取り] を選択します。 バケット名が ECS インスタンスで作成されたディレクトリのいずれかに対応していることを確認する必要があります。例: "acar-image-bucket" 詳しくは、「バケットの作成」をご参照ください。
- Web サイト上の HD ビデオと画像のドメインとして、「image.acar.com」を入力します。 詳しくは、「ドメイン名の管理」をご参照ください。
- ファイルをアップロードして CDN の効果を確認します。
- ECS インスタンスの手順 1で作成したイメージディレクトリにあるすべての画像ファイルを、"acar-image-bucket" にアップロードします。 詳しくは、「オブジェクトのアップロード」をご参照ください。 OSSクライアントを使用すると、アップロード処理を簡単に完了できます。
- このファイルの CDN アドレスを入手します。 アドレスの形式は "CDN ドメイン + / + ファイル名" です。 詳しくは、 「オブジェクト URL の取得」をご参照ください。
- 画像ファイルを 1 つずつアップロードします。
- 上記の手順を繰り返して、他の 2 つのディレクトリにファイルをアップロードし、CDN ベースの OSS バケット "acar-js-bucket" と "acar-csimages-bucket" を作成します。
- ECS システム内で、静的ファイルのアクセスコードを見つけ、アクセス URL を CDN ドメインに置き換えます。 ユーザーは、ECS リソースを占有することなく、OSS + CDN モードで Web サイト上の静的ファイルにアクセスします。
説明 ユーザーがアップロードしたファイルを自動的に "acar-csimages-bucket" に同期する場合は、OSS SDK と APIドキュメントの PutObject のセクションをご参照ください。 上記のページでは、コードレベルで自動アップロードを実行する方法に関する情報を提供しています。
CDN 自動リフレッシュ
CDNドメイン + / + オブジェクト
たとえば、アップロードされたファイル test.jpg
が、CDN ドメイン image.acar.com
にバインドされたバケットに上書きされると、OSS は image.acar.com/test.jpg
の URL を更新します。 最新の情報に更新された URL が有効になるまでに必要な時間は、CDN により保証される有効になるまでの更新時間によって決まり、通常 10 分未満で更新されます。
CDN ベースの OSS アクセラレーションをアクティブにするには、バケットのドメイン管理ページで、[CDNを最新の情報に更新] を有効にします。