2020年2月2日日曜日

uWebSockets が高速 Web Framework の新定番になるかも

巷で有名な Web Framework、例えば Rails は激遅です。速度が必要な場合には、高速な HTTP/HTTPS のルーティングができる Web Framework が必要となります。 しかし高速 Web Framework にはこれまで決定打がありませんでした。

ベンチマークの基盤自体は結構前から整っていて とても参考になるサイトがある のですが、 少し考えてみればわかるように、速度だけを重視すれば機能を小さくするべきであり、サポートが落ちて採用が不安になってくる。 結果、速度は早いけどサポートが甘いフレームワークは 先ほどのベンチマークサイト からも消される状態になってました。 速度を重視しつつサポートも手厚いフレームワークは、これまでなかったのです。 探すのも大変になり困っていたのが、少し前の状態でした。


ところが最近、このベンチマークのランキングの「裏」にやたら名前が出てくる基盤フレームワークがあることに気付きました。 それが µWebSockets というもの。 WebSocket もできるけど、HTTP のルーティングもできる基盤フレームワークで、ものすごく早い。 2016年にリリースされていたようで、なんと HTTP/HTTPS サーバの h2o より早いらしい、凄いな。 じゃあなぜ名前が直接載っていないのかというと、Web Framework ではないから…なのだろうけど、Node.js で高速 Web Framework として有名な Fastify よりずっと早いことが報告されている。 なんかもんにょりする話だけど、Web Framework Benchmarks ではよくあることなので、あまり考えないことにする。


引用: uWebSockets


C/C++ で実装されており、2016 年からあったのですが、Node.js、Python へのバインディングがつい最近リリースされました。 主要言語で利用しやすくなってきた。 仮想通貨系の企業のサポートを受けているようで、既に結構な量の採用があるらしい。 新規採用にも安心感があるように感じる。 Python 版の µWebSockets.py は、昔から爆速 (だけど alpha stage) なフレームワークとして有名な Japronto より早いらしい。 Node.js 版は µWebSockets.js が本家だけど、Web Framework っぽく作り変えたサードパーティ実装が高速 Web Framework のランキング上位にある。 Express 寄りの実装になっているとのことで速度は落ちてそうで、本家で実装すればそれより早いのではないかな。

使いやすさを改良してサードパーティ実装を作り始めるとサポートの問題が出てきてしまうと思いますが、処理の根幹部分は µWebSockets で変わらない。 事実上これを利用すれば良いのではないかと思うし、言語ごとのバインディングがもっと作られるようになれば、一気に広まる気がする。

高速 Web Framework もついに定番ができたのかも知れません。

0 件のコメント: