network-junction

サービスの成長と分岐点 Webサービスとネットワーク

前回は、ハードウェアのリソースの使用率を向上させる仮想化技術についてまとめた。ここでは、サービスの成長と分岐点であるWebサービスとネットワークについて解説する。

1 ネットワークの分岐点

サービスの成長とネットワークの分岐点

サービスが成長するにつれて、様々な問題が発生してくるネットワークの分岐点がある。その限界点は以下の3つである。

  • 1Gbps(ルータ性能の観点で本当は30万pps(300Kpps))超え:PCルータの限界
  • 500ホスト超え:1サブネットの限界
  • グローバル超え:1データセンターの限界

 

1Gbpsの限界

1Gbpsの限界はPCルータの転送能力の限界のことである。標準的なハードウェアで最近のLinuxカーネルを使うと、大体30万パケット/秒が限界であると判明した。対策としては、PCルータを複数並べるか、箱ものルータ(Cisco製の高価なルータなど)を買うというものがある。

 

500ホストの限界

500ホストの限界は1サブネットに配置できるホスト数が約500というものである。具体的にはスイッチのARPテーブル(Address Resolution Protocol table)周りでの限界のことで、そのテーブルのサイズの上限が500程度だということである。ARPテーブルとは、IPアドレスとMACアドレスの対応関係表である。また、サブネットの中にホストをたくさん置くとブロードキャストパケットが徐々に増えていき、パケットロスが発生することがわかっている。

 

ネットワーク構造の階層化

これらの問題への対策として、ネットワーク構造の階層化が方策として確立されている。以下の3層構造で構成することがセオリーである。

  1. 一番小さいのがAccess層(アクセスエリア):100台程度
  2. 次がDistribution層(ディストリビューションエリア):1000台程度
  3. 一番上がCore層(コアエリア)、またはOSPF(Open Shortest Path First)エリア:10000台程度

 

グローバル化

グローバル化とは太平洋を越えるアクセスのことで、相当なオーバーヘッドとなる。例えば、はてなのデータセンターにうごメモのFLV(Flash Video)ファイル(最大6MB程度)を世界各所からHTTPで取得しようとすると、大体20-30秒かかるようである。一方、以下のようなCDNの1つであるAmazon Cloudfrontを使うことで5-6秒で取得することができ、良好なレスポンスタイムを維持できる。

CDN(Content Delivery Network)は、世界各所にサーバを置き、そこにメディアをキャッシュさせ、ユーザが取りに行くときには一番近いサーバにアクセスしてメディアをダウンロードするという動作である。Amazon Cloudfrontは、オリジナルのデータを日本のデータセンターに置いている。そして、参照頻度の高いファイルをAmazon S3(Amazon Simple Storage Service)にアップロードし、ダウンロードはAmazon CloudFrontで配信するという構成になっている。具体的な動きは以下の3つの段階を経る。

  • うごメモに対してメディアを投げるとフォーマットの変換を行う
  • その変換したメディアファイルをS3にも同時にアップロードする
  • うごメモのHTMLを表示するときにAmazon CloudfrontのURLで指定する

 

2 さらなる上限へ

10Gbps超えの世界

10Gbps超えの世界では以下の3つの対策がある。

  • AS番号(Autonomous System number)取得
  • IX(Internet exchange)接続によるトラフィック交換
  • BGP(Boarder Gateway Protocol)によるルーティング制御

 

はてなのインフラ

第11回〜第15回にわたってはてなのインフラについてまとめた。Webサービスのインフラの特徴をまとめると、低コストかつ高いスケーラビリティで、ほどほどだが十分に高い信頼性がキーになっている。各種技術としては、以下の4つを取り上げた。

  • スケーラビリティ
  • 冗長化
  • 効率向上
  • ネットワーク

 

最後に

トラフィック、ホスト数、サービス展開の分岐点として、1Gbps超え、500ホスト超え、太平洋越えという3つの視点を提供した。Webサービスのインフラ構成では、スケーラビリティ、冗長化、効率向上、そしてネットワークといった各種技術に気を配る必要がある。

次回は、大規模サービスに対応するための実践技術4選について解説する。

[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB DB PRESS plusシリーズ)


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>