インフラ・DevOps
Cloudflareの名前サーバー名の裏にあるストーリーとは? (2013年)
What's the story behind the names of Cloudflare's name servers? (2013) (blog.cloudflare.com)
要約
Cloudflareは、ユーザーがドメイン登録時に同じドメインを同時に登録した場合の競合を解決するために、ユニークな名前サーバー名を採用しました。当初は標準的な名前でしたが、ユーザーの誤解を招くため、ボブやローラのような2〜4文字の一般的な名前を組み合わせることで、一意の組み合わせを生成し、登録の正当性を技術的に保証する仕組みを導入しました。
全文翻訳
Cloudflareの内部構造に関する一連のブログ記事をお届けします。よく受ける質問の一つに、私たちの名前サーバーの名前の意味があります。そのストーリーをご紹介します。
二つの名前が登場する
誰かがCloudflareにサインアップすると、私たちは名前サーバーとして2つのドメインを提供します。例えば:
bob.ns.cloudflare.com
lola.ns.cloudflare.com
では、ボブとローラは誰なのでしょうか?理解するには、私たちが解決しようとしていた問題について少し知る必要があります。
スムーズなサインアップ
私たちはCloudflareのサインアッププロセスを可能な限り簡単にすることに努めました。通常、ユーザーは完了までに約5分かかります。あなたがexample.comを所有していてサインアップしたいと想像してください。サインアップフォームにexample.comを入力すると、私たちはあなたのDNSレコードを吸い上げ、見落としたものを追加できるようにし、次にレジストラで入力する2つの名前サーバーを提供します。
私たちのシステムは、エッジにあるCloudflareのDNSサーバーにあなたのレコードをほぼ瞬時にプッシュします。その結果、レジストラで私たちの名前サーバーに切り替えると、ダウンタイムなしで通常通りサイトが提供されます。ほとんどの場合、これはすべて簡単です。初期に心配していた問題の一つは、単純に「2人のユーザーが同時に同じドメインをサインアップしたらどうなるか?」ということでした。
競合の解決
2人のユーザーが同時にexample.comをサインアップしたと想像してください。私たちは2つのDNSレコードセットを持つことになり、どちらが正確かは不明確です。どちらのレコードが権威あるかを明確に伝える方法が必要でした。私たちが求めていたのは、名前サーバーの名前自体にコードを埋め込む方法であり、ネットワーク上で最初のDNSリクエストを見たときに、ドメインがどの名前サーバーに権威があるかをテストし、正しいDNSレコードを返すことができるようにすることでした。
Cloudflareのサインアッププロセスの最初のイテレーションでは、名前サーバーの名前は比較的標準的な形式でした:
dns1.cloudflare.com
dns2.cloudflare.com
など…
私たちはそれらを組み合わせてユニークな組み合わせを作成しました。Alexがexample.comをサインアップした場合、彼はdns7.cloudflare.comとdns23.cloudflare.comを得るかもしれません。もしBettyが次にexample.comをサインアップした場合、彼女はdns3.cloudflare.comとdns84.cloudflare.comを得るかもしれません。example.comの最初のDNSリクエストを受け取ったとき、私たちはレジストラで実際に入力された名前サーバーをテストします。それがdns3とdns84であると仮定すると、Bettyのサインアップは有効と見なされ、彼女が入力したDNSレコードが権威あるものになります。
賢いユーザーを出し抜く
私たちが発見したのは、多くの人々がこれらのDNSドメイン名を見て、賢くやろうとしたことです。2つのドメイン名が2つの物理サーバーにしか指していないように見えるかもしれませんが、実際には私たちのグローバルデータセンター全体で実行されている数百のサーバーを参照しています。より多くのドメインを追加しても、クエリがより多くの名前サーバーによって処理されるわけではないことを説明しようとしましたが、ユーザーはそれでも試みることに気づきました。Bettyはdns3とdns84を得たかもしれませんが、彼女はdns3、dns4、dns5、dns6などを入力しようとすることがありました。これは実際には何のメリットもなかっただけでなく、検証に失敗する原因にもなりました。
私たちの解決策は、シーケンスが明白ではないドメイン名を考案することでした。私たちは午後を費やして、ボブやローラのような一般的な2〜4文字の名前を100個リストアップしました。そしてそれらを使用して、サインアップ時に配布するドメイン名を作成しました。当初は50個の男性名と50個の女性名がありました。サインアップするすべてのユーザーはそれぞれ1つずつ取得し、2,500通りのユニークな組み合わせが可能になりました。
この点について、一つだけ補足があります。かつて、ある人が私たちの名前サーバーの命名規則がヘテロノーマティブ(異性愛規範)であるという事実に基づいて、私たちを批判するサポートリクエストを書いてきました。単に2つの名前サーバーを受け取ったからといって、それらが何らかの関係にあるとは限らないと言っておきます。しかし、職場における多様性は良いことだと信じています。
ウォズの物語
名前サーバーに個性を加えるために、私たちはアーティストに100の名前サーバーを忍者のように描いてもらいました。描画をあまり活用したことはありませんが、あなたのウェブサイトを守る2人の忍者名サーバーという比喩を気に入っていました。特典として、Cloudflareの初期チームメンバー(例:Lee Holloway、Ian Pye)、投資家(例:Ray Rothrock、Carl Ledbetter)、さらには私たちの法人弁護士であるSam Coatesにも、彼らの名前を冠した忍者の絵を選んでもらいました。
描画の一つには、セグウェイに乗った笑顔の忍者が描かれていました。それはすぐに、当時パロアルトにあった私たちのオフィスからそう遠くないところに住んでいたAppleの共同創業者、スティーブ・ウォズニアックを思い出させました。スティーブはウォズとして親しまれており、街をセグウェイで走り回っているのを見かけるのは珍しくありませんでした。私は子供の頃からウォズのファンでした。Apple GSでプログラミングを学び、7歳で限定版のウォズニアック署名入りAppleに移行しました。
それは私たちの最初の100の名前のリストにはありませんでしたが、セグウェイに乗った忍者の絵を見たとき、「ウォズ」を含める必要があることは明らかでした。すでに100の名前サーバー名を本番環境に入れていたため、ビルを削除して場所を作ることはできませんでした。そこで、101番目の名前(男性51、女性50)を追加しました。今日現在、ウォズを名前サーバードメインの1つとして持つCloudflareのお客様は13,899人います。
2つのドメイン、多くの組み合わせ、多くのサーバー
51個の男性名サーバー名と50個の女性名サーバー名により、2,550通りのユニークな組み合わせがあります。これは、2人のユーザーが同じドメインをサインアップしようとした場合でも、正しいDNSレコードがネットワークにプッシュされることを保証するのに十分以上でした。
検証ステップが完了すると、名前サーバーの名前は技術的な重要性を失います。Cloudflareのインフラストラクチャ内のサーバーは、すべてのお客様のいずれかのリクエストに応答できるように構成されています。これにより、インフラストラクチャ全体で詳細なロードバランシングが可能になります。通常、2つのドメイン名を提供しますが、実際には世界中に分散された23のデータセンターのネットワーク全体で実行されている多くのサーバーを参照しています。あなたはボブとローラを得るかもしれませんが、他の誰かがスタンとエイミーを得るかもしれません。実際には、どちらも同じ弾力的なリソースプールにリクエストを送信しています。
この柔軟性により、世界で最も高速で堅牢な権威DNSネットワークの1つを構築することができました。そして、名前は単なるかわいい追加機能のように見えたかもしれませんが、私たちがやることのほとんどと同様に、実際には技術的な理由がありました。