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
B2Bクラウドサービスをゼロから立ち上げて、利用社数が1000社を超えるまでの道のり / a ...
Search
Kizashi Nagata
September 28, 2018
Technology
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
B2Bクラウドサービスをゼロから立ち上げて、利用社数が1000社を超えるまでの道のり / a startup started B2B SaaS business from ground zero
2018/9/28 デブサミ関西発表資料
Kizashi Nagata
September 28, 2018
More Decks by Kizashi Nagata
See All by Kizashi Nagata
ビルドが遅い
kizashi1122
0
630
SQS の使い方を わかっていなかった / I didn't know how to use SQS correctly
kizashi1122
0
940
aws-vault を使った セキュアなアクセスキー管理 / Manage AWS Access Key More Securely By Using aws-vault
kizashi1122
0
1.1k
inotify の話 / About inotify
kizashi1122
0
800
Rails でつくるマルチテナント型Webアプリケーション / multi-tenant web application building with Rails
kizashi1122
1
2.8k
Other Decks in Technology
See All in Technology
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
会社説明資料
persolserverworks
0
9.8k
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
110
Browser Spec: Testing Hotwire with Ruby
takahashim
1
130
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
350
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
200
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
5k
Refining Active Record
shugo
0
160
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
WasmをRustにする
sansantech
PRO
0
260
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
180
その Valkey 使いこなしていますか?
onk
PRO
5
1.6k
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
730
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Raft: Consensus for Rubyists
vanstee
142
7.8k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Unsuck your backbone
ammeep
672
58k
Making the Leap to Tech Lead
cromwellryan
135
10k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
Docker and Python
trallard
47
4.2k
Transcript
##ΫϥυαʔϏεΛθϩ͔Β ্ཱͪ͛ͯɺར༻͕ࣾࣾΛ ͑Δ·ͰͷಓͷΓ %FWFMPQFST4VNNJU,"/4"* Ӭాɹஹ 1
ࣗݾհ w Ӭాɹஹʢ!LJ[BTIJʣ w גࣜձࣾΠϯήʔδ$50 w 4*FSɺ8FCܥͷձࣾΛܦͯɺݱࡏͷձࣾʹ w ࣇͷ w
࠷ۙουύʔϜϨετΛࣗ࡞ͨ͠
!3
Πϯήʔδ w גࣜձࣾΠϯήʔδʢ*/("(&*ODʣ w ॴࡏɿେࡕࢢ۠ w ઃཱ w ͍߹ΘͤཧΫϥυαʔϏεʮ3FMBUJPOʯͷఏڙ !4
3FMBUJPO w ड৴ശΛνʔϜͰڞ༗͢ΔͨΊͷ͍߹ΘͤཧαʔϏε w ར༻γʔϯɿTVQQPSU!FYBNQMFDPNͳͲͷදϝʔϧ ΞυϨεΛෳਓͰରԠ͢Δ w (NBJMͱҧͬͯɺνʔϜͰڞ༗͢ΔͨΊʹඞཁͳػೳɺศ རͳػೳ͕ࡌ͞Ε͍ͯΔ w
ϝʔϧɺ5XJUUFSɺ-*/&ͳͲෳνϟωϧʹରԠ !5
!6
3FMBUJPOػೳʢҰ෦ʣ w ঝೝػೳ w ೋॏૹ৴ࢭػೳ w ίϝϯτೖྗʢνʔϜใڞ༗ʣ w ༧ૹ৴ w
ςϯϓϨʔτ w μογϡϘʔυ !7 ͳͲͳͲɺ νʔϜͰར༻͢ΔͨΊͷػೳ ͕ἧ͍ͬͯΔ w ݖݶཧ w मਖ਼༰ൺֱ w ܝࣔ൘ʢνʔϜใڞ༗ʣ
3FMBUJPOར༻ٕज़ w "84 &OHJOF:BSE w 3PVUF 4 424 -BNCEB
w 3VCZ 1FSM /PEF+4 1ZUIPO (P w 3BJMT "OHVMBS+4 w &MBTUJDTFBSDI w 1PTUHSF42- 3FEJT .FNDBDIFE
3FMBUJPO w 3FMBUJPOϚϧνςφϯτܕ##4BB4Ͱ͢ IUUQTCMPHJOHBHFKQ
ϚϧνςφϯτܕΞʔΩςΫνϟ ΞϓϦέʔγϣϯ ৫ ৫ ৫ ৫νʔϜʢʹςφϯτʣ ͕ΞϓϦέʔγϣϯʹ ରͯ͠ෳଘࡏ͢ΔΞʔΩ ςΫνϟΛϚϧνςφϯτܕ ΞʔΩςΫνϟͱݺͿ
͡Ίʹ θϩ͔ΒαʔϏεΛͨͪ͋͛ͯɺΑ͏͘ࣄۀͱͯ͠Γ ཱͭΑ͏ʹͳ͖ͬͯͨ ·ͩ·ͩ͜Ε͔Β͚ͩΕͲɺ͜͜·ͰΛৼΓฦͬͯΈ͍ͨ !11
࣍ w ͬ͟ͱˠΛৼΓฦΔ w ։ൃ؍ͰৼΓฦΔ w ࣮ࡍʹ͋ͬͨτϥϒϧ w ࠷ޙʹ !12
ελʔτ w ए͘ͳ͍ਓͰελʔτʢΤϯδχΞਓʣ w ࣾా w ΤϯδχΞӬాʢࢲʣ w ΤϯδχΞੴా !13
ར༻ސ٬ਪҠ !14 ϩʔϯν ϩʔϯν͔ͯ͠ΒيಓʹͷΔ·Ͱ͔ͳΓ͕͔͔࣌ؒͬͨ ސ٬͕֫ಘͰ͖ͣ৳ͼΜͩ
গͣͭ͠৳ͼ͖ͯͨ ·ͩ·ͩ͜Ε͔Β
w ݄ͷలࣔձ͕ϩʔϯνඪ w ݄͔Β։ൃΛελʔτͯ͠ɺϲ݄ͰϦϦʔε w ΦϑΟεͳ͠ɻࣾͷࣗɺࣗशࣨਤॻؗͳͲɻ w ݄ʹϩʔϯν͕ͨ͠વސ٬θϩ w
ಋೖ༧ఆސ٬ͳ͍··ελʔτ !15
ʙ w ·ͬͨ͘ചΕͳ͍··ಥೖ w ࢿۚఈΛ͖͔͚ͭΔ w ॏͳΔػೳՃͷ݁ՌɺΑ͏͘ސ٬͕૿͖͑ͯͨ w େֶͱ࿈ܞ͠ػցֶशΛͬͨػೳͷݚڀΛ։࢝ w
6*৽ʢ͜͜ͰΑ͏͘3FMBUJPOͷϩΰ͕ʣ !16
!17
!18
ʙ w αϙʔτϝϯόʔ૿һʢॳͷޏ༻ʣ w ॳਓͰαϙʔτରԠ͍ͯͨ͠ w Ӧۀϝϯόʔ૿һ w ࣾͷܦӦۀઐ೦ w
ػցֶशΛͬͨςϯϓϨʔτਪનػೳϦϦʔε w ΤϯδχΞΓͯͳ͍ !19
ςϯϓϨʔτਪનػೳհ !20 ड৴ ฦ৴ ςϯϓϨʔτ Λ͑ΔςϯϓϨʔτ͔Βબ͢Δͷେม
ςϯϓϨʔτਪનػೳհ !21 աڈͷड৴ϝʔϧͱར༻ͨ͠ ςϯϓϨʔτͷϖΞ ֶशʹΑΓϞσϧੜ ະͷϝʔϧ ਪન͞Εͨ ςϯϓϨʔτ
։ൃࢹͰৼΓฦΔ !22
ٕज़બఆ w ೋਓ+BWBܦݧऀ͕ͩͬͨɺ3VCZ͕Γ͍ͨͶͱ͍͏ ͜ͱͰ3BJMTΛબ w "84ΛੜͰ͏ΑΓɺ1BB4͕͍͍ w Πϯϑϥͷ࡞ۀίετΛݮΒͨ͢Ί w )FSPLVͱ͍͏બࢶ͕͋ͬͨɺຊϦʔδϣϯ͋Γɺ
44)ΞΫηεՄͱ͍͏͜ͱͰ&OHJOF:BSEΛબ !23
.71 NJOJNVNWJBCMFQSPEVDU w ࠷ॳͷϦϦʔεΛͲ͏͢Δ͔ʁ w ؤுͬͯͨ͘͞ΜͷػೳΛ͔ͭͬͯ͘ΒϦϦʔε͢ΔͷͰ ͳ͘ɺ࠷খݶͰϦϦʔεͯ͠ɺ͋ͱސ٬ͷϑΟʔυόο ΫΛಘ͍ͯ͜͏ͱ͍͏ߟ͑ํ w ػೳ͕গͳ͗͢Δͱͷҹѱ͘ͳΔ͠ɺଟ͘ͳΔ
ͱϦϦʔε·Ͱͷ͕͔͔࣌ؒͬͯ͠·͏ w વ͍͖ͳΓڝ߹ͱಉ͡Ϩϕϧʹ౸ୡͰ͖ͳ͍ !24
ϩʔϯν࣌ͷػೳʢϏδωε͚ʣ !25 w ঝೝػೳ w ೋॏૹ৴ࢭػೳ w μογϡϘʔυ w ίϝϯτೖྗʢνʔϜใڞ༗ʣ
w ༧ૹ৴ w ςϯϓϨʔτ w 5XJUUFS w ݖݶཧ w मਖ਼༰ൺֱ w ܝࣔ൘
ϩʔϯν࣌ͷػೳʢϝʔϧجຊʣ !26 w ϝʔϧड৴ʢసૹʣ w ϝʔϧૹ৴ʢςΩετʣ w ϝʔϧૹ৴ʢ)5.-ʣ w ࣗࣾ4.51αʔόʔઃఆ
w ࣗࣾ101αʔόʔઃఆ w ࣗಈϧʔϧʢϑΟϧλʣ w ςϯϓϨʔτ w ݕࡧ w ҹ w ϝʔϧιʔεදࣔ w ૹ৴લϓϨϏϡʔ w ૹ৴औΓফ͠
.71ͷબਖ਼͔ͬͨ͠ͷ͔ʁ w Γػೳ͕গͳ͗ͨ͢ w μογϡϘʔυɺ5XJUUFSͳͲࠩผԽͰ͖Δཁૉ͍Εͨ w ސ٬ϝʔϧͷجຊػೳ͋ͬͯવͱߟ͍͑ͯͨ (NBJMͰͰ͖Δͷʹɾɾɾʣ w ͨͩ࠷ݶͰϦϦʔε͔ͨ͠Βͦ͜ސ٬͔Βຊʹඞཁͳ
ػೳͷϑΟʔυόοΫΛಘΔ͜ͱ͕Ͱ͖ͨ !27 ਖ਼͔ͬͨ͠ʢ͕͔ۤͬͨ͠ʣ
ސ٬ཁͲ͜·Ͱड͚ೖΕΔͷ͔ w ϕʔεͱͳΔج४ w ͷϙϦγʔʹ͠͠ͳ͍͔ʁ w ෳͷʢଟͷʣސ٬͕Ήػೳ͔ʁ w ݁ہਓͰٞͯ͠அ w
डͷܾఆཁҼͱͳΔػೳ w ࠓޙλʔήοτ͕૿͑Δ͔͠Εͳ͍ػೳ !28
ʢྫʣҰׅૹ৴ػೳ w ෳϝʔϧΞυϨεʹҰׅͰϝʔϧૹ৴͍ͨ͠ͱ͍͏ཁ ଟ͍ w ࣮͖͔͢ʁ !29
࣮ࡍʹ͋ͬͨτϥϒϧ !30
ܦݧͨ͠τϥϒϧʢʣ !31 4W ސ٬ଆ ϝʔϧαʔόʔ .9Ϩίʔυͷ༏ઌ ͕ಉ͡ͳΒϥϯυϩϏϯ͞ΕΔ 4W 4W
.94W .94W .94W %/4ઃఆ
ܦݧͨ͠τϥϒϧʢʣ !32 4W ސ٬ଆ ϝʔϧαʔόʔ ϥϯυϩϏϯ͞ΕͯΔͳΒෛՙࢄ͞ΕͯΔͱࢥ͍ͬͯͨ ͔͋͠͠Δސ٬ͷαʔόʔ͔Βେྔͷϝʔϧ͕ʹूதͨ͠ ސ٬αʔόʔଆͰ*1ΞυϨε͕Ωϟογϡ͞Ε͍ͯͨ 4W 4W
ܦݧͨ͠τϥϒϧʢʣղܾ !33 4W ސ٬ଆ ϝʔϧαʔόʔ ϝʔϧड৴αʔόʔ܈ͷલʹෛՙࢄثʢ)"1SPYZʣΛઃஔͨ͠ 4W 4W 4W9 .94W9
%/4ઃఆ
ܦݧͨ͠τϥϒϧʢʣ !34 w ϝʔϧͷҰཡͷදࣔʹҎ্͔͔Δ w Α͘ݟΔͱVOJDPSOͷϝϞϦϑοτϓϦϯτ͕(͑ Aug 23 10:31:59 ip-172-31-XX-XX
monit[5690]: 'unicorn_relationapp_worker3' mem amount of 2200536kB matches resource limit [mem amount>358401kB]
ܦݧͨ͠τϥϒϧʢʣ !35 w ݪҼແବͳ"DUJWF3FDPSEΦϒδΣΫτͷੜ class Mail < ActiveRecord::Base has_many :model_a
# mail_id ΛؚΉ has_many :model_b # mail_id ΛؚΉ has_many :model_c # mail_id ΛؚΉ Mail.order(:id).eager_load( :model_a, :model_b, :model_c ).where(...)limit(limit).offset(offset) ؔ࿈ςʔϒϧͷใΛؚΊͯઌߦಡΈࠐΈͰҰؾʹऔಘ
ܦݧͨ͠τϥϒϧʢʣ !36 w ੜ͞ΕΔ42--&'5065&3+0*/ͷ࿈ SELECT mails.*, model_a.*, model_b.*, model_c.* FROM
mails LEFT OUTER JOIN model_a ON mails.id = model_a.mail_id LEFT OUTER JOIN model_b ON mails.id = model_b.mail_id LEFT OUTER JOIN model_c ON mails.id = model_c.mail_id : ࣮ࡍͬͱͨ͘͞Μ+0*/͍ͯͨ͠ ΄͍͠ϝʔϧσʔλ݅ͩͬͨͷʹɺ42-Ͱ͍݅ۙ݅Λऔಘ Ճ͑ͯɺ֤ϞσϧͷΦϒδΣΫτੜʹ͕͔͔͍࣌ؒͬͯͨ
ܦݧͨ͠τϥϒϧʢʣղܾ !37 w ରࡦ w ֻ͕͚݅ࢉͰ૿͑ͯ͠·͏+0*/ආ͚Δ w QMVDL DPMT Λͬͯ"DUJWF3FDPSEΦϒδΣΫτΛੜ͠ͳ
͍Α͏ʹ͢ΔʢྻͰฦͬͯ͘Δʣ w QMVDLͰඞཁͳใ͚ͩऔಘ͢Δ
ύϑΥʔϚϯενϡʔχϯά w ػೳେࣄ͚ͩͲɺ͞େࣄ w ސ٬͕গͳ͍͏ͪαΫαΫಈ͘ w ύϑΥʔϚϯενϡʔχϯά͔͠͠ͳ͍ظؒΛઃ͚Δ !38
࠷ޙʹ !39
·ͱΊ w ࡀΛ৯ͬͨฏຌͳਓͰ##αʔϏεΛθϩ͔Β࡞ͬͨ w ࠷ॳചΕͣɺ͍ۤ࣌͠ظ͕͋ͬͨ w ސ٬ͱͱʹ3FMBUJPOΛ͖ͤͯͨ͞ w ސ٬͕૿͑Δͱ૿͖͑ͯͨ w
·ͩ·ͩ3FMBUJPO͍ͯ͘͠ !40
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ΠϯήʔδͰ ΤϯδχΞΛืू͍ͯ͠·͢ ͝ڵຯͷ͋Δํ!LJ[BTIJ·Ͱ !41