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
B2Bクラウドサービスをゼロから立ち上げて、利用社数が1000社を超えるまでの道のり / a ...
Search
Kizashi Nagata
September 28, 2018
Technology
0
1k
B2Bクラウドサービスをゼロから立ち上げて、利用社数が1000社を超えるまでの道のり / a startup started B2B SaaS business from ground zero
2018/9/28 デブサミ関西発表資料
Kizashi Nagata
September 28, 2018
Tweet
Share
More Decks by Kizashi Nagata
See All by Kizashi Nagata
ビルドが遅い
kizashi1122
0
460
SQS の使い方を わかっていなかった / I didn't know how to use SQS correctly
kizashi1122
0
690
aws-vault を使った セキュアなアクセスキー管理 / Manage AWS Access Key More Securely By Using aws-vault
kizashi1122
0
940
inotify の話 / About inotify
kizashi1122
0
650
Rails でつくるマルチテナント型Webアプリケーション / multi-tenant web application building with Rails
kizashi1122
1
2.6k
Other Decks in Technology
See All in Technology
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
380
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
380
品質と速度の両立:生成AI時代の品質保証アプローチ
odasho
1
340
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
110
いつの間にか入れ替わってる!?新しいAWS Security Hubとは?
cmusudakeisuke
0
120
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
170
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
310
OPENLOGI Company Profile
hr01
0
67k
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
300
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
250
Lazy application authentication with Tailscale
bluehatbrit
0
210
PO初心者が考えた ”POらしさ”
nb_rady
0
210
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
How to Ace a Technical Interview
jacobian
278
23k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Language of Interfaces
destraynor
158
25k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Site-Speed That Sticks
csswizardry
10
690
Speed Design
sergeychernyshev
32
1k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
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