Diary

@ssig33

03 May 2017 Wed 11:04

Go で Web アプリケーションやる 人が最近多いような気がするのだけど、というかこの日記サイト自体 Go で書かれていて僕もそういう人です。ですが、それをやるメリットってあるんですかね。

Web アプリを記述する言語としての Go のメリットは

  • Ruby とかよりは速い(PHP より速いのかは知らん)
  • libc と SSL の証明書ぐらいがあれば動くバイナリが作られるのでデプロイがそこそこ楽

ぐらいしか無いと思っていて、デメリットとしては、沢山あります。 Web を普通にやってる限り goroutine があるメリット別に受けられないんと違うか。フレームワーク内部では使われてたりするんだろうけど。

デプロイ云々に関しても Docker によって超富豪的にパッケージングする時代がやってきて、あまりメリットとしては大きいものではなくなってきていると思う。デプロイ先ノードが数千数万もあって Docker Registry の構築に神経を使うような世界ではそうでは ないかもしれないが、そんな人はあまり多くないだろう。

ではなんで僕が Go で Web をやるかというと、それはもうとにかく Ruby よりはだいぶ速いというのが大きいです。通常これは大した問題ではなくて、 Ruby や Rails は十分に速い。だが僕は Cloud At Cost というクソみたいな格安 VPS で構築されたサーバー 10 台を常用環境にを使っていて、このサイトとかもそこにデプロイしている。そこではディスク I/O 、CPU 、ネットワークが非常に貴重なリソースで、また頻繁にサーバーは故障する。そのような環境下では Go の軽便な性質が非常に有利に働く。

とはいえそんな糞みたいな環境でやっていってる奴が俺以外にいるのか?いねえだろ。

Go の Web アプリでの利点というのは金でなんとかなる程度の話ではないかと思う。ただ、 Go で Web をやってなんか辛いのかというと、まあ別にこんなもんだよな、、、感もあり Go だけでやっていく世界というのは、アリなんですかね。でも普通は PHP や Ruby でいいと思うんだよな。

というのは array と slice の違いも理解しないで Go やっていっているような人が最近多くて、そこを曖昧に済ませていい程度のユースケースなら PHP の方が幸せに生きていけるんじゃないの?と思うんですがどうでしょうか。

このへんはわりと Go をまっとうに使っている事例な気はしている。