作ったやつ↓。

https://github.com/funatsufumiya/git-lfs-rust-cgi-server/

以前作っていた、↓のPHP版と比較して、体感的に10倍から100倍はレスポンスが速い。すごい。

https://github.com/funatsufumiya/git-lfs-php-server

どちらのバージョンも、WAFには注意。レンタルサーバ等でWAFが有効だと、特定の通信がブロックされて403が返ってくる。(これで何回もLFSのファイルアップロードができなくて悩んで何日も費やした。原因がわかってよかった。)

ちなみに、RustでCGIを書くというのは前からやりたいなとずっと思っていて、ようやく重い腰を上げて作ることができた。

本当はnimとかodinとかVとか別の言語で書こうと思っていたけれど、使っていたレンタルサーバのサーバインスタンスが古すぎて、GLIBC (libc) のバージョンがものすごく古く、Rustのmuslでないと動かなかった。他は全く受け付けず、V言語をサーバ上でビルドしてみようとか、gccの代わりにサーバ上にmuslを置いたりとか、zig ccを置いたりとかしてみたけど無駄だった。逆にRustすごい。

正直、Rustに書き替えるだけでこんなにもレスポンスがよくなるとは思っていなかった。さばけるレスポンスは変わるだろうとは想像していたけれど、こんなに違うならもっと早くやればよかった。

ただ、CGIのファイルサイズ自体は、依存ライブラリが多いと意外と大きいので注意が必要そう。もちろんのことサーバサイドの話なので、ユーザに関係はないのだけれど、バイナリサイズが大きいということはおそらくそれだけ処理も重いと想像される。(が、ゼロコスト抽象化などで実際は不透明。)

なんかでも書いてていろんな意味で楽しくて、今までのモヤモヤが解けたようなスッキリ感があって、一つ光明が見えたような気がして、nimとかRustとかodinとかVとかで楽しくやっていけそうな未来がちょっと見えてきたかもしれない。


このエントリーをはてなブックマークに追加follow us in feedly