cdnの仕組み。 定期放送。 コンサルティングではなく、なぜCDNなのか
適切なコンテンツ配信ネットワークを使用して、サイトの2つの重要な指標であるパフォーマンスとセキュリティを改善します。
ウェブページの読み込み速度が遅いことを好む人はほとんどいません。 事実はそれ自体を物語っています:
- ロード時間が6秒から1.2秒に短縮された後、Shopzillaの収益は12%増加しました。
- Amazonは、ページの読み込みが1秒遅れると、年間16億ドルの売り上げが失われる可能性があると見積もっています。
- 買い物客の21%は、サイトが遅い場合にショッピングカートを放棄します。
- Googleは検索結果に関してウェブサイトの読み込み時間を考慮に入れているため、速度は収益に影響を与えるだけではありません。 高速読み込みを使用すると、検索結果の上位に移動できます。
適切なサイト保護の欠如は、ハッカーにとってより簡単になり、あなたの評判とあなたのビジネスに損害を与えます。
Cloudflareが提供する以下の機能のいくつかは無料で利用できます:
- グローバルにバランスの取れたCDN。
- コンテンツキャッシュ、インスタントキャッシュクリア;
- IPv6;
- WebSocket;
- Restful API
- 基本的なDDoS保護。
- TLS 1.2、1.3;
- Cloudflareによって発行された証明書。
- HTTPSにリダイレクトします。
- コメント内のスパムに対する保護、コンテンツの盗難に対する保護。
- 作業とセキュリティの脅威の分析。
- 特定のページのパラメータを設定できるページルール。
セキュリティの優先度が高い場合は、PROプラン、またはアプリケーション用のファイアウォール、イメージの最適化、モバイルデバイス用の最適化などが利用できるさらに高度なバージョンを検討するのが理にかなっています。
Cloudflareアプリケーションでの作業は注目に値します。 これにより、追加のインストールなしで特定の機能を簡単に実装できます。 たとえば、コードを変更せずにGoogle Analytics、PingdomSwiftypeを使用できます。
Cloudflareを使用しているのは誰ですか?
グラフはCloudflareの人気を示しています( 約。:Alexaによると、Cloudflareは上位100万サイトの78.61%の市場シェアを持っています)。 最も著名なクライアントは次のとおりです。
- Feedly
- Mozilla
- Digitalocean
- Udacity
- CodeGuard
- ゾピム
- スタックオーバーフロー
3.データパス
DatapathはAWSとの統合を提供します。これにより、サイトの速度が向上し、トラフィックコストが削減されます。 データパスはIaaS(サービスとしてのインフラストラクチャ)を指し、ネットワークを完全に管理し、遅延、コスト、および帯域幅に基づいてトラフィックをルーティングできるようにします。一言で言えば、Datapathはトラフィックを最適化し、AWSのレイテンシーを削減します。
無料版には以下が含まれます:
- 1つのエラスティックIP。
- 待ち時間の最適化;
- トラフィックモニタリング;
- 1か月あたり500Gbのトラフィック。
オリンピスキスポーツコンプレックスでの大規模なビジネス会議の高品質なオンライン放送を組織するという課題に直面したときに、CDNvideoに連絡しました。 多数のオンライン視聴者を期待し、リスクを最小限に抑えたいと考えていたため、そのようなサービスと高品質の保証を提供した豊富な経験を持つ企業を選択しました。 幸いなことに、私たちは間違っていなかったので、良い選択をしました! ビデオコンテンツの配信速度、画質、音質は、イベント全体で最高でした。 また、CDNvideoテクニカルサポートの応答性と顧客重視にも注目したいと思います。 リクエストに応じて、文字通りイベントの前日に、プレーヤーのデザインを修正しました。これにより、さまざまなブラウザやモバイルデバイスへの適応性、DVR機能、その他のハイテクなどのすべての利点に加えて、オプション、それはまたサイトの私達の企業スタイルに完全に適合します...
完全に表示アナスタシアミハルコ
私たちはCDNvideoと6年以上協力してきました(ほとんど会社の設立当初から)。
CDNvideoの助けを借りて、ChansonTVおよびCountryFM TVチャンネルのライブ放送を、当社のWebサイト、モバイルアプリケーション(iOS、Android、Windows Phoneプラットフォーム)、およびスマートTVアプリケーションで放送しています。 TVチャンネルに加えて、CDNvideo RadioRocksを介して放送しています。
2016年の終わりに、CDNvideoは新しいHTML5プレーヤーをリリースしました。 このプレーヤーの助けを借りて、VKontakteソーシャルネットワーク(公式グループで放送されるアプリケーション)でTVチャンネルの放送を開始することができました。
ヴァシリーポキドコ
シャンソンTV /カントリーFM
私たちの問題を解決するために、私たちは可能な限り短い時間で非標準的なソリューションを提供することを恐れない信頼できる長期的なパートナーを必要としていました。 CDNvideoは、これらの要件に完全に準拠しています。 私たちは長期的な協力に自信を持っています。
完全に表示ATOMI RUS、マーケティングディレクター、Anton Lambrianov
2016年に会社との提携を開始しました。 その瞬間、彼らは私たちを大いに助けてくれました。なぜなら、競争の前夜に、私たちは競争を放送するためのプラットフォームがなかったからです。 そして、当社のウェブサイトhttp://www.russwimming.ruを通じて放送することが必要になりました。 CDNvideoは、すでに会社との協力の豊富な経験を持っている同僚から私たちに勧められました。 評判の良い会社を見つけ、定期的に高品質で途切れることのない放送を得ることが重要でした。
最初の放送を準備する過程で、私たちは迅速で質の高い、しかし同時に、素人にとって非常に理解しやすい相談を受けました。
同社は非常に誠実で、信頼性が高く、積極的でプロフェッショナルです。
最初のプロジェクトで問題が発生しましたが、会社は連絡を取り、エラーを迅速に修正しました。 週末でも困ることはありませんでした。
放送に加えて、ビデオストレージプラットフォームへのアクセスを注文しました。 また、会社の管理が及ばない理由で、ビデオ付きのディスクの転送とポータルへのタイムリーな配置で問題が発生した場合、CDNvideoは状況から抜け出す方法を見つけ、将来的にサービスを使用することを提案しました。プラットフォームでのブロードキャストの自動記録と保存の方法-したがって、追加のアクションを必要とせずに、サーバーでのオンラインブロードキャストの終了直後に完成したファイルを取得します。あとは、サイトにコードを配置するだけです。 すでにCDNvideoサービスを繰り返しビデオ放送の企画に活用しており、さらに実りある協力を計画しております!
アレクサンドラネクラソワ
全ロシア水泳連盟
オンラインゲームの分野で働いており、ゲームコンテンツを迅速かつ効率的に提供する義務があります。 特に、テクニカルサポートの迅速な対応とネットワーク障害の最小数に感謝します。 私たちの協力は2年以上続いており、その間、CDNvideoは信頼できるパートナーであることが示されています。
完全に表示ある時点で、私たちのサイトのオーディエンスとサイトの負荷が非常に大きくなり、ホスティングプロバイダーがそれに対処するのをやめました。 サイトはフリーズし、サポートサービスは非常に長い遅延で応答し、すべての通信はチケットを介してのみ行われました。 質問への回答は数時間後に届きました。これは私たちにとって非常に重要でした。 その結果、GPUCloud社のサービスを利用することにしました。 まず第一に、テクニカルサポートサービスは非常に心地よい印象を与え、不必要な問題なしにサイトをあるホスティングから別のホスティングに移すのに役立ちました。 現在、サイトは安定して動作し、負荷に完全に対応しています。ご不明な点がございましたら、Telegramで24時間年中無休でサポートサービスをご利用いただけます。 同社の価格政策は、一般的に市場平均とあまり変わらないが、サービスの質は競合他社よりも高いと私たちは考えている。
完全に表示ナショナルフットボールリーグ
著者から:あなたが長い間開発を続けてきたなら、あなたはスピードがインターネット上で最大の問題であることを知っています。 簡単です。速度が重要であり、速度が速いほど良いのです。 パフォーマンスを向上させる簡単な方法は、CDNを使用することです。 このトピックは、CSS-Tricksサイトで何度か取り上げています。 単純なことは、データベースを書き直してコンテンツを手動で編集する必要がないということですが、私たちの多くはこの領域のパフォーマンスに十分な注意を払っていません。 ホスティング、サーバー、cPanel、なんてことだ!
幸いなことに、CDNの統合はそれほど難しくありません。 理想的には、すべてを設定し、Google PageSpeedなどのサービスがサイトの高性能をラッパで鳴らします。これにより、検索結果が増え、収益が増え、人気が高まり、アイデアが浮かびます。
この記事では、カスタムWebアプリケーションでCDNを設定するプロセスについて説明し、次にCDNを最大限に活用するのに役立ついくつかの秘訣について学習します。 私が言ったように、セットアップは簡単でなければならないので、始めてウェブをより速くしましょう!
CDNをデプロイするための特別なプラグインがあるWordPressのようなCMSで作業する人のためにCDNをセットアップすることは、これから説明するよりもさらに簡単かもしれないことを追加する必要があります。 誰もがこの贅沢を持っているわけではないと仮定しましょう。それでは、より伝統的な方法に移りましょう。
あなたはCDNで私を失いました
CDNとは何か、CDNの目的など、基本的な概念を見ても問題はありません。 これから始めましょう。
JavaScript。 ファストスタート
CDNは、サイトのサーバーから静的ファイルを取得し、それらをサーバーにキャッシュします。 ブラウザがサイトにアクセスすると、静的コンテンツはサイトからではなくCDNを介して読み込まれます。 CDNサーバーは世界中に配置されているため、これははるかに高速です。 CDN自体はプロキシの原則に基づいて機能し、ユーザーに最も近いサーバーを決定します。これにより、より高速で便利なコンテンツ配信が保証されます。 頭字語は、コンテンツ配信ネットワークまたはコンテンツ配信ネットワークの略です。
では、ブラウザは、サイトのサーバーからではなくCDNからファイルをダウンロードするタイミングをどのようにして知るのでしょうか。 静的ファイルのURLは、CDNにつながるように書き換えられます。
たとえば、サブドメインのCDNを設定したいとします。 CSS-Tricksサイトでは、アドレスはcdn.css-tricks.comである可能性があります。 したがって、ファイルへのすべてのリンクはサブドメインに移動します。
大まかに言えば、サイト上のファイルのアドレスは次のとおりです。
http://www.css-tricks.com/image.jpg http://www.css-tricks.com/style.css http://www.css-tricks.com/script.js
http: //www.css-tricks.com/image.jpg http: //www.css-tricks.com/style.css http: //www.css-tricks.com/script.js |
...次のようになります:
http://cdn.css-tricks.com/image.jpg http://cdn.css-tricks.com/style.css http://cdn.css-tricks.com/script.js
http: //cdn.css-tricks.com/image.jpg http: //cdn.css-tricks.com/style.css http: //cdn.css-tricks.com/script.js |
ブラウザは、サイトのサーバーではなくCDNにリクエストを送信します。これにより、サーバーから負荷の大部分が削除され、サイトが高速化されます。
待って、同じサイトに2台のサーバーがありますか?
これはある程度真実ですが、これは2台のサーバーを管理することを意味するものではありません。
重要なのは、CDNがサーバーとユーザーのブラウザーの間の仮想レイヤーとして使用されるということです。 このレイヤーは、サーバーへのブラウザー要求をキャッチし、サーバーに代わってキャッシュされたファイルでそれらに適切に応答します。
場合によっては、静的ファイルをCDNに直接アップロードして、サーバーの負荷を完全に取り除くことができます。 この記事では、サーバーからCDN静的ファイルを取得してキャッシュするプロセスについて説明します。これにより、ファイルを2つのサーバーにアップロードして、異なるアドレスで作業する必要がなくなります。
カスタムアプリケーションにCDNをインストールする方法
多くのサービスがありますが、AmazonAWSとMaxCDNは他のサービスよりも頻繁に使用されます。 今日はMaxCDNサービスを見ていきます。
ステップ1:CDNを選択し、サイトを登録します
サイトにCDNが必要であると判断した場合は、登録する必要があります。 多くの方法がありますが、それぞれの長所と短所を比較検討しないために(次の記事の良いトピック)、いくつかのサービスを提供します。
登録の主なタスクは、ダウンロード領域を作成することです。 CDNのアップロード領域は、サポートされているすべてのファイルを含むごみ箱と考えることができます。 データは、最初にファイルを要求したときに指定したディレクトリから自動的に取得されます。 ユーザーの場合、ファイルはCDNサブドメインまたはCDNにつながるカスタムドメインのいずれかからダウンロードされます。 指定した期間に達すると、ショッピングカートのデータは自動的に削除されます。
ステップ2:CDNへのURLを作成する
CDN URLは、構成後にすべてのファイルがダウンロードされるURLです。 経験則として、URLに単純な名前を使用すると、ファイルを簡単に検索して、データベース内の既存のすべてのファイルのアドレスを置き換えることができます。
他のサブドメインと同様に、ホストのDNS設定でcnameレコードを指定する必要があります。
ステップ3:ファイルをCDNにプッシュする
CDNアドレスの変数を作成する方法と、それを使用してプログラムで静的リソースをURLの前に挿入する方法を見てみましょう。 必要な理由:(1)マークアップを間違えにくくし、(2)変更する必要のあるURLを操作しやすくします。
これを行うには、静的リソースURLの左側にアタッチするCDNのグローバル変数が必要です。 PHPとJSの両方で変数を作成するので、後で作業しやすくなります。 また、この変数は、必要に応じてCDNを簡単にオフにするのに役立ちます。 アドレスをサーバーに返すには、値を/に置き換える必要があります。
以下の例は単なる例であり、使用しないでください。 実際の使用例は異なる場合があります。
定義( "cdnURL"、 "http://cdn.css-tricks.com/"); < html > < head > < title >"こんにちは世界"< / >
< link rel = "stylesheet" href = "css / style.css "/ > < / head > < body > < img src = "img / logo.png "/ > < button >送信< / button >
< / body > < / html > |
(function()(var preloadImage = document.createElement( "img"); preloadImage.src = cdnURL + "img /logo.png";))();
(関数 () ( var preloadImage = document。 createElement( "img"); preloadImage。 src = cdnURL + "img /logo.png"; } ) () ; |
開発者として、あなたは箱の外で考える必要があります。 すべての静的ファイルは、cdnURL変数の左側にフックする必要があります。
JavaScript。 ファストスタート
Webアプリケーションを構築する実践的な例を使用して、JavaScriptの基本を学びます
同じことがCSSにも当てはまります。 たとえば、LESSプリプロセッサを使用すると、グローバルCDN変数を作成し、リソースアドレスの前に挿入できます。
@cdnURL: "http://cdn.css-tricks.com/"; button(background-image:url( "@(cdnURL)img / button.png");&:hover(background-image:url( "@(cdnURL)img / button_hover.png");))
@ cdnURL: "http://cdn.css-tricks.com/"; ボタン ( &:ホバー( 背景-画像:url(); |
...またはそのことについてはSass:
$ cdnURL: "http://cdn.css-tricks.com/"; button(background-image:url( "@(cdnURL)img / button.png");&:hover(background-image:url( "@(cdnURL)img / button_hover.png");))
$ cdnURL: "http://cdn.css-tricks.com/"; ボタン ( 背景-画像:url( "@(cdnURL)img / button.png"); &:ホバー( 背景-画像:url( "@(cdnURL)img / button_hover.png") ; |
すばらしいのは、cdnURL変数を/に設定することで、CDNを安全に無効にできることです。これにより、古いアドレスが返されます。 また、cdnURL変数を変更するだけでCDNURLを変更できるという利点もあります。
CDNを設定する3つの段階について説明しました。 コンテンツ配信ネットワークはサーバーに接続します。その後、既存のすべてのファイルがCDNに送信され、ユーザーが要求されたときにそれらを取得できるようになります。
詳細設定について話しましょう
CDNを設定するのはそれほど怖いことではありませんか? 主な問題が解決したので、ファイルのアップロードを最適化するために使用できる詳細設定を楽しむことができます。
存続時間(TTL)
通常、CDNには存続時間(TTL)があります。 ファイルが古くなっていることをCDNに伝えるための素晴らしい方法(秒単位)。 ファイルが古くなっている場合、ネットワークは新しいコピーを求めてサーバーに再接続します。
TTLが高いほど、CDNで使用できるファイルのバージョンが長くなります。 TTLが低いほど、ネットワークは保存されているバージョンのファイルを削除し、サーバーにアクセスして新しいバージョンをダウンロードすることが多くなります。
ファイルの寿命をリセットする
TTLは両刃の剣です。 サーバー上のファイルを更新できますが、TTLが期限切れになり、CDNがサーバーに接続して新しいコピーを取得するまで、ユーザーにはこれらの変更は表示されません。
この問題は、ファイルの有効期間をリセットすることで解決できます。 これを行うには、ファイル名を変更するだけです。 ファイル名が変更された場合、CDNは、ファイルを新しいものとして認識し、既存のファイルを更新しない以外に選択肢がありません。
言い換えると、このアドレス:cdn.css-tricks.com/image100.jpg ...は次のように変更できます:cdn.css-tricks.com/image101.jpg
そしてさようなら古いバージョン、こんにちは新しい!
TTLによるファイルバージョン管理
したがって、CDNにファイルの1つのバージョンがあり、ネットワークがまだプルしていない更新されたバージョンがサーバーに表示された場合、技術的には1つのファイルの2つのバージョンがあります。 これはバージョン管理に使用できます。 サーバー上のファイルを更新した場合、これはファイルが失われたことを意味するものではありません。 必要に応じて古いコピーを返却できます。
有効期間をリセットするときのように、変更を加えるたびにすべてのファイルの名前を変更すると、はるかに困難になります。 メンテナンスの観点からは、cdnURLのような変数を作成したとしても、これはやり過ぎです。 代わりに、少しごまかします。 私たちのサイトはそのようなトリックに専念しています。
まず、静的ファイルをフォルダーに配置します。 アドレス:cdn.css-tricks.com/image.jpg ...はcdn.css-tricks.com/img100/image.jpgになります。
次のようにサブフォルダーを変更することで、ファイルの有効期間をリセットし、CDNに最新バージョンをダウンロードさせることができます:cdn.css-tricks.com/img101/image.jpg。
違いがわかりますか? ファイル名は変更されていませんが、サーバー上のパスは新しくなっています。 繰り返しになりますが、CDNはファイルを理解せず、新しいものとして扱います。 人工的な形式のバージョン管理をフォルダーに直接実装しました。
しかし、あなたはさらに良くすることができます。
更新のたびにフォルダ番号を変更することは、依然として非常に困難です。 .htaccessファイルを少し変更して、手間のかかる作業を行うことをお勧めします。
書き換えルールを使用して、CDNを凌駕します。 すべてのファイルを1つのフォルダーに保持しますが、ネットワークはフォルダーが変更されていると見なします。
< IfModule mod_rewrite . c > RewriteEngineオン RewriteBase / RewriteRule ^ ver- [0-9] +。 [0-9] +。 [0-9] +(。*)$ $ 1 [L、NC] RewriteCond%(REQUEST_FILENAME)! - NS |
Yaroslav Gorodetsky: だから、私の名前はヤロスラフ・ゴロデツキーです。 私はCDNvideo会社を代表しています。 私の話は「ロシアでCDNを構築する方法」と呼ばれています。
CDNとは何ですか?
CDNはコンテンツ配信ネットワークの略です。 これは、コンテンツを1つのポイントから配布する場合よりも、さまざまな都市、さまざまな国、さまざまな大陸にいる多数のユーザーに、迅速かつ高品質でコンテンツを配布するために使用されます。 これは、地理的に分散したサーバーのネットワークです。
この会議は、高負荷のアプリケーションに特化しています。 したがって、3層アーキテクチャの用語では、HighLoad CDNは、フロントエンドサーバー(コンテンツがエンドユーザーに配信されるサーバー)のレベルに対応します。
コンテンツ配信ネットワークはプライベートにすることができます。 大規模なコンテンツプロバイダー(Google、Yandex、Mail.Ru、Facebook、VKontakteなど)は通常、これらの大規模なコンテンツプロバイダーのコンテンツを配信するためだけに機能する独自のCDNを持っています。
また、世界とロシアには、独自のCDNを構築し、すべての人が使用できるリソースを提供しているCDNオペレーターがいます。
CDNはどのように機能しますか?
おそらく、多くの人がすでにこれを知っていますが、それでも基本を繰り返します。
コンテンツをさまざまな都市のユーザーにできるだけ早く配信する必要があります。 自分でコンテンツ配信ネットワークを構築するか、オペレーターからCDNサービスを購入します。 すべての主要都市にあり、主要なインターネットプロバイダーによってネットワークに接続されているサーバーを使用し、そこでコンテンツをホストします。
ユーザーがサーバー上のコンテンツを要求すると、中央のデータセンターにあるサーバーからではなく、最も近いCDNサーバーから応答を受け取ります。
CDNを使用するにはどうすればよいですか?
まず、CDNプロバイダーとの相互作用を構築します。 CDNを介して、ビデオコンテンツ、データ、静的Webコンテンツ、任意のアプリケーション、アプリケーション配布などを配信できます。 このコンテンツはすべてのCDNサーバーに配信され、エンドユーザーに提供されます。
CDN内でコンテンツを配布し、コンテンツプロバイダーからコンテンツを収集するには、通常、HTTPプロトコルが使用されます。 実際、これらのサーバーはすべてHTTPキャッシングサーバーです。 ストリーミングビデオの場合、ストリーミングデータ送信(英語ストリーミング)を提供するRTMP / RTSPプロトコルおよびその他の同様のプロトコルが使用されます。
CDNは、WebサービスまたはアプリケーションでHTTPを介してストリーミングビデオ、オーディオ、または静的コンテンツを提供するために使用できる単なるツールです。
CDNオペレーターのサービスにより、さまざまな場所に設置された多数のサーバーにアクセスできるため、世界中にサーバーを展開する場合よりも少ない労力で、高負荷でフォールトトレラントなサービスを実装できます。
通常、CDNは、「重い」コンテンツ(ビデオ、オーディオ、写真、フラッシュアニメーション、CSS / JavaScript、ゲームクライアントなど)を提供するために使用されます。
今日の講演の1つで、CSS / JavaScriptは40〜50%圧縮できると言われました。 これは確かに差し迫った問題です。 安定したWebサービスでは、エンドユーザーにCSS / JavaScriptを高速でレンダリングする必要があります。 圧縮することも、CDNを使用してCSS / JavaScriptをエンドユーザーに提供する速度を向上させることもできます。
CDNを構築する方法は?
CDNを構築する方法、それを行う方法、およびこの方法で行う理由について詳しく説明しましょう。
世界にはたくさんのCDNがあります。 CDNトピックは、最初の高負荷サイトの1つであるCNNが登場した1998年から発展してきました。 これはおそらく、ハイテク企業が所有していない最初のトラフィックの多いサイトの1つです。 当時、マイクロソフトと検索エンジンはサイトをロードしていました。
CNN TVチャンネルのコンテンツプロバイダーが登場しました。このプロバイダーは、そのWebサイトを世界のさまざまな地域にすばやくロードするために、大量のコンテンツを配信する必要がありました。 しかし、彼は彼自身の技術を持っていませんでした。
その後、アカマイが登場し、CNNのこの問題を解決し、世界中にサーバーを配置しました。
CDNとは何ですか?
それらは異なります:
- ちなみにサーバーはあります。
- ちなみに、負荷はサーバー間で分散されます。
- コンテンツ配信の方法による。
- ユーザーへの最短経路を見つける方法による。
- 提供されるサービスについて。
すべてのユーザーに最高の平均品質を提供するようにCDNサーバーを配置するにはどうすればよいですか?
特定のオーディエンスを持つインターネットリソースがある場合、このオーディエンスは何らかの形で地理的に分散しており、サーバーの予算が限られていることは明らかです。 あなたは課題に直面しています:すべてのユーザーにとって平均して最適な品質を得るように、インターネット上でこれらのサーバーをどのように正確に配置するか。 ロシアのリソースをお持ちの場合、オーストラリアからの訪問者はほとんどいない可能性が高いため、オーストラリアのどこかにサーバーをインストールする必要はほとんどありません。
素人ではなく、インターネットサービスプロバイダーの観点から見たインターネットとは何ですか? 庶民はインターネットは「クラウド」だと思っています。 実際、インターネットの一部は、いくつかのインターネットプロバイダー(ロシアと外国)の接続性のグラフです。 私はこのデータを非常に優れたリソースrolltex.comから取得しました。ここでは、各インターネットプロバイダーのそのような接続マップを取得できます。
CDNを構築するときは、正確にどこに、どのプロバイダーがユーザーを持っているかを理解し、そこにサーバーを配置する必要があります。 これは1つのアプローチです。 特にアカマイ社で使用されていました。 私たちの活動でも同じアプローチを使用しています。
別のオプションもあります。 原則として、ISPはインターネットエクスチェンジを介して相互にトラフィックを交換します。 これらは無料のトラフィック交換ポイントです。 ヨーロッパにはたくさんあります。 交通交換が主に支払われるので、それらのいくつかは米国にあります。 ロシアでは、無料の交換ポイントが開発されており、さまざまな成功を収めています。 モスクワインターネットエクスチェンジは十分に大きいです。 サンクトペテルブルクのインターネットエクスチェンジは、モスクワのインターネットエクスチェンジの10分の1です。
他の多くのプロバイダーは、この方法でCDNを構築しています。 その中には、LimeLight(これはアカマイの主要な西側の競争相手です)とロシアのインターネットプロバイダーNGENIXがあります。 このアプローチは、1つのノードからより多くのプロバイダーをカバーできるように見えるため、優れています。 しかし、特定の問題があります。このアプローチでは、ネットワーク機器にかなり適切なコストが必要です。
3番目のアプローチ。 バックボーン通信事業者を代表する場合は、CDNを構築することもできます。 CDNを取得するには、ネットワークのさまざまなポイントにサーバーを配置する必要がありますが、同時に、トラフィックを購入するポイントと販売するポイントがあります。
すぐに問題が発生します。 CDNオペレーターは常にすべての人にできるだけ多くのトラフィックを提供する必要があるため、バックボーンプロバイダーとしての直接的な活動は、CDNオペレーターとしてのあなたの目標と矛盾する可能性があります。 それどころか、バックボーンオペレーターは、このトラフィックをより頻繁にお金で売りたいと考えています。
次に、負荷分散方法によるCDNの分類について説明します。 それらのいくつかがあります。
最も一般的に使用されるのは、DNSクエリの負荷分散です。 ユーザーは、DNS要求を特定の名前でCDNに送信します。 CDNは、ユーザーに近いサーバーからの要求に応答してIPアドレスを提供します。
ロシアのプライベートCDNが使用する別のオプションがあります。 HTTPリダイレクト。 HTTPリクエストに応答して、ある標準名に対してエラー304がスローされ、リクエストはユーザーに近いサーバーにリダイレクトされます。
他にもいくつかの方法があります。 HTMLページを生成するときのURL置換。 応答が最も近いサーバーに送信される場合、エニーキャストのような方法があります。 すべてのサーバーは同じIPアドレスを持っています。 大まかに言えば、どのサーバーが最初に要求を受信したか、そのサーバーはこの要求に応答します。
これらのどれが最良の方法ですか?
DNSはほとんどすべての人に使用されています。 ただし、1つの重大な問題があります。 他の人のDNS(たとえば、Google DNS 8888)を使用するユーザーがいます。 彼らにとって、負荷分散はまったく機能しません。 それらは、ISPではなくGoogleに近いサーバーにリダイレクトされます。 その結果、CDNを使用してもメリットはありません。 私たちのデータによると、リクエストの約10%が間違って配置されています。
HTTPリダイレクトはこの問題を引き起こしませんが、別の問題を示唆しています。 追加のHTTP要求が発生するため、応答時間が長くなります。したがって、TCP接続が不要に確立されます。 応答時間はせいぜい数十ミリ秒かかります。
URL置換には、多くのサーバーリソースが必要です。 エニーキャストは、TCPで常に正しく機能するとは限りません。これは、ネットワークが変更されると、より近い実サーバーが変更される可能性があるためです。
CDNを分類する別の方法は、コンテンツがCDN自体の中でどのように配布されるかによるものです。
大規模なCDNは、階層ツリーを使用します。 それらには、ある種の中央コンテンツリポジトリがあり、いくつかの大きな地域コンテンツリポジトリがあり、エンドオペレーター、地域通信事業者に配置されている小さなリポジトリがあります。
小さなCDNの場合、このような階層ツリーを構築する必要はありません。 ポイントツーマルチポイント方式で十分です。 1つのコンテンツソースがそのコンテンツを他のすべてのサーバーに配布します。 スキームは、残りを「注ぐ」ために1つのセンターを持つ必要はありません。 基本的に、センターはコンテンツのソースに近い任意のCDNサービスにすることができます。
最後のオプションは、ピアツーピア(P2P)ネットワークです。 CDNでのコンテンツ配信は、P2Pベースで実行されます。 サーバーは、トレントで行われるのと同様の方法で、コンテンツを相互にダウンロードします。
この方法は、1つの有名なアカデミックCDN(Coral CDN)だけでなく、多数のユーザーにビデオ放送を可能にする一部のインターネットストリーミングプロバイダーによって使用されています。 ユーザーはリクエストをリダイレクトし、ビデオコンテンツの配信にも参加します。
西側には、これを行うOctoshapeという会社があります。 ロシアでは、そのような会社の例はLavina.TVです。
最後から2番目のことは、ユーザーへの最短経路を決定する方法による分類です。 ここにはいくつかの方法もあります。
最初の方法は地理です。 最も明確で直感的な方法。 CDNがあります。 たとえば、サーバーをノボシビルスクに配置すると、ノボシビルスクのすべてのユーザーは、このGeoIPデータベースを使用してこのノボシビルスクサーバーに誘導されます。
残念ながら、このアプローチはほとんどの場合機能しません。 多くのインターネットプロバイダーは互いに複雑な関係を持っており、いわゆる「ピアツーピア戦争」がそれらの間で起こっています。 同じ都市のプロバイダーが、別の都市(または別の国)を経由してトラフィックを「プル」することがよくあります。
したがって、地理的にエンドユーザーへのパスを定義することはあまり良くありません。 ネットワークトポロジに基づいた最短パス方式を使用するのが最善です。
ISPからリアルタイムで取得できる場合、これらはBGPルートである可能性があります。
これはRIPEデータベースである可能性があります。 リアルタイムではありませんが、すべてのプロバイダーは、ネットワーク、ルート、およびピアツーピア関係をこのデータベースに入力する必要があります。 このデータベースから、ネットワークトポロジに関する豊富な知識を収集できます。
地域のプロバイダー(少なくともロシア)と協力している場合、原則として、それらはすべて、維持しているローカルアドレスのある種のデータベースを持っています。 これも便利なことです。
最後のオプションは、ネットワーク遅延、ユーザーへのホップ数、ユーザーに向かう途中の自律システムの数に関連付けられた統合メトリックによって、ユーザーへの最短パスを決定することです。 これも正しい方法であり、最短経路を見つけるのに役立ちます。 異なるサーバーから特定のユーザーへのルートが複数あることがわかっている場合でも、BGPから取得した最短ルートには、常に最適な帯域幅、最適なネットワークパラメーターがあるとは限りません。
CDNを構築するにはどうすればよいですか?
次に、CDNの構築に関する経験を共有します。 私たちはロシアに拠点を置いていますが、CISとそれ以降の両方で働いています。 しかし、私たちの主な目標は、ロシア語を話すインターネット用のCDNを構築することです。 ロシアのインターネットには、いくつかの特定の機能があります。 それらはスライドにリストされています、私たちはそれらを読みません。
要するに、ロシアには多くのプロバイダーがありますが、トラフィックはモスクワに非常に集中しています。 プロバイダーはお互いを嫌い、「ピアツーピア戦争」を行います。 私たちの特徴:ネットワークパラメータに加えて、エンドユーザーのトラフィックのコストを追加で考慮する必要があります。 それがまだ無料ではないどこかで、無制限の料金はまだどこでも利用可能ではありません。
上記のすべての理由に基づいて、CDNを構築する独自の方法を選択しました(スライドで説明されています)。 CDNネットワークは、DNSを使用するインターネットプロバイダーのネットワーク上に構築され、ネットワークトポロジに関するデータと統合メトリックを使用して、ユーザーへの最短パスを見つけます。
ここで、CDNプロバイダーが提供するサービスについて簡単に説明します。
これはHTTPコンテンツキャッシングです。
- 静的ファイル;
- 動的で長寿命のコンテンツ。
ビデオ/オーディオのストリーミング:
- 生放送;
- ストリーミングビデオクリップ;
- ストリームとファイルのトランスコーディング(すべてのプロバイダーが独自にこれを実行するわけではないため、これもかなり要求の厳しいサービスです)。
また、CDNはコンテンツ保護サービスを提供する場合があります。 コンテンツへのアクセスを制限して、このプロバイダーによって承認されたユーザーにのみコンテンツを提供することができます。 コンテンツへの1回限りのリンクを使用し、コンテンツプロバイダー側で各リクエストを承認できます。 フラッシュビデオの場合のみ、フラッシュプレーヤーに署名することもできます。したがって、コンテンツプロバイダーのWebサイトからフラッシュプレーヤーをダウンロードしているユーザーにのみアクセスを許可できます。
通常、CDNには、サービス管理用のアプリケーションプログラミングインターフェイス(API)があり、静的コンテンツが廃止されたときにそのコンテンツのキャッシュをクリアできます。 たとえば、サイトからファイルを緊急に削除する必要があります。ファイルがすでにCDNに入っている場合は、それに応じて、すべてのCDNサーバーからファイルを削除します。 また、サービスのステータス(このビデオストリームまたはそのビデオストリームの視聴回数、以前に視聴された回数)を確認し、CDN機能のしきい値が近いかどうかを確認することもできます。
CDNへの接続方法に関するチートシートをまとめました。 これらは、すべてのCDNプロバイダーの一般的なガイドラインです。
- まず、CDNを介して配信する必要のあるコンテンツをどこで入手するかについてCDNプロバイダーと合意する必要があります。 サーバーがどこにあるか、このコンテンツがどこにあるかを彼に伝える必要があります。
- コンテンツにアクセスするためのリンクを取得します。このリンクは、Flash Playerで、HTMLへのリンクの形式で、モバイルデバイスまたはソーシャルネットワーク用のある種のアプリケーションリンクの形式で、Webサイトに投稿されます。
- CDNにリンクするドメインにCNAMEレコードを作成することで、CDNを偽装できます。
- Webサイト、アプリケーション、FlashPlayerなどのCDNに配置されたコンテンツへのリンクを残すことができます。
それで全部です。 ご清聴ありがとうございました! ご質問をお待ちしております。
質問と回答
聴衆からの質問:フォールトトレランスについての質問。 CDNサーバーの1つが何らかの理由で「死んだ」と仮定しましょう。 DNSを介してルーティングしています。 DNSクエリはユーザーによってキャッシュされ、ユーザーは別の場所に「移動」する必要があることを見つけることができません。 これをどのように解決しますか? Yaroslav Gorodetsky:たとえば、キャッシュの量がゼロの場合。 したがって、DNSキャッシングの時間はゼロに等しくなります。 ユーザーはDNSからデータをキャッシュしません。 聴衆からの質問:これはいくつかの遅延を引き起こします-小さいですが、毎回余分な要求があります。 Yaroslav Gorodetsky:はい。 ただし、サーバーはユーザーの近くにあるため、待ち時間は最小限に抑えられます。 聴衆からの質問:めったに要求されない非常に長い「テール」を持つコンテンツ(10億ファイル)がたくさんあると想像してみてください。 コンテンツは通常、CDNを介してどのように配信されますか? コンテンツ所有者として、私は「すべてのファイルをレイアウトする」と言います。それとも、ユーザーからの要求に応じて実行されますか? ユーザーがサーバーに来て、ファイルがそこにないことを確認し、私に行き、それを受け取り、ユーザーに渡しました。 Yaroslav Gorodetsky:一般的に、CDNは「ロングテール」ではなく、ユーザーから何度も要求される人気のあるコンテンツを対象としています。 したがって、デフォルトはオンデマンドです。 これまたはそのコンテンツをユーザーに表示する必要があります。その場合にのみ、このコンテンツはコンテンツプロバイダーのサーバーから取得され、以下のすべてのリクエストはCDNから直接送信されます。 原則として、コンテンツライブラリ全体が最初にCDNにロードされる可能性もあります。 これは、たとえば映画のライブラリを表示する必要がある場合など、「重い」コンテンツの場合に適しています。 映画の読み込みには時間がかかります。 標準バージョンでは、対話は要求に応じて行われます。 聴衆からの質問:ロシアのほとんどのホスティングは無料のトラフィックを提供します。 ロシアのCDNのトラフィックにお金を払わなければならないのはなぜですか? 同じ都市で無料にすることができます。 Yaroslav Gorodetsky:あなたは私たちのことを話しているのですか? 聴衆からの質問:そしてあなたについても。 Yaroslav Gorodetsky:あなたは何かにお金を払わなければなりません。 このトラフィックが1つの場所から取得され、すべてのサーバーに送られ、地理的に分散したさまざまなサーバーから分散されるという事実に対するCDNコストを計算する最も簡単で正直な方法は、トラフィックごとに評価することです。 ただし、原則として他のオプションもご用意しております。 ストリーミングビデオの配信については、同時接続数の固定レートがあります。 その後、それは無料です。 聴衆からの質問:私たちが何を構築したかについての質問。 ビデオのトピックに精通している人として。 クライアントから情報を収集する速度はどれくらいですか。 私がCDNクライアントであり、ビデオファイルを持っている場合、自分自身を介してサブスクライバーにどれだけ迅速に配信できますか? 2番目の質問。 現在利用できるネットワークは何ですか? 地理、力は何ですか? Yaroslav Gorodetsky:最初の質問です。 それはあなたのチャンネルの幅に大きく依存します。 かなり広いチャネルがあります。 私たちは放送、ある種のイベントの形でそれを行います。 そこに問題があります。 ビデオストリームを高品質で表示するには、イベントをブロードキャストしているコンテンツプロバイダーが、十分なインターネットチャネルを持ち、同時に高品質である必要があります。 地域別。 私たちのネットワークは現在発展途上であり、年末までに7つの都市ができます。 現在-モスクワ、サンクトペテルブルク、エカテリンブルク、ノボシビルスク、キエフ、西ヨーロッパ。 聴衆からの質問:私たちが深刻な負荷をかけると言った場合、どれだけ迅速に対応できますか。 要件の可能性を広げていただけますか? Yaroslav Gorodetsky:原則として、制限はありません。 もちろん、はい、何でも可能です。 聴衆からの質問:どのくらいの期間-月、2? Yaroslav Gorodetsky:1か月未満。 聴衆からの質問:アカマイが世界中で使用できることは完全に便利ではありませんが、ロシアではネットワークにアクセスする必要があります。 この問題はどのように解決できますか? 統合の可能性はありますか? Yaroslav Gorodetsky:はい、はい、それは存在します。 さあ、傍観者としてそれについてお話しします。
Youtubeですべての動画を視聴するには1000年以上かかりますが、視聴中にさらに成長します(約10億)。 そしてこれは、地球規模のインターネットでの実際のダウンロード数を1秒間に想像することが非常に難しい理由の一例にすぎません。
モスクワのユーザーは、たとえばオーストラリアの遠く離れたサイトから、どのようにしてビデオを即座にダウンロードしますか? 人類が人類のために生み出した無限の情報はどこに保存されていますか? これらの質問は、コンテンツが増えており、世界中のどこにでも迅速に配信する必要がある人々にとって懸念事項です。
CDNが急いで救助
CDN(Content Delivery Network)は、世界中のどこにでもコンテンツを高速に配信します。 頭字語の完全なトランスクリプト-コンテンツ配信ネットワーク。 しかし、これらの3つの単語は全体像を描くことは難しいので、簡単な単語で試してみましょう。
簡単に言えば、それは世界中に分散しているサーバーのシステムです。 サイトのコピーは同時に50ポイントに配置されます、およびユーザーは、ページに近いページをロードします。
たとえばロシアにサイトがある場合、近くのユーザーは写真を表示したり、音楽を聴いたり、ビデオを高速で視聴したりできます。 ただし、サーバーが離れているほど、ダウンロードは悪化します。
負荷変化の知覚の余分な秒
毎日、ユーザーはますます要求が厳しくなっています。 彼の注目は、優れたナビゲーションとユーザーフレンドリーなインターフェイスを備えたサイトだけでなく、表示されるリソースを選択するときに、ページがどれだけ速く開くかが非常に重要です。
データによると、サイトの読み込み時間が1秒から5秒に増加すると、障害の確率は90%増加します。 ゲストは待たずに他のリンクを使用して離れる可能性が高いです。 ただし、CDNがある場合、ユーザーは最も近いサーバーから要求されたコンテンツを受信し、サイトに残ります。
このテクノロジーを使用することには、他にも利点があります。
- メインサーバーの負荷が軽減されるため、他のサイトの運用にリソースを費やすことができます。
- ページの読み込み速度が速いと、検索エンジンのランキングにプラスの効果があります。サイトは検索結果で上昇します。
しかし、これらすべての魅力にはお金がかかります。 多くのサービスプロバイダーがCDN料金を請求しています。 価格は、選択した料金とプロバイダーに応じて、転送される情報1ギガバイトあたり平均2.4〜8ルーブルです。
あなたが支払わなければならない品質
はい、CDNは新しいものではありません、とあなたは言います、そしてあなたは正しいでしょう。 しかし、興味深い点は、今日のテクノロジーはますます増えているということです インターネット上の平等に影響を与えます。シスコは最近、この傾向に関する調査を実施しました。 ネットワーク機器の開発と販売に従事するアメリカの多国籍企業です。
CDNの使用には追加費用が必要なため、CDNの可用性は、その国の有料サービスの数に直接依存し、したがって、サービスが提供される州の市民の福祉のレベルに依存します。
このため、調査の著者によると、CDNの優位性は、北米、西ヨーロッパ、およびアジア太平洋地域の裕福な国でより顕著になります。 予測によると、豊かな国と貧しい国のインターネットの間に大きなギャップが5年以内に発生します。2021年までに、北米のすべてのインターネットトラフィックの約91%がCDNを通過しますが、中東とアフリカではわずか31 %。 デジタルデバイド問題それらの無料サービスに関連している可能性があります, よく知られているビデオ通信サービスなど、高速音声処理が必要な場合。
Facebook、Amazon、Netflix、Googleなどの巨人は、ユーザーにコンテンツを配信するための独自のCDNの開発にますます投資しています。 今後5年間で、コンテンツ配信ネットワークによって配信されるインターネットトラフィックのシェアは70%に増加すると、シスコも予測しています。
「ビデオコンテンツが移動しなければならないキロメートル、マイル、または距離ごとに、品質のレベルが低下または低下します」と、シスコのレポートライターであるトーマスバーネットは述べています。
豊かな地域と貧しい地域の間にデジタルデバイドがありますか? 「他のすべてと同様に、CDNのコストは下がると思います。 最終的には、経済状況が改善し、これらのサービスに対する需要があれば、CDNへのさらなる貢献が見込まれます」とBarnett氏は述べています。
しかし、これが実現するまで、有料コンテンツの需要が低く、国間のインターネットの品質のギャップが拡大しているCDNを民間企業が開発することは不採算です。
CDNが必要な時期と場所
サイトのオーディエンスがさまざまな地域や国にいる場合は、CDNが必要です。 また、リソースの所有者がトラフィックフローの高いサーバーを保護およびアンロードしたい場合も同様です。 例えば、 そのボリュームが月に数テラバイトの場合。
例としては、CDNの助けを借りて、光路が長すぎるロシアの地域での電子メールの配信速度の故障を解決することに成功したYandexがあります。
Evgeny Rossinsky、iviオンラインシネマのテクノロジーディレクター
CDN市場は成長しており、今日ではロシア市場と海外市場の両方でトレンドとなっています。 成長の主な推進力は、すべて同じVODとOTTです。インターネットでのビデオ視聴の普及、ビデオ品質の向上、そしてその結果としてのトラフィックの増加です。 そして、予測はさらに楽観的です。2021年までに、世界のインターネットトラフィックの80%がオンラインビデオから、77%がCDNネットワークから来るようになりますが、今日、この数字はすでに67%になっています。
数年前、私たちはアウトソーシングソリューションを使用せずに独自のCDNシステムに依存していました。 1年前にCISに参入しましたが、今では世界中で利用できます。 CISおよびロシア連邦以外の国では、パートナーリソースを使用することがあります。 CDNネットワークでのノードの配置について、ローカルインターネットプロバイダーと契約を締結します。
現在、ロシア連邦のトラフィック量は、CISやその他の世界のトラフィックよりもはるかに多くなっています。 しかし、他の国での私たちの拠点の建設に経済的便宜が生じたらすぐに、私たちは間違いなくこれを行います。 四半期に一度、そのようなソリューションの有効性を評価します。ウクライナやカザフスタンで独自のソリューションを構築するときではないでしょうか。 この瞬間はまだ到来していません。 1年後には必ずそういう決断をしなければならないと思います。
現在、ロシア連邦には30の拠点があります。 まず、確実に存在したいポイントにノードを配置します。 そして、通信事業者からのフィードバックがありました。 人口が数十万人の最大ではない都市のオペレーターがノードの展開を要求した場合、誰かが「ハードウェア」を提供することさえあります。