Cloudflare、NGINXに代えて自社開発のRust製HTTPプロキシ「Pingora」をグローバルCDNに採用。性能向上しつつCPUとメモリ消費を3分の1に
今回は「Cloudflare、NGINXに代えて自社開発のRust製HTTPプロキシ「Pingora」をグローバルCDNに採用。性能向上しつつCPUとメモリ消費を3分の1に」についてご紹介します。
関連ワード (独自、説明、開発等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、同社自身がRust製のHTTPプロキシである「Pingora」を開発し利用していることを明らかにしました。
Pingoraはすでに同社のCDNに採用され、毎日1兆回以上のリクエストを処理し、性能向上や数多くの新機能の提供を実現しつつ、従来と比較してCPUとメモリリソースの消費はいずれも3分の1程度に収まっているとのこと。
Pingoraは現時点でコードなどは公開されていませんが、いずれオープンソース化の計画についても明らかにするとCloudflareは説明しています。
Today we are excited to talk about Pingora, a new HTTP proxy we’ve built in-house using Rust that serves over 1 trillion requests a day, boosts our performance, and enables many new features for Cloudflare customers. Read all the details: https://t.co/PvUG42oFje
— Cloudflare (@Cloudflare) September 14, 2022
NGINXはアーキテクチャや開発体制に課題があると指摘
CloudflareはNGINXの性能上の課題について、各リクエストが1つのワーカーで処理が行われる仕組みが特定のCPUコアに負荷を偏らせること、接続の再利用性が低いことなどが、性能低下を引き起こしていると指摘。
またオープンソースであるNGINXのアップストリームから乖離しない範囲でNGINXが望む機能を独自に追加していくのは容易ではなかったこと、NGINXはメモリセーフではないC言語で書かれていること、そしてNGINXのコミュニティはあまりアクティブではなく、しかも外部に対して閉鎖的であることなども、NGINXの採用を辞めた理由として挙げました。
そこでCloudflareは3つの選択肢を検討しています。
1つ目はなんとかしてNGINXをこのまま使うか、もしくは自社でフォークしてNGINXベースのソフトウェアを使い続けること。2つ目はEnvoyなどNGINX以外のHTTPプロキシの採用を検討すること、そして3つ目は独自に最初から開発することです。
1つ目の選択肢はNIGIXのアーキテクチャの課題の解決にならず、2つ目の選択肢は短期的にはよくても将来、NGINXと似たような課題を抱える可能性を排除できないとされ、最終的にCloudflareは3つ目の選択肢であるHTTPプロキシの自社開発に乗り出すことにしたと説明されています。