$30 off During Our Annual Pro Sale. View Details »
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
1.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
520
SQS の使い方を わかっていなかった / I didn't know how to use SQS correctly
kizashi1122
0
780
aws-vault を使った セキュアなアクセスキー管理 / Manage AWS Access Key More Securely By Using aws-vault
kizashi1122
0
1k
inotify の話 / About inotify
kizashi1122
0
720
Rails でつくるマルチテナント型Webアプリケーション / multi-tenant web application building with Rails
kizashi1122
1
2.7k
Other Decks in Technology
See All in Technology
「Managed Instances」と「durable functions」で広がるAWS Lambdaのユースケース
lamaglama39
0
280
品質のための共通認識
kakehashi
PRO
3
220
AIと二人三脚で育てた、個人開発アプリグロース術
zozotech
PRO
0
690
大企業でもできる!ボトムアップで拡大させるプラットフォームの作り方
findy_eventslides
1
570
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
190
世界最速級 memcached 互換サーバー作った
yasukata
0
330
AWS Trainium3 をちょっと身近に感じたい
bigmuramura
1
130
GitLab Duo Agent Platformで実現する“AI駆動・継続的サービス開発”と最新情報のアップデート
jeffi7
0
210
re:Invent 2025 ~何をする者であり、どこへいくのか~
tetutetu214
0
120
AI活用によるPRレビュー改善の歩み ― 社内全体に広がる学びと実践
lycorptech_jp
PRO
1
190
安いGPUレンタルサービスについて
aratako
2
2.6k
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
1
1k
Featured
See All Featured
Scaling GitHub
holman
464
140k
Faster Mobile Websites
deanohume
310
31k
Thoughts on Productivity
jonyablonski
73
5k
Making Projects Easy
brettharned
120
6.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Building Adaptive Systems
keathley
44
2.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Site-Speed That Sticks
csswizardry
13
990
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Optimizing for Happiness
mojombo
379
70k
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