ErlangのOTPフレームワークを使うと、耐障害性の高いアプリケーションを楽に開発できる。 ここではGleamからOTPフレームワークを使い、そのようなアプリケーションを作る方法をメモしていく。

GlemeからOTPにアクセスする

GleamにはOTPフレームワークを扱うためのライブラリがある。 リポジトリ

これを使うことでSupervisorなどの機能にアクセス出来る。

用語の整理

Process

OTPの最下位の構成要素で、他のアクターは全てプロセス上に構築される。しかしProcessはGleamではあまり使われず、より多くの機能を提供する他のアクタータイプが使われる。

詳しくはここを参照。

Actor

Gleamで最も一般的に使用されるインターフェース。ErlangのGenServerと同様に、OTPからのメッセージを自動的に処理する。 GenServerなどの名称を使っていない理由は、GleamのActorはGenServerと違い型付けされたAPIを提供していて大きく違うかららしい。

詳しくはここを参照。

Task

単一のタスクを実行してからシャットダウンするプロセスの一種。タスクは、プログラムを並列化することによって逐次的な処理を並列処理にするために使われる。Actorと違ってプログラム実行中に動的に生成される。

詳しくはここを参照。

Supervisor

Processのグループを開始して監視し、クラッシュした場合にはProcessを再起動する。SupervisorSupervisorを管理することができ、階層上のProcessを構築することでGleamプログラムの耐障害性を高めることができる。

詳しくはここを参照。

公式のトップにある階層図は以下のようになっている。

graph TB

Process-->Actor
Process-->Task
Task-->Supervisor

実際の使用例

リポジトリのtestモジュールにあるプログラムが確実に動くサンプルとして有効。