Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
スタートアップに入ってまずやったインフラ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
620
ChatGPT×Whisperのプロトタイプと今後の展望 / chatgpt-with-whisper-prototyping-and-future-prospects
kotamat
3
3.8k
プロダクトドリブンにするために行った技術投資 / tech investment for product driven
kotamat
1
990
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.4k
Laravel_Nuxtjsでの構成とつまづきポイント
kotamat
1
1.2k
Laravel5.5のアプデ内容を勝手に評価してみた
kotamat
0
690
Laravelでプチマイクロサービスやってみた
kotamat
1
5.8k
Other Decks in Technology
See All in Technology
VLA-JEPA: Enhancing Vision-Language-Action Models with Latent World Models
takmin
0
370
契約で守るコンパウンドプロダクトのデザインシステム
yug1224
1
1.6k
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
150
渡米前の準備を制す!re:Invent 2026徹底準備術 / The Ultimate Preparation Guide for re:Invent 2026
yuj1osm
1
400
AI駆動開発におけるハーネスエンジニアリングの勘所
tsukuboshi
1
850
Claude Code on Bedrock で統制をかける小ネタ集/claude-code-bedrock-governance-tips
emiki
1
13k
OneLakeをデータソースにした AI Search(Foundry IQ)の ライフサイクル管理
ryuseiiida
0
180
DevelopersIO2026 -バックアップは“消されないこと”が9割-
yoshida0129
0
440
Agent × Maestro で始める モバイル E2E 端末準備からテスト実行・結果確認まで
sansantech
PRO
0
230
キヨさん67歳 AIコーディングエージェント物語
happysamurai294
0
120
Obsidian Vault Architectures
x5gtrn
PRO
0
200
AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜
hamadakoji
1
600
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
430
Six Lessons from altMBA
skipperchong
29
4.5k
Designing Experiences People Love
moore
143
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
590
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Crafting Experiences
bethany
1
390
Why Our Code Smells
bkeepers
PRO
340
58k
New Earth Scene 8
popppiees
4
2.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
280
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