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
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.3k
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
7.8k
Functional TypeScript
naoya
19
6.8k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
77
38k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.8k
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
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
1.6k
コミットの「なぜ」を読む
ota1022
0
120
Kiro Ambassador を目指す話
k_adachi_01
0
130
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
240
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
3
830
2026-06-24_人とAIの責務分離に基づく開発プロセスの提案.pdf
takahiromatsui
0
120
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
260
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
630
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
20
7.4k
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
110
AI 不只幫你寫 Code: 當專案從 300 暴增到 1500, 我們如何撐住 DevOps
appleboy
0
220
AIが自律的に回る開発ループを設計してチーム開発に組み込む
nekorush14
0
120
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
300
Scaling GitHub
holman
464
140k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
260
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
The Curious Case for Waylosing
cassininazir
1
400
Writing Fast Ruby
sferik
630
63k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
450
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ॏཁ • ʮϞσϦϯάʯͷظ͋·Γߴ͘ͳΒͳ͔ͬͨ •
ΑΓখׂ͘͞͠ɺΑΓཧ͠ͳ͍ํʹΉ͔ͬͯ͘ŋŋŋͷ͔
ΤϯδχΞืूத