![Page 1: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/1.jpg)
Cr ator’s Night2012/01/20
事業創造室(NPLab) 加藤寛之
Friday, January 20, 12
![Page 2: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/2.jpg)
< みなさん、こんばんみー
Friday, January 20, 12
![Page 3: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/3.jpg)
今日のお題
僕とErlangと時々Load Balanc r
Friday, January 20, 12
![Page 4: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/4.jpg)
< 今日はちゃんとコード書いたよ!
Friday, January 20, 12
![Page 5: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/5.jpg)
本題に入る前に・・・思い出して下さい
天下一なるはや配信性能会
Friday, January 20, 12
![Page 6: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/6.jpg)
過ぎ去った思い出達
Friday, January 20, 12
![Page 7: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/7.jpg)
その中でも、C言語で書かれたNginxと遜色ない結果を残した
Erlang
製のWebサーバー達
こいつらFriday, January 20, 12
![Page 8: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/8.jpg)
でもマイナー言語だよ?( ́,_ゝ`)プッ
Friday, January 20, 12
![Page 9: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/9.jpg)
てか、言語的に キモイし( ́,_ゝ`)プッ
Friday, January 20, 12
![Page 10: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/10.jpg)
いいえ、Erlangはできる子です
今日はその一端をご紹介します
Friday, January 20, 12
![Page 11: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/11.jpg)
ということで
Erlang Load Balancer= erlproxy
を作ってみた
Friday, January 20, 12
![Page 12: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/12.jpg)
復習 : Load Balancerって何ぞ?
ユーザーいっぱい
1台のマシンじゃ無理
じゃ、複数マシン使おう
Q. どうやって複数のマシンに振り分ける?Friday, January 20, 12
![Page 13: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/13.jpg)
復習 : Load Balancerって何ぞ?
ユーザーいっぱい
1台のマシンじゃ無理
じゃ、複数マシン使おう
Q. どうやって複数のマシンに振り分ける?
そこでLoad
Balancerで
す
Friday, January 20, 12
![Page 14: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/14.jpg)
復習 : Load Balancerって何ぞ?
受け取ったリクエストを後ろのサーバーに右から左へ受け流す
ユーザーからのリクエストを受けとる
後ろのサーバーから返ってきたデータをユーザーに返す
Friday, January 20, 12
![Page 15: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/15.jpg)
比較対象巷で使われている代表的な
オープンソースのLoad Balancer達
いづれも大規模サイトで導入実績のある素晴らしいソフトウェアです
Friday, January 20, 12
![Page 16: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/16.jpg)
尚、今回は正に「右から左へ受け流す」
性能の測定です。エンジニア用語で言うとL4 Load Balancingです。
Friday, January 20, 12
![Page 17: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/17.jpg)
用意した環境
・・・ 後ろのサーバー32台
測定するソフトウェア
測定ツール
Friday, January 20, 12
![Page 18: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/18.jpg)
指標 : Req/sec
= 1秒間にどれだけのリクエストをさばけるか。数値が大きい程よい。
同時アクセス数を10, 50, 100, 200, 300, 400, 500に変えて10,000リクエストずつ投げるテストを100回繰り返してみました。
Friday, January 20, 12
![Page 19: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/19.jpg)
さて、その結果は?
Friday, January 20, 12
![Page 20: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/20.jpg)
惨敗です(́・ω・`)
だが待って欲しい!
Friday, January 20, 12
![Page 21: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/21.jpg)
コード量(≒ソフトウェアの複雑さ)で比較すると・・・
Haproxy : 225,047行 Nginx : 122,830行 erlproxy : 375行
Friday, January 20, 12
![Page 22: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/22.jpg)
更にテストが完走した比率で比較すると・・・
Friday, January 20, 12
![Page 23: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/23.jpg)
つまり、理論性能ではHaproxyやNginxには勝てない
でも
少ないコード量で高負荷時でも安定的な配信を実現可能
Friday, January 20, 12
![Page 24: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/24.jpg)
ほら、Erlang素敵でしょ?
Friday, January 20, 12
![Page 25: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/25.jpg)
1> if:format(“~p~n”, [“Thanks!”]).“Thanks!”ok2>
source : https://github.com/devkato/erlproxy
Friday, January 20, 12
![Page 26: 20110120CreatorsNight_僕とErlangと時々Load Balancer](https://reader038.vdocuments.pub/reader038/viewer/2022103115/557ad525d8b42a0b188b5318/html5/thumbnails/26.jpg)
尚、布教活動のため今回のスライドの全てのページに
Erlangのロゴが隠れています。
全部見つけられたかな?Friday, January 20, 12