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
870
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
320
SQS の使い方を わかっていなかった / I didn't know how to use SQS correctly
kizashi1122
0
520
aws-vault を使った セキュアなアクセスキー管理 / Manage AWS Access Key More Securely By Using aws-vault
kizashi1122
0
810
inotify の話 / About inotify
kizashi1122
0
550
Rails でつくるマルチテナント型Webアプリケーション / multi-tenant web application building with Rails
kizashi1122
1
2.5k
Other Decks in Technology
See All in Technology
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
110
kargoの魅力について伝える
magisystem0408
0
200
Qiita埋め込み用スライド
naoki_0531
0
4.7k
20241220_S3 tablesの使い方を検証してみた
handy
3
390
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
330
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
2
2.2k
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
170
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
100
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
150
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
290
Storage Browser for Amazon S3
miu_crescent
1
140
Featured
See All Featured
Producing Creativity
orderedlist
PRO
341
39k
Embracing the Ebb and Flow
colly
84
4.5k
KATA
mclloyd
29
14k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Side Projects
sachag
452
42k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
For a Future-Friendly Web
brad_frost
175
9.4k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.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