Cloudflareは、RustフレームワークPingoraのオープンソース化を発表した。Pingoraは、Cloudflareが開発したHTTPプロキシサービスの構築を支援するRustの非同期マルチスレッドフレームワークだ。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Cloudflareは2024年2月28日(米国時間)、RustフレームワークPingoraのオープンソース化を発表した。PingoraはApache License version 2.0でリリースされている。
Pingoraは、Cloudflareが開発したHTTPプロキシサービスの構築を支援するRustの非同期マルチスレッドフレームワークで、これまでCloudflareのグローバルネットワーク全体で約4兆件のインターネットリクエストを処理してきた。
Pingoraをオープンソース化する背景として、Cloudflareは「全性の高いフレームワークを使用し、独自のインターネットインフラを構築するためのツール、アイデア、インスピレーションを提供したい。メモリ安全性の重要性に対する認識が高まっている現在、Pingoraのようなフレームワークには大きな意義がある」と述べている。
Pingoraは、プロキシだけでなく、クライアントとサーバのためのビルディングブロックを提供する。これらのコンポーネントとともに、イベントカウント、エラー処理、キャッシュなどの一般的なロジックを実装するユーティリティーライブラリも提供している。
Pingoraは、HTTP/1、HTTP/2、TLS、または単なるTCP/UDPの上にサービスを構築するためのライブラリとAPIを提供する。プロキシとしては、HTTP/1とHTTP/2のエンドツーエンド、gRPC、WebSocketのプロキシをサポートしている(HTTP/3のサポートはロードマップに含まれている)。
また、カスタマイズ可能なロードバランシングとフェイルオーバー戦略も備えている。コンプライアンスとセキュリティに関しては、一般的に使用されている「OpenSSL」と「BoringSSL」ライブラリの両方をサポートしており、FIPSコンプライアンスとポスト量子暗号(PQC)が付与されている。
これらの機能に加えて、Pingoraはフィルターとコールバックを提供し、ユーザーがサービスをどのようにリクエストを処理、変換、転送するかを完全にカスタマイズできるようにしている。「これらのAPIは、多くがOpenRestyの『*_by_lua』コールバックに直感的にマッピングされているため、OpenRestyおよびNGINXのユーザーにとって特に馴染みのあるものとなるだろう」(Cloudflare)
運用面では、Pingoraはゼロダウンタイムのグレースフルリスタートを提供しており、受信中のリクエストを残らずアップグレードできる。「Syslog」「Prometheus」「Sentry」「OpenTelemetry」その他必要な観測ツールもPingoraと統合可能だ。
Cloudflareによると、Pingoraは、C/C++で記述されたサービスにとって、メモリ安全性の高い選択肢であるという。また、コーディングミスやメモリ安全性の問題に取り組む時間が短縮されるため、新機能を実装する際の生産性が向上するとしている。
Pingoraはマルチスレッドアーキテクチャを採用しており、CPUとメモリリソースを節約できる。
Pingoraプロキシフレームワークが提供するAPIはプログラム可能で、カスタマイズされたゲートウェイやロードバランサーを構築したいユーザーに適している。
PingoraのAPIでロードバランサーを構築した場合、Pingoraのプロキシフレームワークがフィルターとコールバックを経由してどのようにリクエストを処理しているかについては下図の通り。
Pingoraのプロキシフレームワークは、リクエストのさまざまな段階で多くのフィルターとコールバックを提供している。ユーザーはこれを活用して、リクエストとレスポンスを修正したり、拒否したり、ルーティングやログへ記録したりできる。
Pingoraのプロキシフレームワークがコネクションプール、TLSハンドシェイク、リクエストの読み込み、書き込み、解析、その他一般的なプロキシタスクを処理している。そのためユーザーは、自分にとって重要なロジックに集中できる。
Copyright © ITmedia, Inc. All Rights Reserved.