- Erlangのライブラリ集
- それらを用いた並行プログラミングをしていくためのフレームワーク/デザインパターン
- OTPではOTP内のモジュールを使った便利な定番パターンのことを「Behavior」という名前で定義していて、これらを使うことでElixir(本来はその派生元であるErlang)の並行処理や堅牢なプロセス監視を簡単に実現することができる
GenServer? †
- Elixirの軽量プロセス内で状態(state)を扱うためのBehavior
- メッセージパッシングで軽量プロセスに保持しておきたい状態を送って、必要な時に(同じくメッセージパッシングで)取り出すことができる
- 状態が不要になったらGenServer?のプロセスごと破棄すればGCの対象になって勝手にお掃除してくれる
Supervisor †
- プロセスの監視と再起動の全てを執り行うBehavior
- Elixirではプロセス上でエラーが発生したら、プロセス内でエラーハンドリングをするのではなく、もうプロセスごとクラッシュさせてしまって、それを監視するSupervisorでプロセスを再起動するなり、なにかしらエラーメッセージを吐くなりさせることが推奨されている
- Supervisorというのはシステム上にただ一つだけ存在する、というものではなく、Supervisorを監視するSupervisorを作成するなど、Tree上に監視体制を構築することが可能
ホットスワップ †
|