Cloudflareについて内容の濃い話を始めたかったら、当社のことを「CDN」と表現してみてください。CDNは一般に、負荷分散を提供するものではありません。サーバーレスアプリケーションを配置することもできませんし、間違いなくあなたの電話にインストールできるものでもありません。こうした混乱による損失の一つは、複数のパブリッククラウドで仕事をしたい人やクラウドと自分が持つ他のハードウェアの両方で仕事をしたい人のためにCloudflareができること全てを多くの人が把握していないことです。
負荷分散
Cloudflareには、世界中に広がる180のデータセンターに無数のサーバーがあります。それぞれがL7ロードバランサーとして機能し、配信元間で、それがどこであろうとも着信トラフィックを送信できます。例えば、AWSのEC2にある一連のマシンとGoogle クラウドに保持している別のセットとの間に負荷分散を追加できます。
この負荷分散は、単なるラウンドロビントラフィックではありません。どのくらいのトラフィックが各クラスターに行くかを管理する重み付けをサポートします。レイテンシーベースのルーティングをサポートし、トラフィックをより近いクラスターに自動的にルーティングします(地理的な分散を追加するのは、マシンをスピンアップさせるのと同じくらい簡単です)。ヘルスチェックもサポートしていて、現在正常なクラウドに自動的にトラフィックを直接送信できます。
最も重要なのは、プロバイダーのクラウドにおいて実行されず、正しく機能するためにそれらに依存しないことです。さらに、負荷分散は世界中の事実上すべてのインターネットユーザーの近くで実行され、パフォーマンスが低下することもありません。(Argo Technology を使用すると、パフォーマンスのさらなる向上が期待できます)
Argo Tunnel
マルチクラウドの展開を管理する上で最も難しい要素の1 つが、ネットワークです。各プロバイダーにネットワークとファイアウォールを定義する独自の方法があり、複数のクラウドでクラスターを展開できるツールであっても、大抵の場合、ネットワーク構成を同じように動作させるための管理が十分できません。設定のタスクは、試行錯誤のゲームであることも多々あり、組織内で失敗した実験として「マルチクラウドに移行する」にして、最終設定は二度と触れないのが一番です。
Cloudflareでは、ネットワークの意味をひっくり返すArgo Tunnelという技術を備えています。ポートを開いて着信トラフィックを送信するのではなく、各仮想マシン(または k8s ポッド)が最も近いCloudflare PoPへのアウトバウンドトンネルを作成します。すべてのインターネットトラフィックは、このトンネルを通過します。全ポートをインバウンドトラフィックに対して閉じておけば、これ以上インターネットネットワークについて考えなくてもいいのです。
なぜこの設定がそれほど強力なのでしょうか。それは新しいロケーションでマシンをスピンアップさせることが簡単になるからです。オーストラリアでマシンが10台ほど必要ですか?マシンがArgo Tunnelデーモンを開始さえすれば、トラフィックの受信も開始します。もう必要ありませんか?マシンをシャットダウンすると、トラフィックが別の場所にルーティングされます。もちろん、一つのパブリッククラウドプロバイダーに依存しているものはなく、問題が発生した場合でも信頼性が高くなります。
Argo Tunnelでは、新しいクラウドにマシンを追加したり、作業負荷をクラウドに移行し始めても、マシンをオンプレミスに保つのは簡単です。
アクセス制御
Argo Tunnelを利用して気がつくことは、Cloudflareのネットワークとご自身のインフラストラクチャを接続するトンネルが確保されているということでしょう。トラフィックがそのネットワークに到達しても、必ずしもマシンに直接流れる必要はありません。例えば、IDプロバイダー(Okta や Active Directory など)を利用する場合にアクセス管理を適用して、誰が何にアクセスできるのか決定することが可能です。VPCやVPN設定と格闘するよりも、ポリシーを利用して要求ごとにアクセスできるユーザーを正確に決定できるゼロトラストモデルに移行できます。
実際に、これをSSHでも行うことができるようになりました!すべてのユーザーアカウントを 1 か所で管理し、どのクラウドに属しているかに関係なく、どのインフラストラクチャにアクセスできるかを正確に制御できます。
Cloudflareの信頼性
完璧なコンピュータシステムというものは存在せず、当社のシステムも例外ではありません。当社にも間違いはあり、コードにバグあったり、日々インターネット規模での運用に伴う苦痛に対処しています。しかし、コンピュータの近代史における偉大な革新の一つは、個別には信頼性の低い、多くのコンポーネントの上に信頼性の高いシステムを構築できるという考え方です。
CloudflareのPoPはそれぞれが、お互い、または中央データセンターからの通信やサポートを受けずに機能できるように設計されています。それだけで、ネットワークパーティションに対する許容度が大幅に向上し、1 つのシステムを維持することで保守している180の独立したクラウドに近づけ、すべてのトラフィックにサービスを提供できます。
また、エニーキャストに基づいて構築され、インターネットの基本的な信頼性が活用できるシステムでもあります。インターネットはBGPと呼ばれるプロトコルを使用して、特定の IP アドレスのトラフィックを受信する各システムに「広告」を要求します。そして、各ルーターはアドレスを広告しているユーザーの中で誰が最も近いかに基づいてトラフィックの転送先を決定します。当社は、すべてのデータセンターですべてのIPアドレスを広告します。データセンターがダウンした場合は、BGPルートの広告が停止し、そのルートと全く同じパケットがシームレスに別の PoPにに到着します。
結局のところ、当社の目的はより良いインターネットの構築を支援することです。当社はインターネットが単一のプロバイダの背後に構築されているとは思いません。こうしたクラウドプロバイダーが提供するサービスの多くは、純粋に、複雑すぎてインターネットが求めているだけの信頼性がありません。
真の信頼性とコスト管理の両方の点で、複数のクラウド上に存在する必要があります。80年代と90年代のインターネットが与えてくれたツールで、未来に進んでいくのは無理だということは明らかです。よりスマートなネットワークで、対応を広げ、より良くなれるのです。