edit-icon download-icon

CDN ベースの OSS アクセラレーション

最終更新日: Aug 01, 2018

バックグラウンド

静的/動的分離なしの従来製品の構造(トラフィックが増加すると、パフォーマンスがボトルネックになる)

静的/動的分離を実装する製品の構造(大量のユーザートラフィックをサポートする)

シナリオ

  • 静的ファイルへの大量のアクセス、高いサーバー負荷、およびI/O問題。ユーザーアクセスが遅くなる
  • 大量の静的ファイルと不十分なストレージ容量
  • さまざまな地域に分散している静的ファイルへの大規模なアクセス
  • 一定期間内の大量のモバイル更新パッケージの高速かつ同時のダウンロード

構造の説明

膨大なファイルボリュームのストレージソースとして、OSS は静的イメージ、ビデオファイル、ダウンロードされたパッケージ、アプリケーションアップデートパッケージ、およびその他のリソースを格納します。OSS は CDN の起点サイトであるため、近くの CDN ノードにアクセスすることにより、CDN 加速配信によって OSS ファイルを取得できます。

構造上の利点:

  • Webサーバーの負荷を軽減し、すべての静的ファイルへのアクセスを CDN に指示します。
  • 最低のストレージ料金を提供します。OSS のストレージ費用は、ECS ディスクの半分にすぎません。
  • 大規模なストレージ容量を提供し、構造的なアップグレードを考慮する必要はありません。
  • 通信費用を最小限に抑えます。少量の追加のバックツーソーストラフィックとは別に、トラフィックの大部分は CDN トラフィックです。そして、それはOSSからの直接アクセスのためのインターネットトラフィックよりもコストがかかります。

ケーススタディ

例として一般的なウェブサイトが使用されています。最近設立されたウェブサイト www.acar.com は、PHP で構築された自動車ニュースとディスカッションのウェブサイトです。メインサイトには 10GB のイメージリソースといくつかの JS ファイルが保存されています。ECS インスタンスは、すべてのプログラムコードを格納するために購入され、MySQL データベースは ECS インスタンスにインストールされます。

アクセストラフィックが増加し続けるにつれて、多くのユーザは、ウェブサイトのアクセス速度が低下し、写真のロードやウェブサイトの応答が時間を消費することを報告している。ウェブサイトの技術スタッフは、ユーザーが画像のアップロード数が増えていることに気付き、合計サイズはすぐに 1TB を超えます。

技術スタッフは、OSS と CDN を使用して、Web サイト構造を最適化して、前の図に示すような静的/動的分離を実現できます。ユーザーエクスペリエンスを向上させ、コストを管理可能なレベルに保ちます。

具体的な解決策と手順は次のとおりです。
  1. より良い管理のために、異なるディレクトリに動的プログラムと静的リソースを格納することによって、ECS インスタンス上の Web サイトプログラムコードを整理します。

    • Web サイトの高精細画像を格納するImagesというディレクトリを作成します。
    • すべてのJSスクリプトを格納するJavascriptという名前のディレクトリを作成します。
    • ユーザがアップロードしたすべての画像と添付ファイルを保存するためのAttachmentという名前のディレクトリを作成します。
  2. バケットを作成します。

    ECS リージョンに基づいてバケットリージョンを選択し、Public Read 権限オプションを選択します。バケット名が ECS インスタンスで作成されたディレクトリの 1 つ(acar-image-bucket など)に対応することを確認する必要があります。詳細については、バケットの作成をご参照ください。

  3. ウェブサイトに HD ビデオと画像のドメインとしてimage.acar.com を入力してください。詳細については、ドメイン名の管理を参照してください。
  4. ファイルをアップロードして CDN 効果を確認します。
    1. ECS インスタンスのステップ 1 で作成した Images ディレクトリ内のすべてのイメージファイルを acar-image-bucket にアップロードします。詳細については、オブジェクトのアップロードを参照してください。OSS クライアントを使用すると、アップロードプロセスを簡単に完了できます。
    2. このファイルの CDN アドレスを取得します。アドレス形式は CDN ドメイン+ ‘/‘ + ‘ファイル名’です。詳細については、オブジェクト URL の取得を参照してください。
    3. 画像ファイルを 1 枚ずつアップロードします。
  5. 前述の手順を繰り返して、他の2つのディレクトリにファイルをアップロードし、CDN ベースの OSS バケット acar-js-bucket acar-csimages-bucket を作成します。
  6. ECS システムでは、静的ファイルのアクセスコードを検索し、アクセス URL を CDN ドメインに置き換えます。ユーザーは、ECS リソースを占有することなく、OSS + CDN モード でWeb サイトの静的ファイルにアクセスします。
    注意
      ユーザーがアップロードしたファイルを acar-csimages-bucket に自動的に同期させたい場合は、OSS SDK と API ドキュメントの PutObject セクションを参照してください。これは、コードレベルで自動アップロードを実行する方法に関する情報を提供します。

CDN 自動リフレッシュ

Alibaba Cloud CDN を OSS ソースとバインドして使用する場合、OSS の CDN キャッシュ自動リフレッシュ機能を使用すると、データが上書きされたときに OSS によって自動的に CDN がリフレッシュされます(例えば、既存のファイルが上書きまたは削除される)。OSS から上書きされたファイルを取得するためにバックツーソース操作が実行されるため、CDN リフレッシュインターフェイスを明示的に呼び出す必要はありません。URL リフレッシュルールは次のとおりです。

  1. CDN domain + / + Object

バケットと CDN ドメインimage.acar.comにバインドした場合、アップロードされたファイルtest.jpgが上書きされていると、URLimage.acar.com/test.jpg が更新されます。リフレッシュされた URL が有効になるまでの所要時間は、CDN の保証されたリフレッシュ時間(通常は 10 分未満)によって決まります。

CDN ベースの OSS アクセラレーションを有効にするには、 バケットプロパティ> ドメイン名管理 ページで、CDN キャッシュ更新 機能を有効にします。