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
860
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
300
SQS の使い方を わかっていなかった / I didn't know how to use SQS correctly
kizashi1122
0
480
aws-vault を使った セキュアなアクセスキー管理 / Manage AWS Access Key More Securely By Using aws-vault
kizashi1122
0
790
inotify の話 / About inotify
kizashi1122
0
530
Rails でつくるマルチテナント型Webアプリケーション / multi-tenant web application building with Rails
kizashi1122
1
2.5k
Other Decks in Technology
See All in Technology
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.1k
複雑なState管理からの脱却
sansantech
PRO
1
150
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
110
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
520
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
9
1k
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
430
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
130
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Code Reviewing Like a Champion
maltzj
520
39k
Thoughts on Productivity
jonyablonski
67
4.3k
Producing Creativity
orderedlist
PRO
341
39k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Code Review Best Practice
trishagee
64
17k
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