おはようございます。こんにちは。こんばんは。
ミッド(@mid_v_lab)です
プロキシサーバのログを見たことがある人なら、「~.cdn.~」みたいなログが大量に出ているのを目にしたことがあるはずです。
よく目にはしていましたが、コンテンツを配信するURLくらいの認識しかしておらず、アクセスログ分析としては基本的にゴミ(ノイズ)扱いしてました。
しかしニュースを見ていたら、CDNサーバで障害が発生して1500億円の損失が~という記事を見つけ、そんなにやばい仕組みだったっけ?・・・と思い、せっかくなので「CDNって何モノ?」というのを調べてみました。
8日に起きた米fastly(ファストリー)による世界的な大規模システム障害で、ウェブサイトの閲覧不能や取引の一時停止に見舞われた企業や政府機関のサイトは数千件に上った。アマゾンやイーベイなど電子商取引(EC)企業のサイトも含まれ、世界の小売業に与えた損失は約1500億円超に上るとの試算もある。
参照元:日経新聞電子版(大規模システム障害、世界数千件に影響 1500億円損失も)
CDNって何?
CDNは、「Content Delivery Network」の略称で、ウェブコンテンツを効率的かつスピーディーに配信できるように工夫されたネットワークの事だそうです。
そのネットワークを利用してコンテンツを配信するサーバがCDNサーバと呼ばれるものだと思います。(ログのアクセス先として記録されるのは、あくまでウェブサーバ)
インターネットの利用者数は日々増加しているので、1つのスイッチやサーバでリクエストを受け続けると、アクセス負荷でレスポンスが悪くなり、最悪サーバがダウンします。
そのため、コンテンツを持っている親サーバから子サーバにコンテンツをキャッシュ(コピー)して、アクセスを分散して、レスポンスの向上と効率化を行っています。
(画像参照元:日経新聞電子版(大規模システム障害、世界数千件に影響 1500億円損失も))
今回はこの子サーバ全体で障害が発生したことで、コンテンツを配信できなくなり、大規模な影響になったようです。
コンテンツって何?というと、例えば動画だったり、画像だったり、読み込むサイズの大きいものをキャッシュすると早くなるイメージです。
上記の画像とかは、参照元のWEBページからダウンロードして自分のブログサーバにアップロードしているので、自分のサーバで全部のコンテンツを提供してますが、
この画像をCDNサーバにおいておき、ページ自体は自分のサーバで、画像などはCDNと分けることでユーザがページ表示できるまでの速度を上げます。
とても大きい画像ファイルをサーバに置いておいたら、ページ表示にとても時間が掛かるに違いない!(回線速度とかにもよりますけどね!)
CDNを使うメリット・デメリット
メリットとしては上記でも挙げましたが
- コンテンツ配布のサーバ負荷が減る
- ユーザまでの配布がスピーディー(ユーザに一番近い子サーバから配布)
- 複数の子サーバがいるので1台障害でダウンしてもコンテンツ配信を継続できる
などです。
サーバ負荷が減り、ユーザの表示速度が上がるのが最大の特徴。
それに付随して子サーバがたくさんあるので、1台機器トラブルなどでダウンしてしまっても、他のサーバで配信できます。信頼性が高くなるといいます。
デメリットとしては
- コンテンツを差し替えた場合にすぐに最新版に変わらない(タイムラグがある)
- 個人情報などの意図していないコンテンツをキャッシュ対象とすると第三者に見られる可能性がある
- WEBサーバ側でアクセスログが取れない(提供してくれるところもある)
- CDN運営会社側のトラブルで配信できない可能性がある
などが挙げられます。
子サーバに配布したキャッシュした情報を見せるので、最新情報をすぐに配布できないことや、キャッシュ対象のコンテンツをよく選択する必要性があるのは、導入前の検討事項ですね。
アクセスログを取れない場合があるのは、どうしてもログ分析する必要があるのであれば提供してくれる配信元CDN業者を探すしかありません。(めっちゃ膨大なログになりそう・・・)
最後のが今回のトラブルの原因ですが、基盤側の障害に関してはほぼほぼ打つ手がないので、サービスレベル(SLA)がきちんと自分たちの提供しようとしているものに合っているかをよくよく確認する必要がありますね。
CDNの仕組みは、DNSの仕組みと良く似ていた!
DNSの仕組みをそのままウェブコンテンツに持ってきたような印象を受けました。DNSサーバも、ルートサーバからキャッシュサーバにDNS情報を配布する仕組みなので、WEBコンテンツ版DNSの仕組みみたいな感じですね。
ではでは