Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Web API サーバーとしての Elixir の可能性
Search
Naoya Ito
August 28, 2015
Technology
56
10k
Web API サーバーとしての Elixir の可能性
API Meetup Tokyo #9 での発表資料です
Naoya Ito
August 28, 2015
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Functional TypeScript
naoya
13
5.6k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
63
27k
シェルの履歴とイクンリメンタル検索を使う
naoya
7
3k
20230227-engineer-type-talk.pdf
naoya
85
40k
関数型プログラミングと型システムのメンタルモデル
naoya
61
88k
TypeScript による GraphQL バックエンド開発
naoya
28
30k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
66
23k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
58k
一休の現在と、ここまでの道のり
naoya
90
41k
Other Decks in Technology
See All in Technology
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.3k
生成AIのガバナンスの全体像と現実解
fnifni
1
190
Wantedly での Datadog 活用事例
bgpat
1
520
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
290
Storage Browser for Amazon S3
miu_crescent
1
240
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
360
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
120
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
170
サーバーなしでWordPress運用、できますよ。
sogaoh
PRO
0
100
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
210
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.5k
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
The World Runs on Bad Software
bkeepers
PRO
65
11k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
How GitHub (no longer) Works
holman
311
140k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
A better future with KSS
kneath
238
17k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Code Reviewing Like a Champion
maltzj
520
39k
Transcript
8FC"1*αʔόʔͱͯ͠ͷ &MJYJSͷՄೳੑ /BPZB*UP ,BJ[FO1MBUGPSN *OD "1*.FFUVQ5PLZP
ࡢࠓ͜Μͳ͜ͱ͋Γ·ͤΜ͔ • ͨͩͷ+40/"1*ʹ3BJMTͰŋŋŋ – ϋΠτϥϑΟοΫͳҊ݅Ͱ͍ͮΒ͍ – ཁ݅ʹରͯ͠ϝϞϦϑοτϓϦϯτ͕େ͖͗͢ – ଓ͕ଟ͍ͱεέʔϧ͠ͳ͍
– োੑʹෆ҆ • ʮεύΠΫͨ͠ͷͰམͪ·ͨ͠ʯͰࡁ·͞Εͳ͍ɻࠂ αʔόʔͱ͔
,BJ[FO1MBUGPSNͰŋŋŋ • ҎԼͷέʔεͰ࣮ࡍʹ͋ͬͨ – ࠂ৴ͷ֎෦αʔόʔͱͷΓͱΓ • ଟྔͷଓ – 3FEJTͱ*0ͯ͠ฦ͢Δ͚ͩͷ"1*αʔόʔ •
ཁ݅γϯϓϧɻෳࡶͳ.PEFM7JFXཁΒͳ͍ • ͰεύΠΫͰམͱͨ͘͠ͳ͍ ͻͱ·ͣ/PEFKTͰ ରԠͨ͠
親 子 fork() ϚϧνϓϩηεϞσϧʹΑΔฒߦॲཧ ྫ3BJMTͷ࣮ߦڥ
1SPT$POT • 1SPT – ҆શ • ϦΫΤετ͝ͱʹϝϞϦۭؒ㱺Ϋϥογϡͯ͠ ଞʹӨڹ͠ͳ͍ – ϓϩάϥϛϯάϞσϧ͕୯७
ಉظͰ0, – ϚϧνίΞ • $POT – εέʔϥϏϦςΟʹ • ϝϞϦେ㱺࠷େϓϩηεಉ࣌ฒߦ্ݶ • 04ϓϩηεεϨουͷίϯςΩετεΠον
࣌ؒ A B A C D B ・・・ select() /
epoll() ίϯςΩετ εΠον ΠϕϯτۦಈϞσϧʹΑΔฒߦॲཧ ྫ&WFOU.BDIJOF /PEFKT
1SPT$POT • 1SPT – εέʔϥϏϦςΟ ߴ͍ฒߦॲཧੑೳ • ϝϞϦϑοτϓϦϯτখ͍͞ •
ಉ࣌ଓ͕૿͑ͯεέʔϧ • $POT – োੑʹ • མͪΔͱ͖શ෦མͪΔ • ϝϞϦϦʔΫ͜Θ͍ – ϓϩάϥϛϯάϞσϧ͕ෳࡶ˞/PEFKTͩͱͦΕ΄ͲͰͳ͍ – ϚϧνίΞ$16Λ͍ͮΒ͍
τϨʔυΦϑ • ฒߦॲཧੑೳՔ͛ͳ͍͕҆શͰ୯७ͳ Ϛϧνϓϩηε εϨου Ϟσϧ͔ • ฒߦॲཧੑೳ͕ߴ͍͕ӡ༻ʹؾΛݣ͏Πϕ ϯτۦಈϞσϧ͔ ͙͵͵ŋŋŋ
ͦ͜Ͱ&SMBOHͰ͢
&SMBOHͷ࣮ߦڥ • #&". &SMBOH7. – ܰྔϓϩηεŋŋŋ࣮ߦίϯςΩετ • খ͍͞ϫʔυɺىಈʹdϚΠΫϩඵ – ฒߦॲཧੑೳ͕ߴ͍ •
7.͕ܰྔϓϩηεΛεέδϡʔϦϯά – 7.εϨουຖʹϥϯΩϡʔ – ཪଆͰඇಉظεϨουϓʔϧ ref: h+p://www.erlang-‐factory.com/upload/presenta=ons/708/HitchhikersTouroEheBEAM.pdf
ΞΫλʔϞσϧ ϝοηʔδύογϯά ͯ͢ίϐʔ 4IBSFE/PUIJOH ϝʔϧϘοΫεʹ ΩϡʔΠϯά
&SMBOHͰͷ ωοτϫʔΫαʔόʔ • ϦΫΤετʹܰྔϓϩηε – ҆શ • ܰྔϓϩηεŋŋŋಠཱ࣮ͨ͠ߦίϯςΩετ • 4IBSFE/PUIJOHŋŋŋ͋Δϓϩηε͕Ϋϥογϡ ͯ͠ͳ͍
– ߴ͍ฒߦॲཧੑೳ • ܰྔŋŋŋϝϞϦϑοτϓϦϯτখ͍͞ • Ϣʔβʔϥϯυ04ͷίϯςΩετεΠονͳ ͠
&SMBOHͷϝϞϦϞσϧ • QFS1SPDFTT($ – ϓϩηεຖʹ($ • άϩʔόϧ($ͩͱશମʹӨڹ͢Δ • ϓϩηε –
4IBSFE/PUIJOH – ϓϩηε)FBQ • ($ܰྔϓϩηεຖʹΒͤɺཁΒͳ͘ͳͬͨΒഇغ ؆ ୯Ͱޮ͕Α͍ ҆ఆͨ͠Ԡੑೳ ߴ͍োੑ
4VQFSWJTPS Supervisor ϓϩηε ࢹ ʮಥવͷࢮʂʯ ϓϩηεࢮΜͩ͠ɺઓུ ʹ߹Θͤͯ࠶ىಈ͠ͱ͘ Θ crash
-FUJUDSBTI • ࣦഊʹඋ͑ͳ͍ɻྫ֎Λั·͑ͳ͍ • 4VQFSWJTPSͰࢹ͓͍ͯͯ͠ɺͦͷ· ·ى͜͢ͳΓύϥϝʔλม͑ͯϦτϥΠ͞ ͤΔͳΓŋŋŋ ނোରԠϞσϧ͕ ݴޠج൫Ͱఏڙ
/PEFKTWT&SMBOH • /PEFKTWT&SMBOH – IUUQLVFOJTIJIBUFOBEJBSZKQFOUSZ – ނোϞσϧɺίʔυมߋɺίʔυҠಈɺແఀࢭΞοϓάϨʔυɺ ͜͏͍͏ͷͬͯYͰμϯλΠϜͷγεςϜͩͱେࣄͩΑ Ͷɻ
+PF"SNTUSPOH – ݁ہੑೳΑΓނোੑͳΜͩΑͶᴷͦΕͳ
Ͱ&SMBOHͳΜͰ͠ΐ͏
ͦ͜Ͱ&MJYJS
&MJYJS • &SMBOH7.ͷ্Ͱಈ͘ݴޠ – &SMBOH7.ͷڧΈ ฒߦॲཧੑೳɺোੑ Λͦͷ··ʹɺγϯ λοΫεΛೃછΈ͘͢ • KPTFWBMJN&SMBOHͰݟͨ͜ͱΈΜͳؾʹೖ͚ͬͨͲɺݟͳ͔ͬͨ͜ͱ
ΈΜͳݏ͍ – &SMBOHͱ૬ޓޓ – 051ͪΖΜ͋ΔΑ • ϞμϯͳύοέʔδཧγεςϜɺ-B[ZίϨΫγϣϯ 4USFBN ɺ ϓϩτίϧͳͲͷՃཁૉ • ৄ͘͠ – IUUQTTQFBLFSEFDLDPNOBPZBFMJYJSHPTIBPKJF
None
Ͱ8FC"1*࡞Δͷ ͍͠ΜͰ͠ΐ͏
1IPFOJYᴷ&MJYJSPO3BJMT
None
1IPFOJY Cowboy Plug Phoenix .JEEMFXBSF )5514FSWFS &SMBOH1SPDFTT 3FFRVFTU
ϕϯνϚʔΫ ref: h+p://www.li+lelines.com/blog/2014/07/08/elixir-‐vs-‐ruby-‐showdown-‐phoenix-‐vs-‐rails/ $ ./wrk -‐t12 -‐c800 -‐d180S -‐-‐timeout 2000
"http://tranquil-‐brushlands-‐6459.herokuapp.com/showdown" Running 3m test @ http://tranquil-‐brushlands-‐6459.herokuapp.com/showdown 12 threads and 800 connections Thread Stats Avg Stdev Max +/-‐ Stdev Latency 318.52ms 139.92ms 1.39s 82.03% Req/Sec 224.42 57.23 368.00 68.50% 484444 requests in 3.00m, 0.99GB read Socket errors: connect 0, read 9, write 0, timeout 0 Requests/sec: 2691.03 Transfer/sec: 5.65MB $ ./wrk -‐t12 -‐c800 -‐d180S -‐-‐timeout 2000 "http://dry-‐ocean-‐9525.herokuapp.com/showdown" Running 3m test @ http://dry-‐ocean-‐9525.herokuapp.com/showdown 12 threads and 800 connections Thread Stats Avg Stdev Max +/-‐ Stdev Latency 3.07s 2.06s 8.36s 70.39% Req/Sec 24.65 9.97 63.00 67.10% 54256 requests in 3.00m, 122.50MB read Socket errors: connect 0, read 1, write 0, timeout 0 Requests/sec: 301.36 Transfer/sec: 696.77KB Phoenix Rails w/ Puma ॾ݅͋ΔͷͰߟࣗݾͰɻ 1IPFOJY͕ൺֱ͍ͯ͠ͷؒҧ ͍ͳͦ͞͏
΄͔ • &MJYJSຊ൪Քಇ࣮ – υϦίϜ͞Μɺ%"6ສͷ"Eͷ"1* • GBMPPENBSV &MJYJSͷ(SBQF • IUUQXXXTMJEFTIBSFOFUPISTIJCVZBFYFMJYJS
• 1IPFOJYͷ$IBOOFM – ଓܰྔϓϩηεͰॲཧ͢Δϝοηʔδ ϋϯυϥ • 8FC4PDLFU
ྑ͍͜ͱ͔Γݴ͍·͕ͨ͠ŋŋŋ • ฒߦੑೳ͕ߴ͍ɺԠੑೳ͕ྑ͍ͱݴ͕ͬͨʮܭࢉ͕ ͍ʯͱݴͬͯͳ͍ – 1IPFOJYελοΫ3BJMTΑΓ͍ɺ͚Ͳ – ಈతܕ͚ݴޠͰ͢͠ – ˞ҰԠ)J1&ʹ͢Δͱ͘ͳΔΑ͏
• ؔܕݴޠͱͯͦ͜͠·ͰߴػೳͰͳ͍ • ݸਓతͳ େنӡ༻ͯ͠ͳ͍ͷͰ$POTΛޠΔʹ ݟΓͳ͍ • &MJYJSྲྀߦΔ͔·ͩະ – ϓϩμΫγϣϯೖࣄྫ·ͩ͜Ε͔Β
લฤॻ͖·ͨ͠ɻ ޙฤ࣍߸Ͱ
None