More Related Content
Similar to 東京Node学園#8 Let It Crash!? (20)
東京Node学園#8 Let It Crash!?
- 2. Let It Crash?
Erlangのphilosophy/principle
耐障害性に優れた堅牢なコードを書くため
Akka開発チームのブログ
http://letitcrash.com/
- 3. 堅牢なコードを書く
Defensive Programming
失敗に備える
引数/戻り値をチェックする、例外を捕まえる
アプリがエラーから回復する
通常処理とエラー処理が混在
Let It Crash
失敗に備えない
例外を捕まえない→プロセスをクラッシュさせる
スーパーバイザがエラーから回復する
通常処理とエラー処理が分離
- 4. スーパーバイザ
1 2 3 4 5 6
S1 S2
S0
2
One for One All for One
5
retry retry
- 9. No!
Erlang
軽量プロセス (細粒度)
プロセスがクラッシュしても失う接続は0~高々1
副作用がない
プロセスのリトライが可能
Node.js
重量級のプロセス (粗粒度)
プロセスがクラッシュすると数千~数万の接続を失う
副作用がある
再起動してもプロセスの状態を回復することは不可能
- 18. まとめ
Defensive に Programming かつ
Graceful に Shutdown
Let It Crashではなかった
カッコわるい
ErlangやHaskellがよければErlangやHaskellを使え
by isaacs