
シェア:
スタンダップ・コメディーの学位論文を持つ俳優の訓練を受け、ミートアップ・シーンを経てPHP開発に携わるようになった。技術について話したり書いたり、レコード・コレクションから変わったレコードを再生したり買ったりしています。
Erlangの(とても)簡単な歴史
所要時間:1 分
1986年に発売されたにもかかわらず(あなたのライターが生まれたわずか2年後)。 生まれた)、私が出会ったのは Erlangに出会ったのは2017年頃だった。ウェブアプリケーション開発者として、私は他の多くの人にとってありそうなシナリオでErlangに出会いました: RabbitMQ.その時点で、私たちは特に複雑で時間のかかるプロジェクトでRabbitMQを使っていました。 ETLプロセス.スピード、同時実行性、安全なレコードロックが必要でした。後に、RabbitMQがこれを実現できた理由は、これらの要求のために特別にErlangで書かれていたからだとわかりました。
2025年の平均給与が 2025年の平均給与の第2位に挙げられていることを考えるとそれは一体何なのだろうか?
風景
どのような話であれ、その出発点はどこにギャップがあるかを見ることだ。 PHPは、HTMLページを動的に作成するスクリプト・ツールとして誕生した、 JavaScriptははブラウザ内で実行できるようにするためのLiveScriptとして始まった。1995年の当時から、この2つの言語はその要求の性質上、認識できないレベルまで完全に進化しました。同じように、Erlangは特に通信のために作られました。この時点で、テレコミュニケーションは大規模なスケーリング、超高同時性、リアルタイム実行に対応できるコードを必要としていました。その誕生は AXD301 ATMスイッチエリクソン エリクソンエリクソン社のATMスイッチAXD301の開発から生まれた。平たく言えば、ソフトウェアが99.9999999%の可用性を必要とするハードウェア・スイッチである。これを実現するプログラミング言語は存在しなかった。
進化
Erlangは、エリクソンがこの言語をオープンソースにする決断をしたことで、急速に普及し始めました。 オープンソースをオープンソースにすることを決めたからです。言語が公開され、それに伴って外部のプロジェクトも出てきました。この時点から、この言語をどのように使うか、どのような使用例が最も強いかについての概要を示す資料が徐々に出てきました。
「レット・イット・クラッシュ
Let it burn!プロセスを失敗させることが奨励されているのだ。私はディフェンシブプログラミングがアプリケーションのオーサリングに絶対不可欠な土地から来ました。なぜならErlangは古典的なサーバーベースのバックエンド言語として設計されていないからです。クラッシュが許容される理由は、開発者がコードを小さな塊で書くように推奨されているからです。アプリケーションを実行するのは、クラッシュしたスレッドやプロセスを探し、それをリブートするスーパーバイザーシステムでなければならない。ペイロードが完了しなくても問題ない、 ペイロードが完了しなくても問題ではありません。 これがErlangがCommunications Vertical(通信垂直)市場で広く使われるようになった理由です。Erlangが生み出す弾力性が、メッセージングクライアントのRabbitMQがErlangで書かれている理由です。また MetaのWhatsAppがErlangで書かれている理由もここにあります。また 人気のメッセージングアプリDiscordがElixirで書かれている理由も説明できます。(で書かれている理由も説明できます。VonageがCommunications-Platform-as-a-Service(CPaaS)であることを考えると、私がErlangのユースケースについてすでに背景知識を持っていた理由もわかります。)
コンカレンシー
どのようにしてこのレベルの並行性を処理できるのでしょうか?従来のウェブ・アプリケーション開発者は、以下のような非同期/プロミス・システムに出会ったことがあるかもしれない。 C#やシングルスレッドの Node.js.オペレーティングシステムのスレッドの代わりに、BEAMと呼ばれる独自のVMがあり、軽量な個々のプロセスを処理します。BEAMは(PHP Fibersのようなものが並行性をもたらすのと同じように)光速でプロセス間を切り替えることができるので、一度に何百万ものプロセスを扱うことができます。
壊れるのを見る
先に述べたフォールトトレランスは、監督ツリーによって処理される。 によって処理されます。 この内部デザインパターンはErlangのOpen Telecom Platformコアの一部です。プロセスを監視するスーパーバイザーのネットワークがあり、開発者が従来のtry-catchスタイルのエラーハンドリングを試す代わりにプロセスの再起動に注目することの重要性を強調しています。
防弾ホットスワップ
プログラミング言語では、今まで出会ったことのない機能に驚かされることがある。 実行時にRubyのコア言語をモンキーパッチできることを知ったことを覚えている。この発見と似ている。Erlangの核心はフォールトトレランスだということを覚えていますか?そう、Erlangが動いているとき、 Erlangが動いているとき、VMを止めることなくコードを入れ替えることができるんだ。 もしあなたがWhatsAppがどうやってダウンタイムゼロで大量のアップデートを送っているのか不思議に思ったことがあるなら、これがその答えです。
結論
Erlangを今の形にした基本的な考え方について基本的に説明してきました。このような背景から、Erlangはメッセージングやコミュニケーションだけでなく、同じレベルのアップタイムやフォールトトレランスを必要とするものにとって理想的な言語です。また、Erlangはデータベースで使っても素晴らしい応用ができます。 CouchDBと Riakの両方がErlangで書かれている理由も説明できるだろう。独自のIoTバックエンドを書こうと考えている野心的な開発者、あるいはネットワークAPIを自分のスタックに統合しようとしている開発者のために、あなたが取り組んでいることをぜひお聞かせください。
ご質問がある場合、またはあなたが作っているものを共有したい場合は、こちらをクリックしてください。
会話に参加する VonageコミュニティSlack
登録する 開発者ニュースレター
フォローする X(旧ツイッター)最新情報
チュートリアルを見る YouTubeチャンネル
LinkedInの LinkedIn の Vonage デベロッパーページ
最新の開発者向けニュース、ヒント、イベント情報をお届けします。