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
Functional TypeScript
naoya
14
5.8k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
65
30k
シェルの履歴とイクンリメンタル検索を使う
naoya
8
3.1k
20230227-engineer-type-talk.pdf
naoya
89
71k
関数型プログラミングと型システムのメンタルモデル
naoya
62
94k
TypeScript による GraphQL バックエンド開発
naoya
28
31k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
24k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
58k
一休の現在と、ここまでの道のり
naoya
90
41k
Other Decks in Technology
See All in Technology
分解して理解する Aspire
nenonaninu
2
490
Goで作って学ぶWebSocket
ryuichi1208
3
2.3k
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
600
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
1
1.5k
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
9
1.6k
TAMとre:Capセキュリティ編 〜拡張脅威検出デモを添えて〜
fujiihda
2
360
Windows の新しい管理者保護モード
murachiakira
0
170
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
27
14k
2.5Dモデルのすべて
yu4u
2
930
Swiftの “private” を テストする / Testing Swift "private"
yutailang0119
0
140
開発組織のための セキュアコーディング研修の始め方
flatt_security
3
2.7k
プロダクトエンジニア 360°フィードバックを実施した話
hacomono
PRO
0
120
Featured
See All Featured
Producing Creativity
orderedlist
PRO
344
39k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Statistics for Hackers
jakevdp
797
220k
Become a Pro
speakerdeck
PRO
26
5.1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
4 Signs Your Business is Dying
shpigford
182
22k
Unsuck your backbone
ammeep
669
57k
Gamification - CAS2011
davidbonilla
80
5.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Faster Mobile Websites
deanohume
306
31k
Scaling GitHub
holman
459
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
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ॏཁ • ʮϞσϦϯάʯͷظ͋·Γߴ͘ͳΒͳ͔ͬͨ •
ΑΓখׂ͘͞͠ɺΑΓཧ͠ͳ͍ํʹΉ͔ͬͯ͘ŋŋŋͷ͔
ΤϯδχΞืूத