BEAM仮想マシンにおけるわずか15ミリ秒の停止が、Klarnaのような企業にとって数百万件のピーク時決済を滞らせ、重大な事後分析を必要とする事態を引き起こす可能性があります。このような本番環境における重要なボトルネックに対処するため、Erik Stenman博士は、エンジニアがErlangおよびElixirランタイムの基礎となるメカニズムを理解するのを支援する包括的なガイド『The BEAM Book』を公開しました。

この画像は、記事の主な主題である新しく公開された技術マニュアルを特定するものです。
動機と開発の歴史
このプロジェクトは2012年10月に単一のDocBookファイルとして始まり、10年間にわたる反復的な書き換えと構造的変更を経てきました。著者は、O’ReillyやPragmatic Bookshelfとの2つの出版契約の中止を含む大きな障害に直面し、その結果、6,622ファイルのリポジトリと100万行を超えるテキストへと発展しました。

この視覚情報は、本の長い開発の歴史と最終的なリリースという物語を裏付けるものです。
HN Digestによる図表(happihacking.comの報告数値に基づく。数値はソースの通り)。
2017年、プロジェクトはCreative Commons BY-4.0ライセンスの下で公開のGitHubリポジトリに移されました。この移行により、コミュニティによる修正や図解の寄与が可能になり、プロジェクトはBEAMランタイムの決定的なリファレンスとしての現在の状態に到達しました。

この画像は、GitHubへの移行以降のプロジェクトのコミュニティの関与と成長を例証するものです。
「次世代のエンジニアが、コーヒーが冷める前にその停止問題を解決できるように、『The BEAM Book』を書きました。」
— Why I Wrote the BEAM Book
主要な技術的範囲
本書は、BEAM VMがどのようにコードを実行し、最適化するかのメカニズムに焦点を当てています。システムが高負荷の下でどのようにプロセスをスケジューリングし優先順位を付けるか、またプロセスのヒープ、スタック、バイナリがメモリ内でどのように管理されるかを網羅しています。
具体的な技術的深掘りには、整数や浮動小数点数などのデータ型のタグ付けスキームや、プロセスごとおよびグローバルなガベージコレクタの動作が含まれます。また、コンパイラがどのようにコードを命令に変換し、エミュレータがそれらの命令をどのように実行するかも解説されています。
実用的な応用と範囲
大規模なErlangまたはElixirシステムを運用するエンジニア向けに設計された本書は、本番環境での障害発生時に「なぜVMがこのように動作するのか」という問いに答えるためのマニュアルとして機能します。ボトルネックを特定し、現実のレイテンシを追跡するための「erlang:trace」のようなツールの使用に関する実用的なガイダンスも含まれています。
焦点を維持するため、著者は意図的にJITコンパイラやdirty schedulerなどの特定の複雑なトピックをコアテキストから除外しました。この範囲設定により、本書はErlangランタイムシステム(ERTS)を支える基礎的なサブシステムに特化したリファレンスであり続けることができます。