HTTP/1.1の「交通渋滞」をどう乗り越える?ドメインシャーディングという裏技
こんにちは!ネットワークの世界へようこそ。今日は、Webサイトを表示する時に裏側で起きている「ちょっとした工夫」のお話をしましょう。
皆さんは、Webサイトを開いたときに「画像やスクリプトがいっぱいあって、表示に時間がかかるな…」と感じたことはありませんか?実はこれ、ブラウザという「郵便配達員」が、一度に持てる荷物の数に制限をかけられていることが原因かもしれません。
今回は、HTTP/1.1という少し昔ながらのルールの中で、エンジニアたちが頭をひねって編み出した「ドメインシャーディング(Domain Sharding)」という知恵について、一緒に紐解いていきましょう。
—
郵便配達のルール:なぜ「同時接続数」に制限があるの?
まず、身近な例で考えてみましょう。あなたはWebサイトという「大きな荷物」を届ける郵便配達員です。
HTTP/1.1というルールでは、「一つの住所(ドメイン)に対して、同時に繋げる道は6本まで」という暗黙のルールがありました。これは、サーバー側がパンクしないように、また公平に通信を行うためのブラウザ側の配慮です。
- 道が6本しかない状況
- 荷物(画像、CSS、JavaScriptファイルなど)が100個あったらどうなるでしょう?
- 6個ずつしか運べないので、残りの94個は「順番待ち」の行列に並ぶことになります。これが、Webサイトの表示が遅くなる原因の一つです。
「じゃあ、この行列を解消するために、道を増やせばいいんじゃない?」と考えたのが、ドメインシャーディングの始まりです。
—
ドメインシャーディングの仕組み:住所をバラけさせる
ドメインシャーディングの考え方はシンプルです。「一つの住所に道が6本しかないなら、住所を増やしてしまえばいい」という発想です。
例えば、`example.com` という住所だけで画像もスクリプトも運ぶのではなく、以下のようにサブドメインを細かく分けます。
- `img1.example.com`
- `img2.example.com`
- `img3.example.com`
こうすると、ブラウザは「おっ、これらは別の住所だから、それぞれ6本ずつ道が使えるぞ!」と判断します。結果として、6本×3ドメイン=18本の道で同時に荷物を運べるようになり、行列が劇的に短くなるのです。
設定のイメージ(DNSの例)
実際にインフラ側で設定する場合、DNS(インターネットの住所録)に複数の名前を登録します。
DNSの設定ファイルイメージ
すべて同じサーバー(IPアドレス)を指していますが、名前だけ変えています
img1.example.com. IN A 192.0.2.1
img2.example.com. IN A 192.0.2.1
img3.example.com. IN A 192.0.2.1
—
「あちらを立てればこちらが立たず」のトレードオフ
「じゃあ、ドメインを100個くらい作れば爆速になるのでは?」と思ったあなた、鋭いです!でも、世の中そんなに甘くはありません。ここには「DNSルックアップ」というコストが潜んでいます。
DNSルックアップのコスト
新しいドメインにアクセスするたびに、ブラウザは「このドメインはどこのIPアドレスにあるの?」と、郵便局(DNSサーバー)にいちいち問い合わせに行く必要があります。
- ドメインを増やしすぎると…
- 郵便局への問い合わせ(DNSルックアップ)の回数が増えすぎて、かえって時間がかかってしまう。
- 接続先のサーバーごとに、セキュリティの握手(TLSハンドシェイク)をやり直す必要があり、その準備に時間がかかる。
つまり、「同時接続数を稼ぐメリット」と「住所確認の手間(DNSコスト)」のバランスが非常に重要なんです。一般的には2〜4つ程度のサブドメインに分けるのが良いとされています。
—
現代のWeb開発での立ち位置
ここまで読んでいただいて、「なるほど、じゃあ今度作るサイトもドメインを分けよう!」と思った方、ちょっと待ってください。
実は、この手法は「HTTP/1.1という古いルール」での苦肉の策です。現在は「HTTP/2」や「HTTP/3」という新しいルールが普及しています。
これらの最新規格では、一つの接続で何百ものファイルを同時に流す(多重化)ことができるため、ドメインシャーディングをする必要はほとんどありません。 むしろ、分けないほうが効率的です。
まとめ:歴史を知ることは、未来を知ること
ドメインシャーディングは、インフラエンジニアたちが「どうすればユーザーに速くコンテンツを届けられるか?」と知恵を絞った、技術の歴史そのものです。
- HTTP/1.1の制限:一つの住所につき6本の道しかない。
- 解決策:サブドメインを分けて「住所」を増やし、道の数を稼ぐ。
- 代償:DNSの問い合わせ回数が増えてしまう。
「なぜこの技術が必要だったのか?」という背景を知ることは、ネットワークの根本的な挙動を理解する最短ルートです。今はHTTP/2が主流ですが、トラブルシューティングの現場では、こうした歴史を知っていることが大きな武器になりますよ。
皆さんのWebサイトが、今日もパケットの渋滞なく、スイスイとユーザーに届きますように!
コメント