前回は、ハードウェアのリソースの使用率を向上させる仮想化技術についてまとめた。ここでは、サービスの成長と分岐点である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層構造で構成することがセオリーである。
- 一番小さいのがAccess層(アクセスエリア):100台程度
- 次がDistribution層(ディストリビューションエリア):1000台程度
- 一番上が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シリーズ) |