- OTP とは何か
- 「よくわからないけど使ったほうがいいっぽい」から「なぜ使うのかを意識して使う」になるための導入(になるといいな)
- 詳細な API とかには触れません
- twitter: @mururururu
- github: @mururu
HPC系の研究室の M1。
一応以下のような人が対象です。
- Elixir でちょっとでも何か書いたことある人
- Elixir の「プロセス」がどんなものかを知っている人
- プロセスってどんな単位で起動するの?
- そもそも Elixir の設計って?
- コード読もう
OTP Design Principles http://www.erlang.org/doc/design_principles/des_princ.html
-
Erlang でシステムを設計するときの原則
-
それに従って実装するためのライブラリ群
-
Elixir でも同様
-
スーパーバイザツリー
-
ワーカーとスーパーバイザからなる
-
ワーカーは実際に仕事を行うプロセス
-
スーパーバイザは設定に基づきワーカー(もしくは他のスーパーバイザ)を監視し問題が合った場合に再起動したり
- スーパーバイザやワーカーでよくあるパターンを抜き出したもの
- GenServer : サーバー
- Agent : 状態をもつやつ
- GenEvent : イベントハンドリング
- Task : 他のプロセスとのやりとりというよりただ仕事をこなすやつ
- Supervisor : プロセスの監視
- Application : 始点
(デモ)
- スーパーバイザやワーカーでよくあるパターンを抜き出したもの
- GenServer : サーバー
- Agent : 状態をもつやつ
- GenEvent : イベントハンドリング
- Task : 他のプロセスとのやりとりというよりただ仕事をこなすやつ
- Supervisor : プロセスの監視
- Application : 始点
- OTP は Elixir でシステムを設計する際に頻出するパターンをまとめたもの
- スーパーバイザツリーを設計する
- Enjoy OTP!
おまけ
https://gist.github.com/mururu/17c489dac3d6b2b24528