WargamingのErlang

Erlangはあたり知られおいたせんが、かなり興味深い技術であり、そのニッチに非垞に匷いです。 過去数幎にわたっお、ErlangはWeb開発でたすたす䜿甚されおきたした。



アヌランは物議をかもしおいる-頑固な支持者ず厳しい批評家の䞡方がいる。 ただし、開発で䜿甚する人はほずんどいたせん。 そのため、自分の䜿甚経隓に基づいおこの蚀語を称賛したりscったりする専門家はほずんどいたせん。



Wargaming Erlangは3幎以䞊䜿甚されおいたす。 箄12人の開発者ず、重い負荷の䞋で動䜜するいく぀かのプロゞェクトがありたす。 この蚘事では、Erlangの経隓ずビゞョンを共有したす。







それがすべお始たった方法



Wargamingは、さたざたなサヌビスがHTTPプロトコルずAMQPの䞡方で盞互䜜甚するマむクロサヌビスアヌキテクチャを䜿甚したす。 そのため、 RabbitMQサヌバヌが積極的に䜿甚されおいたす。 RabbitMQですべおが始たったず蚀えたす。 プログラマヌはただErlangに぀いお知りたせんでしたが、アヌキテクトずDevOpsはすでに経隓を積んでおり、RabbitMQがどこかに萜ちたのか、そのログずクラッシュダンプから䜕を抜出できるのかを突き止めたした。 そしお、それが萜ちないように䜕をする必芁があるか:)

圓時のアヌキテクトは長い間Erlangに同情しおいたが、これには十分な理由があるたで開発蚀語ずしお実装しなかったず蚀わざるを埗ない。



ゲヌムロゞックがPythonで蚘述されおいるBig World゚ンゞンでゲヌムサヌバヌを実行するこずは秘密ではありたせんPythonは珟圚も䌚瀟の䞻芁な開発蚀語です。 圓初、ゲヌム内チャットはこれらのサヌバヌを介しお機胜しおいたした。 しかし、ある時点でサヌバヌリ゜ヌス既に䞍足しおいたをチャットに費やすこずは䞍可胜でした。



Chat World of Tanksはゲヌムず密接に関連しおおり、倚くの特定の機胜をサポヌトしおいたす。 したがっお、圌は圌自身の決定を必芁ずしおいたした。 もちろん、1぀のサヌバヌを既存の負荷および蚈画されおいる将来の負荷に合わせおスケヌリングできないため、クラスタ化する必芁がありたした。 Erlangがそのようなプロゞェクトに遞ばれたのは論理的です。 その埌、最初のErlang開発者が䌚瀟に来たした。



どうだった



ゲヌムサヌバヌに加えお、倚くのWebサヌビスプレヌダヌの登録ず承認、支払いなどがありたす。 圓初は、すべおPython / Djangoで蚘述されおいたしたが、Web䞊のプレむダヌの数が急速に増加した結果、問題が発生したした。

それからTwistedを䜿い始めたした。 しかし、開発者ずアヌキテクトの䞡方が耇雑すぎるず考えおおり、その開発は高すぎたした。 アヌキテクトは代わりにErlangを䜿甚するこずを提案したしたが、管理者は十分なErlang開発者をどこに眮くべきかに぀いお合理的な疑念を抱いおいたした。



䞀方、Erlangで曞かれたプロトタむプはベンチマヌクで良奜に機胜したしたが、Twistedは傷぀き続けたした。 そしお、アヌキテクトはプロトタむプを超えお、Erlangで1぀の小さなWebサヌビスを䜜成しお開始したした。 ある建築家の努力によっお数週間で曞かれ、成功したこずが刀明したした。 次に、2番目のプロゞェクト、3番目のプロゞェクトがありたした。 同瀟はErlang開発者の怜玢を開始し、Python開発者は新しい蚀語を簡単に習埗したしたTwistedを敎理するよりも簡単な蚀語もありたした。



今日、同瀟にはErlang開発者ず呌ばれるこずができる12人の開発者がいたす。圌らはErlangでほずんどのコヌドたたはすべおを曞きたす。 それらのいく぀かは、数幎前からErlangで曞いおいたすが、他のものはPythonから切り替えたばかりです。



私たちはりェブ䞊で倚くの仕事をしおいたす。 Wargamingがリリヌスするゲヌムの数は増え続けおいたす。 特殊な特定のゲヌム甚のサヌビスからナニバヌサルサヌビスに移行しおいたす。 新しいプロゞェクトも開始されおおり、その倚くはErlangで曞かれおいたす。 欠員では、Python開発者圓瀟の䞻芁なプログラミング蚀語を頻繁に探したすが、Erlangの知識があればプラスになるこずを述べおいたす:)



その結果、匷力なErlang開発者のチヌムを線成するこずができたした。 その䞭には、たずえば、セルゲむプロホロフがあり、そのパッチはアヌラン/ OTPチヌムに受け入れられたした。 したがっお、Erlang仮想マシンにはSergeyコヌドがいく぀かありたす。



開発者の意芋



瀟内でさたざたな経隓を持぀倚くのErlang開発者がいるため、Erlangに぀いお幅広い意芋を集めるこずができたした。 経隓豊富な開発者ず初心者の開発者ずの間の蚀語認識の違いに泚目するこずは興味深いです。



経隓者は䞀般的にアヌランを前向きに考えおいたす。 そしお、これは驚くべきこずではありたせん。さもなければ、圌らはそれに぀いお䜕幎も曞かなかったでしょうし、経隓するこずもなかっただろう:) 圌らはより倚くの批刀ず䞍満を持っおいたす。 Pythonず比范しお、Erlangはラむブラリの衚珟力、むンフラストラクチャ、および豊富さの点で著しく劣っおいるため、これも驚くこずではありたせん。



すべおの開発者が同意する䞀般的なポむントから始めたしょう。







長所Erlang、䞀般的な意芋







初心者開発者に芋られる長所







経隓豊富な開発者に芋られる長所







短所、䞀般的な意芋







初心者開発者に芋られる短所







経隓豊富な開発者が芋る短所







もっず個人的な意芋







䞀番䞋の行は䜕ですか



䞀般的に、開発者はErlangを非難しお喜んでおり、プラスよりもマむナスを芋぀けたした。 これは驚くこずではありたせん。なぜなら、テクノロゞヌの利点にすぐに慣れ、それを圓たり前のこずず考え、欠点がいらいらしお泚目を集め続けるからです。 ただし、圓瀟では、開発者自身がプロゞェクトの蚀語を遞択したすもちろん、蚭蚈者が承認したリストから:)、この゜リュヌションは䞊に課されたせん。 そしお、圌らはErlangで曞いおいるので、それほど悪くはありたせん。 今日、私たちのりェブはPython 2.7、Python 3.5、Erlangを䜿甚しおいたす。 アヌキテクトは、Go蚀語、JVM蚀語の1぀、他のものなど、他のオプションを詊しおも構いたせんが、これたでのずころ、垌望する人はElixirでのみ芋぀かりたした。



朜入゚ントリのしきい倀



確かに、倚くの人はErlangの゚ントリしきい倀が䜎いず聞いおおり、蚀語を2週間知った埌、開発者は本番甚のコヌドを曞くこずができたす。 それは本圓ですが、すべおではありたせん。 蚀語は本圓にシンプルで習埗しやすいですが、萜ずし穎がありたす。



たず、未経隓の開発者の倚くが぀たずく「子䟛の問題」、経隓豊富な開発者はそれらを解決する方法を孊んだが、忘れる。 兞型的な䟋は、gen_serverでデッドロックを取埗するこずです。 これはほずんどすべおの人に起こりたす。 クラブに入るための䞀皮の儀匏:)同じサンドボックスから、文字列を䜿甚する必芁はなく、バむナリのみを䜿甚するこずを理解する問題。 プロゞェクトでこのルヌルを遵守するのは簡単ですが、残念ながら、サヌドパヌティのラむブラリでは䜕でもかたいたせん。このために準備する必芁がありたす。



第二に、幌皚な問題はたったくありたせん。 そしお最初の問題は情報䞍足です。 Erlangはほんの数冊の良い本を曞いおいたす。 それらのほずんどは、蚀語をそのようなものずしお蚘述し、適甚された問題を解決するための䜿甚法ではありたせん。 倚くの重芁な問題は、曞籍でも文曞でもたったく説明されおいたせん。 プロゞェクトのビルドに䜿甚するツヌルは䜕ですか 動䜜䞭のノヌドを監芖する方法は メヌルボックスのオヌバヌフロヌを怜出する方法は 他のメモリリヌクオプションはどうですか システムのスケヌリングを劚げるボトルネックを芋぀ける方法 䜿甚するラむブラリ 䞀方で、それらは少数です。 䞀方、人気のあるラむブラリには倚くの分岐点がありたす。 そしお、それらがどのようなフォヌクであるか、どのように異なるのか、どのようにサポヌトされるのかは明確ではありたせん。 MySQLで動䜜するドラむバヌを探しおいる人は、この問題をよく理解しおいたす:)そしお、分散システムはただ取り䞊げおいたせん。 このすべおに぀いお孊ぶこずができるのは、別の経隓豊富な開発者だけです。 したがっお、垞にチヌムに所属しおいるこずが重芁です。



゚リクサヌに぀いお



Erlangバむトコヌドにコンパむルされ、Erlang仮想マシンで実行されるいく぀かの蚀語がありたす。 最も人気のあるのぱリクサヌです。



数幎前、Ruby / Railsの開発者はErlangに泚目したした。 圌らはRails固有のパフォヌマンスの問題に察する解決策を探したした。 パフォヌマンスの問題は解決されたしたが、Erlangの他のすべおが奜きではありたせんでした。 そしお、圓然のこずながら、豊富なむンフラストラクチャを備えた匷力な高レベル蚀語から、圌らは厳しい䜎レベルの䞖界にいるこずに気付きたした。

Ruby / Rails開発者は、そのような生掻をしたくないこずをすぐに認識し、より快適な環境を自分たちで構築し始めたした。 圌らの努力の結果、Elixir蚀語ずPhoenix Webフレヌムワヌクができたした。それぞれに掻発なコミュニティがありたす。 3幎で、圌らはErlangが10幎でしたよりも倚くのWeb開発をしたした。



Elixirに぀いおの意芋ずErlangに぀いおの意芋は矛盟しおいたす。 読みやすく、簡朔で匷力だず考える人もいたす。 他の人は読みにくく、想像力に欠けたす。 保守的なErlang開発者はElixirをかっこよくしおいたす。 そしお、RubyやPythonからErlangに来た人たちは奜奇心でElixirを受け入れたす。



蚀語の長所





短所





コミュニティはむンフラストラクチャ、ラむブラリ、フレヌムワヌクで忙しく、蚀語の䞭栞は小さなチヌムによっお開発されおいたす。 このチヌムが資金を倱い、誰もそれに代わらない堎合、蚀語の開発ず維持が停止するリスクがありたす。



Wargaming Webでは、将来のサヌビスの1぀のプロトタむプがElixirで䜜成されおいたす。 圌がどのように自分を芋せおいるか芋おみたしょう。




これは、Erlang開発者の意芋です。 どう思いたすか 䜕があなたを蚀語に正確に惹き぀け、䜕があなたの仕事を劚げ、単に血をだめにするのですか コメントで共有しおください Erlangず完了したプロゞェクトでの経隓に぀いお教えおください。



ご枅聎ありがずうございたした

ナヌリ・ズロバ

WargamingのWeb開発者



All Articles