Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
今日から始める Flood.io / fuka-taisaku-night-01
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kikunantoka
February 06, 2019
Technology
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
今日から始める Flood.io / fuka-taisaku-night-01
- ギフティでの負荷対策の重要性
- Flood.io について
- Flood.io の活用
- 30万RPM を耐えるためにやったこと
kikunantoka
February 06, 2019
More Decks by kikunantoka
See All by kikunantoka
個人開発しているサービスのインフラをAWSからGCPに載せ替えた話 💪 / kojin_kaihatsu_night_3
kikunantoka
0
1.3k
Gatsby.jsとCloud Functionsで毎週自動でコンテンツが更新され続けるフレームワーク比較サイトを作った話 / gotanda_js_13
kikunantoka
1
2.4k
Gatsby.jsとCloud Functionsで毎週自動でコンテンツが更新され続けるフレームワーク比較サイトを作った話 / frontend_night_1
kikunantoka
3
1.8k
サービスがゼロからN億円規模になるまに実践した7つのやっていき / 7_yatteiki_battle_conference_u30_2019
kikunantoka
1
1.4k
Gatsby.jsとNetlifyとの付き合い方 / gatsby-js-and-netlify
kikunantoka
3
650
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
2
750
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
1
1.9k
20万RPMを捌くRailsアプリケーションの作り方
kikunantoka
0
860
MVPに絞ったら個人開発でもちゃんとリリースできた話
kikunantoka
1
570
Other Decks in Technology
See All in Technology
あけおめLINE 傾向とその対策
nasa9084
0
180
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
230
Reactの設計論
uhyo
24
14k
AI coding 整合正規方法
philipz
0
370
Goodbye ShellScript, Hello File-based App
shunsock
0
400
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
3
620
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
30
17k
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
140
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
6
3.3k
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
0
290
Featured
See All Featured
Scaling GitHub
holman
464
140k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How to build a perfect <img>
jonoalderson
1
6k
It's Worth the Effort
3n
188
29k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
870
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Transcript
ࠓ͔Β࢝ΊΔ Flood.io גࣜձࣾΪϑςΟ ٠ ࢙و ෛՙରࡦ Night #1 @ΪϑςΟ on
2018/02/06
ࣗݾհ about: name: Fumitaka Kikukawa twitter: @kikunantoka job: engineer work_at:
giftee Inc. // giftee is a good company. url: https://kikunantoka.com
ࣗݾհ
ࣗݾհ https://nakamy.com
͍͑ͨ͜ͱ • ΪϑςΟͰͷෛՙରࡦͷॏཁੑ • Flood.io ʹ͍ͭͯ • Flood.io ͷ׆༻ •
30ສRPM Λ͑ΔͨΊʹͬͨ͜ͱ
ΪϑςΟͰͷෛՙରࡦ ͷॏཁੑ
ࣄۀ༰
ࣄۀ༰
ࣄۀ༰
giftee for Buisness
୲͍ͯ͠ΔϓϩμΫτ ʢࣾͰ($1ͱུ͞Εͩ͢ʜʣ HJGUFFΠϯελϯτΟϯGPS5XJUUFSͷڧΈᶃ நબ͔Βܠͷఏڙ·ͰҰؾ௨؏Ͱ͝ఏڙ நબγεςϜ ʢΠϯελϯτΟϯʣ σδλϧΪϑτͷఏڙ ʢछྨҎ্ͷܠʣ ϦΞϧλΠϜʹநબɺ ͦͷͰܠΛ༩
LINEೝূͷύλʔϯఏڙ HJGUFFΠϯελϯτΟϯGPS-*/&ͷڧΈᶃ ©2018 gi)ee Inc. all rights reserved J நબ͔Βܠͷఏڙ·ͰҰؾ௨؏Ͱ͝ఏڙ
நબγεςϜ ʢΠϯελϯτΟϯʣ σδλϧΪϑτͷఏڙ ʢछྨҎ্ͷܠʣ ϦΞϧλΠϜʹநબɺ ͦͷͰܠΛ༩
ΊͬͪΌΞΫηεདྷΔ • ༑ͩͪ 2300ສͷΞΧϯτͰΩϟϯϖʔϯΛ࣮ࢪͨ݁͠Ռ ʊਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹ࠷େ 30ສRPMɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^ʉ
Flood.io ʹ͍ͭͯ
Flood.io ͱ • ΫϥυϕʔεͷϩʔυςεταʔϏε
Flood.io ͱ • Selenium, JMeter ( + ruby-jmeter) , Gatling
• ͖ͳςετπʔϧΛ͏͜ͱ͕Ͱ͖Δ • طʹGatlingͷςετίʔυ͕͋ͬͨͷͰɺGatlingΛ࠾༻
Flood.io ͱ • Ձ֨ • 50 Node Hours Ͱ 33,000ԁఔʢैྔׂҾ͋Γʣ
Flood.io ͷྑ͍ • Ϋϥυ্Ͱؾܰʹϩʔυςετ͕Ͱ͖Δ • ϊʔυͷεέʔϧΞοϓ͕؆୯ • ݁Ռ͕ϏδϡΞϥΠζ͞ΕΔ • Web্Ͱ݁Ռͱςετέʔεͷཧ͕Ͱ͖Δ
• ςετ݁ՌγΣΞ༻ͷϦϯΫͰڞ༗Ͱ͖Δ
Flood.io ͷѱ͍ • ϩάͷอ༗ظ͕ؒ1ϲ݄ఔ • ςετέʔεͱΤϥʔݪҼͷηοτͰཧ͍ͨ͠߹ʹෆ ศ
σϞ
Flood.io ͷ׆༻
New Relic ͰϘτϧωοΫΛಛఆ • Flood.io ͰෛՙΛ͔͚ͨ࣌ͷ༷ࢠΛϞχλϦϯά͢Δ
ෛՙݕূΛ܁Γฦ͢ • ϩʔυςετΛ͢Δ • ϘτϧωοΫ͕ݟ͔ͭΔ • ϘτϧωοΫΛվળ͢Δ • Λ܁Γฦ͢
ෛՙݕূΛ܁Γฦ͢ • ϩοΫॲཧʹΑͬͯɺλΠϜΞτ • ϩοΫॲཧͷൣғͷվળ • ίωΫγϣϯϓʔϧ͕Γͳ͘ͳΔ • DBͷઃఆͷमਖ਼ •
RDSʹଓͰ͖ͳ͘ͳΔ • ΠϯελϯελΠϓͷมߋ
ϘτϧωοΫʹͳΓ͍͢ϙΠϯτ • σʔλ͕૿͑Δ͜ͱʹΑͬͯੑೳྼԽ͠ͳ͍͔ • εϩʔΫΤϦΛ͍͛ͯͳ͍͔ • ϩοΫॲཧͷൣғ͕͗͢ͳ͍͔ • σουϩοΫ͍ͯ͠ͳ͍͔ •
ແବͳΠϯελϯεΛੜ͍ͯ͠ͳ͍͔ • ੩తϑΝΠϧCDN৴͢Δ
ҙ • AWSࣄલʹϩʔυςετ͢ΔࢫΛ͓͑ͯ͘ • ಉҰIP͔ΒҰఆҎ্ΞΫηε͕͋Δͱ߈ܸͱΈͳ͞ΕΔ • AWS LoftͷαϙʔτΤϯδχΞਃग़ͨ͠΄͏͕ྑ͍ ͱͷݟղ
30ສRPM Λ͑ΔͨΊʹ ͬͨ͜ͱ
εέʔϧΞοϓͰ͖ΔΑ͏ʹ͓ͯ͘͠ • Elastic Beanstalk
εέʔϧΞοϓͰ͖ΔΑ͏ʹ͓ͯ͘͠ • Amazon Aurora • RDS for MySQL͔ΒҠߦͨ͠ • ϑΣΠϧΦʔόʔػೳΛ͏͜ͱͰɺΠϯελϯελΠϓ
ͷมߋ࣌ͷμϯλΠϜ͕5ඵఔʹ • ॻ͖ࠐΈIOPS͔Βͷ։์
DBͷઃఆΛݟ͢ • DB ͷ Pool Puma ͷ Thread ɺWorker
ద͔ • DB ͷ Pool -> Puma ͷεϨου • Puma ͷ Worker -> CPUͷίΞ • Puma ͷ Thread -> CPU༻ͱ૬ஊ
࠷৽ͷΠϯελϯελΠϓΛ͏ ໊લ W$16 3". $16ΫϨδοτ࣌ؒ ྉۚ࣌ؒ UTNBMM
64% UTNBMM 64% • ίεύ͕ྑ͍ • Puma ͷ Worker Λ 2 ʹͰ͖Δ -> 2ഒͷεϨου • ͨͩ͠ɺAWSଆͰϦιʔε͕Γͳ͘ͳΔϦεΫ͕͋Δ
WebαʔόΛཱͯ·͘Ε͍͍͍ͬͯ͏Ͱͳ͍ • db.r4.16xlargeͷ߹ • 32 Threads x 2 Workers •
1͋ͨΓ 64 Threads • 6000 / 64 = 93.75 • 92͙Β͍͕ݶքʂ
ͪΌΜͱਓΛೖΕΔ • 1ਓͩͱӡ༻ਏ͍ • 2ਓ͍Εɺਏ͍͜ͱʹɺتͼ2ഒʹ • ͓ۚΛՔ͙ • Λ্͛Δ
ίϚʔγϟϧ • We are hiring!!! - Ұॹʹಇؒ͘Λืूதʂ ձһສਓಥഁʂ ࠃ/PͷΧδϡΞϧΪϑταʔϏε