なぜ Erlang/OTP を使い続けるのか

2019 版

以前同じタイトルでイベントで発表させてもらいました。その時の資料はこちらです。それの 2019 年版を書いてみます。

まとめ

Erlang/OTP を使い続ける理由を一言で説明すると「落ちにくい複雑な仕組みを持ったネットワーク・サーバを少人数で開発、メンテしていくのに Erlang/OTP はとても向いている」からです。

現状

2018 年も 2019 年に入っても、Erlang/OTP を書いています。社内には Erlang/OTP に明るい人がいます。またクローズドソースな自社製品はすべて Erlang/OTP で書いています。

実際、自社製品は多くの企業で使われています。導入事例を公開していますので興味がある人は見てみてください。

また負荷試験ツールにも Erlang/OTP を利用しています。

Go でだめな理由はあるのか?

よく比較されますが、結論としては Go でいいと思います。

自分は Go についてとても良くわかっているわけではありませんが、Go でダメな理由はありません。実際、外のお手伝いでリアルタイムなサーバを書く時は Go を採用しています。

Erlang/OTP を使っているのは自分が使い慣れていることが一番大きい理由です。また Erlang/OTP にとても明るい社員がいるのも大きいです。

実際 10 年以上 Erlang/OTP を書いてきて、 Erlang/OTP の安定感にとても助けられてきています。ただそれだけです。

実際 Erlang/OTP をこれから新しく学ぶくらいなら Go を学ぶべきだと思っています。むしろ Go を学ばない理由が思いつきません。Erlang/OTP が学びたいなら Go を学んでから Erlang/OTP を学ぶのが良いと思います。

Go はとてもシンプルに作られていますし、何より Google が優秀なエンジニアを投入しています。これはとても重要です。ライブラリもたくさん出てきています。

Erlang/OTP の強みは何?

プロトタイプとして書いた製品がプロダクションレベルで動くということです。Erlang VM が性能と安定を担保してくれることだと思っています。

なんとなく書いてプロダクションに持っていける安心感は凄いです。真面目に書けば全く落ちなくなります。実際自社製品は販売開始して 3 年以上立っていますが、落ちたという報告は一度も受けていません。

Erlang/OTP の弱みは何?

ライブラリが全く充実していません。何かを作ろうと思った場合は 1 からの開発を求められます。ただ複雑なネットワーク・サーバの場合はどの言語でも似たようなものなので気にしていません。偶然 OSS がある確率の差くらいはあるかもしれませんが。

残念ですが、ネットワークワーク・サーバとしてみた場合は性能が Go と比較したら遅いです。これは大きな弱みです。実際、 ejabberd は NIF という C 拡張をガッツリ使っています。

今後も Erlang/OTP を使っていくの?

使っていきます。自社製品を Erlang/OTP から Go に置き換えることは無いと思います。今、自社製品で実現できている多くの機能を Erlang/OTP 以外で実現するのは自分の技術では無理です。

繰り返しになりますが、小さなチームで複雑な仕組みを持ったネットワーク・サーバを持った製品を開発し続け、安定性を維持していくのには Erlang/OTP は最適です。

小さなチームで戦い続けたい自分には Erlang/OTP はとても強力な武器だからです。

もちろん Go も色々な場面で使っていきたいと思っています。結局は適材適所です。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store