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.1k
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
590
ChatGPT×Whisperのプロトタイプと今後の展望 / chatgpt-with-whisper-prototyping-and-future-prospects
kotamat
3
3.8k
プロダクトドリブンにするために行った技術投資 / tech investment for product driven
kotamat
1
970
CTOがなぜPMをやりはじめたのか / Why did the CTO start doing PM
kotamat
0
310
プロダクトを中心に考える#とは / focus on the product
kotamat
1
2.1k
NuxtMeetup#1
kotamat
1
3.3k
Laravel_Nuxtjsでの構成とつまづきポイント
kotamat
1
1.2k
Laravel5.5のアプデ内容を勝手に評価してみた
kotamat
0
680
Laravelでプチマイクロサービスやってみた
kotamat
1
5.8k
Other Decks in Technology
See All in Technology
product engineering with qa
nealle
0
150
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
150
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
510
生成AIの活用/high_school2026
okana2ki
0
110
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
2.3k
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
150
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
3
1.6k
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
200
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
1.1k
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
320
そのタスクオンスケですか?
poropinai1966
0
140
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
350
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
310
Marketing to machines
jonoalderson
1
5.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Abbi's Birthday
coloredviolet
3
8.5k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
240
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
180
Facilitating Awesome Meetings
lara
57
7k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
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