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
Infrastructure as Code
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Naoya Ito
July 07, 2016
Technology
12k
31
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Infrastructure as Code
Naoya Ito
July 07, 2016
More Decks by Naoya Ito
See All by Naoya Ito
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
12
4.2k
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
7.8k
Functional TypeScript
naoya
18
6.8k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
77
38k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.7k
20230227-engineer-type-talk.pdf
naoya
91
86k
関数型プログラミングと型システムのメンタルモデル
naoya
63
110k
TypeScript による GraphQL バックエンド開発
naoya
29
37k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
25k
Other Decks in Technology
See All in Technology
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.9k
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
940
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
140
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
560
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
120
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.4k
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
6
5k
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
150
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
220
人材育成分科会.pdf
_awache
2
160
自宅LLMの話
jacopen
1
510
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
210
Featured
See All Featured
Crafting Experiences
bethany
1
180
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
Mind Mapping
helmedeiros
PRO
1
250
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
GitHub's CSS Performance
jonrohan
1033
470k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
570
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
How to train your dragon (web standard)
notwaldorf
97
6.7k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Leo the Paperboy
mayatellez
7
1.8k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Transcript
*OGSBTUSVDUVSFBT$PEF /BPZB*UP גࣜձࣾҰٳ$50
ΞδΣϯμ • *OGSBTUSVDUVSFBT$PEF͕ੈͷதʹग़͖ͯͯ • ͲΜͳࢥߟɾࢼߦաఔ͕͋ͬͯ • ࠓͲ͏͍͏ঢ়گʹࢸ͍ͬͯΔͷ͔
• $'&OHJOF • 1VQQFU • $IFG • "OTJCMF
• $'&OHJOF • 1VQQFU • $IFG • "84౦ژϦʔδϣϯ • "OTJCMF
• ʰೖ$IFG4PMPʱग़൛
ೖ$IFG4PMPग़൛࣌ • ࠃͰඦنͷαʔόʔΛ࣋ͭҰ෦8FCاۀ͕1VQQFU$IFG • ʮ*OGSBTUSVDVUVSFBT$PEFʯ·ͩ·ͩ • *BB4ͷར༻͕ຊ֨Խ͠ɺαʔόʔ͕ΑΓಈతͳͷʹ
࣌ͷ*OGSBTUSVDUVSFBT$PEFͷظ • ΫϥυʹͳͬͯΑ͘࡞Γ͢͠ɺߏஙΛࣗಈԽ͍ͨ͠ • ൿͷλϨԽ͢ΔαʔόʔઃఆۀΛͲ͏ʹ͔͍ͨ͠
None
ؾ͕͍ͭͨ͜ͱ • ίʔυʹͳͬͨ͠ɺόʔδϣϯཧ͢Ε͍͍ • (JUΛ͏ͳΒ(JU)VC
Πϯϑϥ1VMM3FRVFTU͢Δ
ίʔυʹͯ͠ΈͨΒ͔ͬͨ • ΞϓϦέʔγϣϯ։ൃͰഓ͖ͬͯͨϓϥΫςΟεΛΠϯϑϥʹԠ༻Ͱ͖ ΔͷͰ • (JU(JU)VCΛओ࣠ʹͨ͠ܧଓతσϦόϦʔ
ςετॻ͚Δ 4FSWFSTQFD require 'spec_helper' describe package('httpd'), :if => os[:family]
== 'redhat' do it { should be_installed } end describe service('httpd'), :if => os[:family] == 'redhat' do it { should be_enabled } it { should be_running } end describe port(80) do it { should be_listening } end
$*Ͱ͖Δ
NBTUFSʹϚʔδͨ͠ΒσϓϩΠɺͰ͖Δ 『インフラの継続的デリバリー』 h#p://d.hatena.ne.jp/naoya/20140821/1408577976
*OGSBTUSVDUVSFBT$PEFͷ࠶ൃݟ • ࣗಈԽίʔυԽ͕ୡ͍ͨ͠తͰͳ͔ͬͨ – ͦΕ$POpHVSBUJPOBT$PEFΒ͍͠ • 5IPVHIU8PSLTTBZT5IJTJTOPUTJNQMZXSJUJOHTDSJQUT CVUJOWPMWFT VTJOHUFTUFEBOEQSPWFOTPGUXBSFEFWFMPQNFOUQSBDUJDFTUIBUBSF BMSFBEZCFJOHVTFEJOBQQMJDBUJPOEFWFMPQNFOU
IUUQTXXXUIPVHIUXPSLTDPNJOTJHIUTCMPHJOGSBTUSVDUVSFDPEFSFBTPOTNJMF
'PXMFSઌੜͷϓϥΫςΟε • 6TF%FpOJUJPO'JMFT • 4FMGEPDVNFOUFETZTUFNTBOEQSPDFTTFT • 7FSTJPOBMMUIFUIJOHT • $POUJOVPVTMZUFTUTZTUFNTBOEQSPDFTTFT •
4NBMMDIBOHFTSBUIFSUIBOCBUDIFT • ,FFQTFSWJDFTBWBJMBCMFDPOUJOVPVTMZ h#p://mar;nfowler.com/bliki/InfrastructureAsCode.html
Ϋϥυͱ*OGSBTUSVDUVSFBT$PEF • Ϋϥυ࣌ʹͳͬͯΠϯϑϥ͕ಈతʹͳͬͨ – ʮΠϯϑϥετϥΫνϟʯ͕ιϑτΣΞʹΑͬͯநԽ͞Εͨ • ಈతͳΠϯϑϥΛίϯτϩʔϧ͢Δͷʹɺ*OGSBTUSVDUVSFBT$PEFͷϓϥ ΫςΟε૬ੑͷྑ͍ղͩͬͨ
͜ͷύλʔϯ͕Ԡ༻Ͱ͖Δͷαʔόʔ͚ͩͳͷ͔ • ࣅͨΑ͏ͳύλʔϯ͕αʔόʔҎ֎ʹݟͯऔΕΔ • XJOFCBSSFMSPBEXPSLFS – "843PVUFͷઃఆΛએݴతͳ3VCZ%4-Ͱఆٛద༻Ͱ͖Δπʔϧ • %/4ઃఆΛܧଓతσϦόϦʔ
– %/4Ϩίʔυͷ3VCZ%4-Λ(JU)VCͰཧ – 1VMM3FRVFTUܖػʹςετ ESZSVO Λ࣮ߦ – NBTUFSʹϚʔδͨ͠Β3PVUFʹө͢Δ
%/4ઃఆΛ(JU)VCͰཧ͠
1VMM3FRVFTUͯ͠$*ϨϏϡʔ
NBTUFSʹϚʔδ͢Δͱ%/4ө
͜Εԡ͢ɻҎ্ มߋөΛ(JU)VCͷϚʔδϘλϯʹू
Ͳ͏ͨ͠ΒՄೳʹ ŋŋŋ3FQSPEVDJCMF#VJME • 3FQSPEVDJCMF#VJME Ϗϧυͷ࠶ݱՄೳੑ ॏཁ – ίʔυԽɺࣗಈԽŋŋŋΑΓ3FQSPEVDJCMF͔Ͳ͏͔ – खॱͰͳ͋͘Δ͖ঢ়ଶΛهड़
એݴత ɻ࣮ߦ݁Ռႈ • 3FQSPEVDJCMFͳΒϏϧυͯ͠ςετͯ͠σϓϩΠ͕Մೳʹ • ͦΕΛୡ͢ΔͨΊͷํ๏͕$POpHVSBUJPOBT$PEFͰ͋Γɺએݴతͳ $POpHVSBUJPONBOBHFNFOUUPPM – %PDLFSͦͷ΄͔ಉ͡ߟ͑ํ – ΞϓϦέʔγϣϯ։ൃͷੈքͰ5IF5XFMFWF'BDUPS"QQʹ͋ΔϓϥΫςΟε
3FQSPEVDJCMF#VJME • $POpHVSBUJPO.BOBHFNFOU5PPM 1VQQFU $IFG "OTJCMF – αʔόʔߏΛ3FQSPEVDJCMFʹ •
SPBEXBMLFS – %/4ઃఆΛ3FQSPEVDJCMFʹ • 5FSSBGPSN – "84.BOBHFNFOU$POTPMF্ͰͷϙνϙνۀΛ3FQSPEVDJCMFʹ • %PDLFS$PNQPTF – %PDLFSίϯςφؒͷґଘؔΛ3FQSPEVDJCMFʹ
ŋŋŋͱ͍͏Θ͚Ͱ • ʮ*OGSBTUSVDUVSFBT$PEFιϑτΣΞ։ൃͷϓϥΫςΟεΛΠϯϑϥ ʹద༻͢ΔΜͩʯ • ͱ͍͏จ຺Ͱ·ͬͯɺΘΓͱड͚ೖΕΒΕ͍ͯΔͷ͕ݱঢ়
ͰɺͦΕͰྑ͔ͬͨͷ͔ • ίʔυʹ͢ΔͷखॱԽͷͨΊ͚ͩͳ͍ˠಉҙ • ιϑτΣΞ։ൃͷϓϥΫςΟεΛʙˠಉҙ • Ϋϥυ࣌ͷΠϯϑϥཧʹద͍ͯ͠Δˠಉҙ • Ҏ্Ͱ͢ˠ͑ͬ
• ʮߏஙखॱΛίʔυԽʯ͢ΔΜ͡Όͳ͍ • ΠϯϑϥετϥΫνϟΛϞσϦϯά͢ΔΜͩ – ͜Ε͕*OGSBTUSVDUVSFBT$PEFͷຊջͩͱࢥ͍ͬͯͨ
ෳࡶੑʹཱ͔ͪ͏ʹŋŋŋ • ιϑτΣΞ։ൃͷෳࡶੑʹର͢Δ࠷ॏཁͳϓϥΫςΟεϞσϦϯάͰͳ͍ ͷ͔ • ۀΛͦͷ··γεςϜʹམͱ͢ͷͰͳ͘ɺϞσϦϯά͢Δ͜ͱͰॳΊͯγες ϜΛۀʹઓུతʹ׆͔ͤΔͷͰͳ͔ͬͨͷ͔ •
ͦͷ*OGSBTUSVDUVSFBT$PEFɺޙɺෛ࠴ʹͳͬͯͳ͍
"OTJCMFWT$IFGͱ͔ŋŋŋ • Ͳ͏Ͱ͍͍ • ʮΤʔδΣϯτΛΠϯετʔϧ͠ͳ͍͍ͯ͘ ŝžŕʯ – ͦΜͳͷೖΕΕ͍͍͚ͩͩΖϝϯςͯ͘͠ͷʹΠϯετʔϧͷख͕ؒল͚ ͔ͨΒͬͯԿ͕خ͍͠Μͩ •
ͲͪΒ͕ʮΑΓ༏ΕͨϞσϦϯάΛఏҊ͢Δʯͷͳͷ͔ • ͲͪΒ͕ΑΓɺݱγεςϜͷϞσϦϯάཁٻਫ४ʹద͍ͯ͠Δͷ͔
ʮΠϯϑϥͷϞσϦϯάʯ͕ٞΜʹͳΔ͔ • ŋŋŋͳΒͳͦ͏ • ࣮ફதͷΤϯδχΞͷظͦ͜ʹͳͦ͞͏ • Ή͠ΖίϯςφͦͷଞͰίʔυͰཧ͖͢ରΛͳΔ͘ݮΒ͢ର Λখ͘͢͞Δ͜ͱͰෛ࠴ԽΛආ͚Δ
– ʮ%PDLFSpMFͰ͍͍ʯΈ͍ͨͳػӡ – ڊେͳ$IFGDPPLCPPLϨϙδτϦͱ͔୭ݟͨ͘ͳͦ͞͏ – *OGSBTUSVDUVSFBT$PEFͷϓϥΫςΟεͷ࣮ફྖҬ૿ͭͭ͠ɺίʔυԽରׂ౷ ࣏
·ͱΊ • ͋Δ͖࢟Λίʔυʹ͢ΔɺࣗಈԽ͢Δ͚ͩͰͳ͍ • ຊ࣭ιϑτΣΞ։ൃͷϓϥΫςΟεͷద༻ɺΒ͍͠ • 3FQSPEVDJCMF#VJMEॏཁ • ʮϞσϦϯάʯͷظ͋·Γߴ͘ͳΒͳ͔ͬͨ •
ΑΓখׂ͘͞͠ɺΑΓཧ͠ͳ͍ํʹΉ͔ͬͯ͘ŋŋŋͷ͔
ΤϯδχΞืूத