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
スタートアップに入ってまずやったインフラTIPS
Search
kotamat
May 30, 2018
Technology
5.2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スタートアップに入ってまずやったインフラTIPS
kotamat
May 30, 2018
More Decks by kotamat
See All by kotamat
LLMを用いた対話システムサービスをどうやって立ち 上げていくか? / How to launch a dialogue system service using LLM (Large Language Model)?
kotamat
0
610
ChatGPT×Whisperのプロトタイプと今後の展望 / chatgpt-with-whisper-prototyping-and-future-prospects
kotamat
3
3.8k
プロダクトドリブンにするために行った技術投資 / tech investment for product driven
kotamat
1
980
CTOがなぜPMをやりはじめたのか / Why did the CTO start doing PM
kotamat
0
320
プロダクトを中心に考える#とは / focus on the product
kotamat
1
2.1k
NuxtMeetup#1
kotamat
1
3.3k
Laravel_Nuxtjsでの構成とつまづきポイント
kotamat
1
1.2k
Laravel5.5のアプデ内容を勝手に評価してみた
kotamat
0
690
Laravelでプチマイクロサービスやってみた
kotamat
1
5.8k
Other Decks in Technology
See All in Technology
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
460
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
270
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
420
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
630
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
380
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
470
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
140
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
290
2026/09/10 Spring_Bootから_Jakarta_EE_MicroProfileへの移行
megascus
0
240
module Synths; end
asonas
1
130
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
0
910
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
1.4k
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
The SEO identity crisis: Don't let AI make you average
varn
0
550
Writing Fast Ruby
sferik
630
63k
Navigating Team Friction
lara
192
16k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
310
Utilizing Notion as your number one productivity tool
mfonobong
4
580
So, you think you're a good person
axbom
PRO
2
2.1k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
Speed Design
sergeychernyshev
33
2.1k
For a Future-Friendly Web
brad_frost
183
10k
Transcript
ελʔτΞοϓʹೖͬ ͯ·ͣͬͨΠϯϑϥ TIPS 2018/05/30 ελʔτΞοϓ × Πϯϑϥ ʙര։ൃΛߦ͏4ࣾͷ։ൃΛࢧ͑ΔΠϯϑϥઓུʙ @kotamat
ࣗݾհ • SCOUTER CTO • @kotamat • twitter@kotamats •
ຊॳհ໔ڐͳ͠Ͱਓࡐհ͕Ͱ͖Δ ෭ۀܕιʔγϟϧϔουϋϯςΟϯά ݱࡏ ໊͕ొۙ͠ͳస৬رऀΛ ܝࡌاۀʹհ͢Δ͜ͱͰใु͕ൃੜ ਓࡐհձࣾ ϓϩ ͚ΫϥυαʔϏε ࣾͷٻਓ%#Λఏڙ
հྉΛड͚औΕΔ ۀքॳͷ4BB4αʔϏε ̎ͭͷ)35FDIαʔϏεΛల։
4$065&3ͱ ແྉͰ ܝࡌٻਓ ϓϩͷ ΤʔδΣϯτ ࣾ ਓͷΤʔδΣϯτωοτϫʔΫΛ׆༻ͨ͠ਓࡐհ
ͭͷ૭ޱͰ͝հऀͷूஂΛ࠷େԽ͢Δ͜ͱ͕Ͱ͖·͢ ݸਓͷ εΧλʔ ਓ ٻਓΛͤΔ͚ͩʂ
հձࣾͷʹͬͯ૿͑Δཧίετ ࣮ࡍʹհ͕དྷΔͷҰ෦ͷձࣾͷΈ ࣾ ਓ͔ΒҰׅհ ෭ۀΤʔδΣϯτ ϓϩΤʔδΣϯτ ਓࡐհͷޮՌΛ࠷େԽӡ༻ίετΛ࠷খԽ
4$065&3ͱ
Ͱٻਓاۀ ࣾ ٻਓʹ·Ͱத ಋೖࣄྫ
લ৬·Ͱʝ • ιγϟήձࣾͰαʔόʔαΠυΤϯδχΞ • جຊతʹӡ༻ϑΣʔζ͕ओ • ߴෛՙͳαʔϏεͷνϡʔχϯά͕ಘҙ • ৽نࣄۀܥͰɺΠϯϑϥͷߏங͔Β৭ʑͬͯͨ •
ϒϩοΫνΣʔϯΫϥελͷߏɺελʔτΞοϓ ͷAWSߏͳͲ
ೖࣾ࣌ͷSCOUTER • Laravel, Vue.jsΛઌਐతʹऔΓೖΕ͍ͯΔʮٕ ज़తʹΠέͯΔʯձࣾ • ։ൃϑΣʔζ͕͋Δఔམͪண͍͖ͯͯɺӡ ༻ϑΣʔζʹֻ͔͍ࠩͬͯͨ͠ • →ӡ༻ϑΣʔζʹ͓͚Δ։ൃମ੍ͷߏங͕ෆ
͍ͯͨ͠ɻ
։ൃϑΣʔζ
։ൃϑΣʔζ ӡ༻ɾվળ ϑΣʔζ
։ൃϑΣʔζ ӡ༻ɾվળ ϑΣʔζ ͜͜Ͱೖࣾ
։ൃϑΣʔζ ӡ༻ɾվળ ϑΣʔζ ͜͜Ͱೖࣾ ։ൃϑΣʔζ
→ӡ༻ϑΣʔζͷ ΠϯϑϥTips ͠·͢
͢͜ͱ • εςʔδϯά • IaC • ͦͷଞͬͨ͜ͱ • ·ͱΊ
εςʔδϯά
εςʔδϯάͱ • ຊ൪өલʹ࠷ऴ֬ೝ͢ΔͨΊͷຊ൪ͱྨࣅ ͨ͠ςετڥ εςʔδϯά ຊ൪ ≒ Ϣʔβ ࣾһ
εςʔδϯάͱ • ຊ൪өલʹ࠷ऴ֬ೝ͢ΔͨΊͷຊ൪ͱྨࣅ ͨ͠ςετڥ εςʔδϯά ຊ൪ ≒ Ϣʔβ ࣾһ
εςʔδϯάͱ • ຊ൪өલʹ࠷ऴ֬ೝ͢ΔͨΊͷຊ൪ͱྨࣅ ͨ͠ςετڥ εςʔδϯά ຊ൪ ≒ Ϣʔβ ࣾһ
Before
Before • masterϒϥϯνʹϚʔδ͞ΕͨΒଈຊ൪ʹө • ҰԠϑϩϯτ͚ͩHeroku Review App্ཱ͕͕͍ͪͬͯͨ ͕ɺॏ͗ͯ͑͢ͳ͍ʝ • ෆ۩߹ใࠂ͕͋ͬͨͱͯ͠ɺ࠶ݱ·Ͱʹ͕͔͔࣌ؒΔ
or ࠶ݱ Ͱ͖ͳ͍ • ࣾһʹϦϦʔεલʹ֬ೝͯ͠Β͏ͱ͖ɺࣗͷ1$͔Β 0.0.0.0ͰϏϧυͯ͠ϩʔΧϧωοτϫʔΫͰݟͯΒ͏ɻ
σϓϩΠϑϩʔ
σϓϩΠϑϩʔ
push σϓϩΠϑϩʔ
push σϓϩΠϑϩʔ
push CodeDeploy Λىಈ σϓϩΠϑϩʔ
push CodeDeploy Λىಈ S3ʹzip ͰݻΊΔ σϓϩΠϑϩʔ
push CodeDeploy Λىಈ S3ʹzip ͰݻΊΔ σϓϩΠϑϩʔ
push CodeDeploy Λىಈ S3ʹzip ͰݻΊΔ zipΛEC2 ʹల։ σϓϩΠϑϩʔ
push CodeDeploy Λىಈ S3ʹzip ͰݻΊΔ zipΛEC2 ʹల։ σϓϩΠϑϩʔ
After
ߏਤ εςʔδϯά ຊ൪ σΠϦʔͰsync
pushޙ SlackίϚϯυ࣮ߦ σϓϩΠϑϩʔ(εςʔδϯά) hubot͕ݕग़ capistranoىಈ σϓϩΠ
None
ରϒϥϯνΛࢦఆ
ී௨ʁ
匠技
ঊٕ() • ຊ൪ڥ͔ΒεςʔδϯάDBͷγϯΫ࣌ɺ ػີใΛϚεΩϯάͯ͠ಉظ • ϩάΠϯύεϫʔυ։ൃ͕ϩάΠϯՄೳͳܗ ʹܗ • εςʔδϯάσϓϩΠ࣌ or
ਂʹຊ൪ڥ͔ ΒDBγϯΫͰ͖ΔΑ͏ʹ
DBϚεΩϯά • ݸਓใΛӅͨ͢ΊͷγϯΫલॲཧ • ςʔϒϧ໊ɺΧϥϜ໊ɺՃํ๏Λࢦఆͯ͠ϚεΩϯάΛߦ͏ • Ճํ๏ • ࢦఆͨ͠ʹॻ͖͑ •
จࣈྻඌʹsuffixΛՃ • ΛϥϯμϜͳͷʹॻ͖͑ • 3จࣈҎ߱Λଞͷจࣈʹॻ͖͑ • yamlͰઃఆ
yamlྫ - table_name: users columns: - name: email suffix: x
- name: numeric_data calc: true - name: last_name len: 1 - name: tel - name: default default: 18793jjdiaerheihu3qoh4u3qh4u3i2qhu43qh - name: uri conditions: - condition: "`status`='active'" value: some/path/of/uri - condition: "`status`='pending'" value: other/path/of/uri - table_name: companies columns:
ϩάΠϯύεϫʔυͷܗ • Ϣʔβ͔Βͷෆ۩߹ใࠂͷதͰɺ࠶ݱͰ͖ͳ ͍Τϥʔ͕ൃੜ͢Δ͜ͱ͕͋Δɻ • ຊ൪σʔλͱಉ͡σʔλͰϩάΠϯͰ͖Ε ࠶ݱ͕Մೳͳࣄ͕ଟ͍ • ύεϫʔυΛࣾһ͕ΞΫηεՄೳͳܗʹܗ ͓ͯ͘͠
DBͷγϯΫλΠϛϯά • σϓϩΠ࣌ʹຊ൪DBΛ͍ͭͰγϯΫͰ͖ΔΑ ͏ʹ͍ͯ͠Δ • migrationͰͷΤϥʔ͕ൃੜͨ͠ͱͯ͠ɺ ͍ͭͰݩͷঢ়ଶʹͤΔ • ෆ۩߹ௐ͙ࠪ͢ʹ֬ೝ͍ͨ͠ͱ͖ͷͨΊʹɺ σΠϦʔͰຊ൪DB͔ΒͷγϯΫΛߦ͍ͬͯΔ
DBγϯΫ
DBγϯΫ γϯΫ࣌ͷίϚϯυʹ Φϓγϣϯࢦఆ͢Δ͚ͩ
なんという 事でしょう
ͳΜͱ͍͏ࣄͰ͠ΐ͏(·ͱΊ) • ຊ൪ڥͷྨࣅڥʹྨࣅ͍ͯ͠Δ͕ɺใ తʹ҆શͳڥΛඋͰ͖ͨ • ڍಈ֬ೝͷඞཁ࠷ݶΓ͍ͨ͜ͱͷΈ ϑΥʔΧεͰ͖ΔΑ͏ʹͳͬͨ • Ϣʔεέʔεʹ߹ΘͤͯɺҙͷλΠϛϯάͰ ٻΊΔڥΛߏஙͰ͖ΔΑ͏ʹͳͬͨɻ
͢͜ͱ • εςʔδϯά • IaC • ͦͷଞͬͨ͜ͱ • ·ͱΊ
IaC
IaCͱ • Infrastructure as Codeͷུ • ΠϯϑϥߏஙΛίʔυͰهड़͠Α͏ͥ
Before
Before • AWSͷWebίϯιʔϧ্Ͱϙνϙνڥઃఆ • αʔϏε͕૿͑ͯ͘Δͨͼʹಉ͜͡ͱΛ͍ͯͨ͠ɻ • ‥͕ɺґଘαʔϏε͕ଟ͘ɺߏஙʹ͕͔͔࣌ؒΔ • ͞Βʹɺ෦ߏ͕ϒϥοΫϘοΫεԽ͢Δ͜ͱͰҾ ͖ܧ͕͗େมɻ
• ݁Ռ࠷ॳʹߏஙͨ͠ਓ͕୯Ұোʹ
ߏਤ
ߏਤ ×αʔϏε
After
After • AWSͷߏˠTerraformʹҠߦ • EC2ͷϛυϧΣΞͷઃఆˠAnsibleʹҠߦ
匠技
ঊٕ? • ߏͷίʔυ༻ͷϦϙδτϦΛ༻ҙ • αʔϏεؒͰڞ༗͍ͯ͠ΔϦιʔεͱɺαʔ Ϗε͝ͱͷϦιʔεσΟϨΫτϦ͚Δ • Terraformͷڥมgitignore͢Δ • Terraformͷ࣮ߦεΫϦϓτgitʹ͚ͬΔ
ߏͷίʔυ༻ͷϦϙδτϦΛ ༻ҙ • Github্ʹίʔυཧ༻ͷϦϙδτϦΛ༻ҙ • PRϕʔεͰίʔυΛཧ͢Δ͜ͱͰɺͲ͏͍ ͏ҙਤͰͦͷมߋΛߦ͔ͬͨΛՄࢹԽ • ଐਓੑͷഉআ
σΟϨΫτϦߏ ᵓᴷᴷ global ᵓᴷᴷ service1 ᴹ ᵓᴷᴷ ansible ᴹ ᴹ
ᵓᴷᴷ app ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ ec2-boot ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ ecs ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ nginx ᴹ ᴹ ᴹ ᵓᴷᴷ defaults ᴹ ᴹ ᴹ ᵓᴷᴷ handlers ᴹ ᴹ ᴹ ᵓᴷᴷ tasks ᴹ ᴹ ᴹ ᵋᴷᴷ templates ᴹ ᴹ ᵋᴷᴷ php ᴹ ᴹ ᵓᴷᴷ handlers ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᵋᴷᴷ policies ᵓᴷᴷ service2 ڞ௨෦ͷهड़
σΟϨΫτϦߏ ᵓᴷᴷ global ᵓᴷᴷ service1 ᴹ ᵓᴷᴷ ansible ᴹ ᴹ
ᵓᴷᴷ app ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ ec2-boot ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ ecs ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ nginx ᴹ ᴹ ᴹ ᵓᴷᴷ defaults ᴹ ᴹ ᴹ ᵓᴷᴷ handlers ᴹ ᴹ ᴹ ᵓᴷᴷ tasks ᴹ ᴹ ᴹ ᵋᴷᴷ templates ᴹ ᴹ ᵋᴷᴷ php ᴹ ᴹ ᵓᴷᴷ handlers ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᵋᴷᴷ policies ᵓᴷᴷ service2 αʔϏεͷUGϑΝΠ ϧͷཧ
σΟϨΫτϦߏ ᵓᴷᴷ global ᵓᴷᴷ service1 ᴹ ᵓᴷᴷ ansible ᴹ ᴹ
ᵓᴷᴷ app ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ ec2-boot ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ ecs ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ nginx ᴹ ᴹ ᴹ ᵓᴷᴷ defaults ᴹ ᴹ ᴹ ᵓᴷᴷ handlers ᴹ ᴹ ᴹ ᵓᴷᴷ tasks ᴹ ᴹ ᴹ ᵋᴷᴷ templates ᴹ ᴹ ᵋᴷᴷ php ᴹ ᴹ ᵓᴷᴷ handlers ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᵋᴷᴷ policies ᵓᴷᴷ service2 "OTJCMFͷཧ
σΟϨΫτϦߏ ᵓᴷᴷ global ᵓᴷᴷ service1 ᴹ ᵓᴷᴷ ansible ᴹ ᴹ
ᵓᴷᴷ app ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ ec2-boot ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ ecs ᴹ ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᴹ ᵓᴷᴷ nginx ᴹ ᴹ ᴹ ᵓᴷᴷ defaults ᴹ ᴹ ᴹ ᵓᴷᴷ handlers ᴹ ᴹ ᴹ ᵓᴷᴷ tasks ᴹ ᴹ ᴹ ᵋᴷᴷ templates ᴹ ᴹ ᵋᴷᴷ php ᴹ ᴹ ᵓᴷᴷ handlers ᴹ ᴹ ᵋᴷᴷ tasks ᴹ ᵋᴷᴷ policies ᵓᴷᴷ service2 ͭҎ߱ͷαʔϏε
ڥมͷgitignore • ϦϙδτϦཧͷ߹্ɺ୭Ͱclone͢Ε ίʔυΛऔಘͰ͖ΔΑ͏ʹͳ͍ͬͯΔɻ • ࣮ߦݖݶAWSͷkeyΛอ༗͍ͯ͠Δඞཁ͕͋ Δ • AWSͷkeyͷσʔλgitཧͤͣɺඞཁͳλ ΠϛϯάͰݸʑਓ͕ઃఆ͢Δඞཁ͕͋Δɻ
Terraformͷ࣮ߦεΫϦϓτgit ʹ͚ͬΔ • SCOUTERࣾPhpStormΛશһ༻͍ͯ͠Δ • PhpStorm༻ͷ࣮ߦεΫϦϓτอଘ͓ͯ͘͠ ͜ͱͰɺ୭Ͱ࣮ߦ͕Մೳͳܗʹ͍ͯ͠Δɻ • ͪΖΜAWSͷkeyඞཁͳਓʹͷΈ༩͠ ͍ͯΔͷͰɺͩΕͰ࣮ߦͰ͖ΔΘ͚Ͱͳ͍
gitignoreJetbrains͕ੜ͢ΔͷΛ༻͢Δ
None
なんという 事でしょう
ͳΜͱ͍͏ࣄͰ͠ΐ͏(·ͱΊ) • IaCʹ͢Δ͜ͱʹΑͬͯɺଐਓੑΛഉআͰ͖Δ • IaC͢Δ߹ͪΖΜ࣮ߦՄೳͳਓΛ੍ݶͰ͖ ΔΑ͏ʹɺgitignoreઃఆ͠Α͏ • ΤσΟλͷ࣮ߦઃఆΛ͢Δ͜ͱͰ • ͍·͙͢IaC͠Ζʂ
͢͜ͱ • εςʔδϯά • IaC • ͦͷଞͬͨ͜ͱ • ·ͱΊ
ͦͷଞͬͨ͜ͱ
ͦͷଞͬͨ͜ͱ • ཧ • ΞΫηεݖݶͷ੍ݶɺཧ • VPNͷඋ • Gsuiteͷ׆༻
·ͱΊ
·ͱΊ • ։ൃϑΣʔζ͔Βӡ༻ϑΣʔζʹมΘΔλΠ ϛϯάͰ৭ʑͱඋͨ͠ɻ • ։ൃޮΛ͞Βʹരʹ͢Δɺ߈ΊͷΠϯϑ ϥͳͷͰɺͬͯͳ͍ͱ͜Ζͬͨ΄͏͕ ͍͍ɻ
࠷ޙʹ SCOUTERࣾͰɺҰॹʹؤுͬͯ͘ΕΔ 匠 Λืू͓ͯ͠Γ·͢ɻ http://bit.ly/scouter-takumi Πϯϑϥ / Nuxt / Vue
/ Laravel