歌舞伎座.tech#3「Real World Erlang/OTP」memo
メモです。}
なぜErlangにしたのか? by 太田@dwango
- サーバ(プロセス)を自由に組み合わせ可能
- 設計の自由度が高まる
Voyage GroupでのErlang/OTP(仮) by ajiyoshi@VOYAGE GROUP
インターネット広告にErlang
- とくにRTBに使ってる
Bidリクエスト
重要な要件
- 複数のネットワークコネクション
- 非同期IO or マルチスレッド
- ソフトリアルタイム性 - 何が何でも早めに返す
- 100ms程度の応答(厳密でない)
多言語との比較
- node.jsなどのシングルスレッド+非同期IO - event-driven
- 低オーバーヘッド
- 扱いやすい
- シングルスレッドなのでマルチコア環境では一工夫いる
- ノンプリエンティブ
- コールバック地獄かも
- JVMでマルチスレッド
- 早い
- マルチコア環境でもスケール
- full GCがちょっとこわい
- 1connection/threadは無理そう
- ソフトリアルタイムに書くのが難しそう
- Erlang, golang
- 1connection/process
- ソフトリアルタイム性確保が簡単
- ProcessごとのGC
アーキテクチャ
- Erlangによるhttp APIサーバとして設計
- 内部向けI/Fにhttpなのはトレードオフあり
- 外部向けhttpレスポンスに比べりゃ小さい
- 1conc/proc
- 生存次回の短いprocess
- messageのタイムアウトでソフトリアルタイム性
実測値
- 3万bits/s
- 16億bits/day
- 8000万 RTB imp/day
運用
- Jenkinsでビルド&rebar generate
- 100G/dayのログをHiveで解析し、最低入札価格の最適化
- Growth Forecastでかんたんに可視化
Elixir (仮) by mururururu@VOYAGE GROUP
Elixirなにがすごいの
Erlang vs Elixir
- meta-programming - Everything is a expression
- Embedded database
- Define modules on shell
- macros <- Elixirは構文木
- ErlangのmacrosはC-like
- protocols
- standard libraryが整備されている
- Eralngに比べてオーバーヘッドはとくにない
時雨堂とErlang/OTP事例紹介 by voluntas@時雨堂
- ピザ食ってました…
- オーム社のヒコーキ本