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
今日から始める Flood.io / fuka-taisaku-night-01
Search
kikunantoka
February 06, 2019
Technology
0
330
今日から始める Flood.io / fuka-taisaku-night-01
- ギフティでの負荷対策の重要性
- Flood.io について
- Flood.io の活用
- 30万RPM を耐えるためにやったこと
kikunantoka
February 06, 2019
Tweet
Share
More Decks by kikunantoka
See All by kikunantoka
個人開発しているサービスのインフラをAWSからGCPに載せ替えた話 💪 / kojin_kaihatsu_night_3
kikunantoka
0
1.2k
Gatsby.jsとCloud Functionsで毎週自動でコンテンツが更新され続けるフレームワーク比較サイトを作った話 / gotanda_js_13
kikunantoka
1
2.4k
Gatsby.jsとCloud Functionsで毎週自動でコンテンツが更新され続けるフレームワーク比較サイトを作った話 / frontend_night_1
kikunantoka
3
1.7k
サービスがゼロからN億円規模になるまに実践した7つのやっていき / 7_yatteiki_battle_conference_u30_2019
kikunantoka
1
1.4k
Gatsby.jsとNetlifyとの付き合い方 / gatsby-js-and-netlify
kikunantoka
3
610
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
2
700
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
1
1.8k
20万RPMを捌くRailsアプリケーションの作り方
kikunantoka
0
820
MVPに絞ったら個人開発でもちゃんとリリースできた話
kikunantoka
1
530
Other Decks in Technology
See All in Technology
レガシーで硬直したテーブル設計から変更容易で柔軟なテーブル設計にする
red_frasco
4
430
なぜThrottleではなくDebounceだったのか? 700並列リクエストと戦うサーバーサイド実装のすべて
yoshiori
13
4.9k
アジャイル社内普及ご近所さんマップを作ろう / Let's create an agile neighborhood map
psj59129
1
140
Greenは本当にGreenか? - B/GデプロイとAPI自動テストで安心デプロイ
kaz29
0
110
AI エージェントを評価するための温故知新と Spec Driven Evaluation
icoxfog417
PRO
2
530
雲勉LT_Amazon Bedrock AgentCoreを知りAIエージェントに入門しよう!
ymae
2
170
ZOZOTOWNカート決済リプレイス ── モジュラモノリスという過渡期戦略
zozotech
PRO
0
490
pmconf 2025 大阪「生成AI時代に未来を切り開くためのプロダクト戦略:圧倒的生産性を実現するためのプロダクトサイクロン」 / The Product Cyclone for Outstanding Productivity
yamamuteki
3
1.9k
AIと自動化がもたらす業務効率化の実例: 反社チェック等の調査・業務プロセス自動化
enpipi
0
750
AS59105におけるFreeBSD EtherIPの運用と課題
x86taka
0
210
OSだってコンテナしたい❗Image Modeが切り拓くLinux OS運用の新時代
tsukaman
0
110
マルチドライブアーキテクチャ: 複数の駆動力でプロダクトを前進させる
knih
0
6.6k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
[RailsConf 2023] Rails as a piece of cake
palkan
57
6.1k
Being A Developer After 40
akosma
91
590k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
How to Ace a Technical Interview
jacobian
280
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Writing Fast Ruby
sferik
630
62k
The Cult of Friendly URLs
andyhume
79
6.7k
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ͷΧδϡΞϧΪϑταʔϏε