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
31
12k
Infrastructure as Code
Naoya Ito
July 07, 2016
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
6.7k
Functional TypeScript
naoya
16
6.5k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
75
36k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.4k
20230227-engineer-type-talk.pdf
naoya
91
78k
関数型プログラミングと型システムのメンタルモデル
naoya
62
110k
TypeScript による GraphQL バックエンド開発
naoya
29
36k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
24k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
60k
Other Decks in Technology
See All in Technology
なぜ新機能リリース翌日にモニタリング可能なのか? 〜リードタイム短縮とリソース問題を「自走」で改善した話〜 / data_summit_findy_Session_2
sansan_randd
1
110
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
800
次世代のメールプロトコルの斜め読み
hirachan
3
370
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
27
18k
CloudComposerによる大規模ETL 「制御と実行の分離」の実践
leveragestech
0
180
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
9
4.4k
Data Engineering Guide 2025 #data_summit_findy by @Kazaneya_PR / 20251106
kazaneya
PRO
7
1.2k
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
920
GCASアップデート(202508-202510)
techniczna
0
290
AIで急増した生産「量」の荒波をCodeRabbitで乗りこなそう
moongift
PRO
0
380
激動の時代を爆速リチーミングで乗り越えろ
sansantech
PRO
1
250
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
190
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
Optimizing for Happiness
mojombo
379
70k
Docker and Python
trallard
46
3.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Building Adaptive Systems
keathley
44
2.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
260
Thoughts on Productivity
jonyablonski
72
4.9k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
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ॏཁ • ʮϞσϦϯάʯͷظ͋·Γߴ͘ͳΒͳ͔ͬͨ •
ΑΓখׂ͘͞͠ɺΑΓཧ͠ͳ͍ํʹΉ͔ͬͯ͘ŋŋŋͷ͔
ΤϯδχΞืूத