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
A method for separating policy definition and b...
Search
Gosuke Miyashita
PRO
March 02, 2021
Technology
3
230
A method for separating policy definition and behavior control by an intermediate language to achieve optimal server configuration management according to the situation
Gosuke Miyashita
PRO
March 02, 2021
Tweet
Share
More Decks by Gosuke Miyashita
See All by Gosuke Miyashita
Serverspec(をつくった自分)のそれまでとその後
mizzy
PRO
8
3k
Past and future of Infrastructure as Code
mizzy
PRO
0
120
Configuration Managementツールのポリシー定義用中間言語に関する考察/Considerations about an intermediate language of configuration management tools
mizzy
PRO
0
410
Infrastructure as Codeのこれまでとこれから/Infra Study Meetup #1
mizzy
PRO
29
12k
エンジニアかつ研究者としての今後のキャリアについて/My Career As An Engineer And A Researcher
mizzy
PRO
0
370
Compare OCI Runtimes
mizzy
PRO
2
1.3k
Serverspec and OSS at IEICE Society Conference 2018
mizzy
PRO
2
260
House Meetup
mizzy
PRO
7
3k
Rust + Ruby/mruby
mizzy
PRO
0
1.6k
Other Decks in Technology
See All in Technology
SORACOMで実現するIoTのマルチクラウド対応 - IoTでのクリーンアーキテクチャの実現 -
kenichirokimura
0
380
Mocking in Rust Applications
taiki45
1
410
自作Cコンパイラ 8時間の奮闘
soukouki
0
830
20240911_New_Relicダッシュボード活用例
speakerdeckfk
0
100
「認証認可」という体験をデザインする ~Nekko Cloud認証認可基盤計画
logica0419
2
430
フルカイテン株式会社 採用資料
fullkaiten
0
32k
o1のAPIで実験してみたが 制限きつすぎて辛かった話
pharma_x_tech
0
110
不動産tech Product Night#2_AIことはじめ_GA橋本
takehikohashimoto
0
180
Technical Writing Meetup vol.35
soracom
PRO
2
110
Discovering AI Models
picardparis
4
3.9k
Javaにおける関数型プログラミンへの取り組み
skrb
7
320
たった1人からはじめる【Agile Community of Practice】~ソース原理とFearless Changeを添えて~
ktc_corporate_it
1
430
Featured
See All Featured
WebSockets: Embracing the real-time Web
robhawkes
59
7.3k
Art, The Web, and Tiny UX
lynnandtonic
294
20k
Mobile First: as difficult as doing things right
swwweet
221
8.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Building Applications with DynamoDB
mza
90
6k
Design by the Numbers
sachag
277
19k
Producing Creativity
orderedlist
PRO
340
39k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
Fireside Chat
paigeccino
31
2.9k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Transcript
ঢ়گʹԠͨ͡࠷దͳαʔόߏཧΛ ࣮ݱ͢ΔͨΊͷϙϦγʔఆٛͱৼΔ੍͍ޚΛ தؒݴޠͰ͢Δख๏ ٶԼ ߶ี1 2/দຊ ྄հ2 2 ͘͞ΒΠϯλʔωοτגࣜձࣾ ͘͞ΒΠϯλʔωοτݚڀॴ
1 ߹ಉձࣾServerspec Operations 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 1
͡Ίʹ • ݱࡏݚڀ్தͷ༰ʹ͍͓ͭͯ͠͠·͢ • ݚڀରͰ͋Δαʔόߏཧͷഎܠ՝ҙࣝɺͦͷ՝ ʹରͯ͠ͲͷΑ͏ͳղܾํ๏Λߟ͍͑ͯΔ͔ɺʹ͍ͭͯڞ༗ ͍ͤͯͩ͘͞͞ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 2
ݚڀͷϞνϕʔγϣϯ • ϞόΠϧίϯϐϡʔςΟϯάɺΤοδίϯϐϡʔςΟϯάͷීٴ ʹΑͬͯߏཧख๏͕มΘΔͷͰͳ͍͔ • 2012ϦϦʔεͷAnsibleҎ߱͜Εͱ͍ͬͨߏཧπʔϧग़ ͖͍ͯͯͳ͍ • ߏཧπʔϧ։ൃࡶͰ͋Δ •
ͦͷࡶ͞Λղফ͠ɺࠓޙͷঢ়گͷมԽʹԠͨ͡ߏཧπʔϧ ͕ੜ·Ε͍͢Α͏ʹ͍ͨ͠ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 3
ΞδΣϯμ • αʔόߏཧͷ2େཁૉ • αʔόߏཧͷ՝ • ՝Λղܾ͢ΔͨΊͷख๏ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 4
αʔόߏཧͷ2େཁૉ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 5
αʔόߏཧ • BurgessΒ3ʹΑΔͱɺߏཧ(Configuration Management) ͱʮ༧Ίఆٛ͞ΕͨϙϦγʔͱΨΠυϥΠϯʹै͍ɺࣄલ ʹܾΊΒΕͨϏδωε্ͷతΛୡ͢ΔΑ͏ɺωοτϫʔ Ϋଓ͞ΕͨϚγϯͷৼΔ͍Λ੍ޚ͢ΔϓϩηεʯͰ͋Δ 3 Burgess, Mark,
and Alva L. Couch. 2006. “Modeling Next Generation Configuration Management Tools.” In LISA, 131–47. static.usenix.org. (PDF) 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 6
αʔόߏཧπʔϧ • αʔόߏཧΛߦ͏ͨΊͷιϑτΣΞ • දతͳͷʹCFEngine, Puppet, Chef, AnsibleͳͲ͕͋Δ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 7
αʔόߏཧπʔϧͷ2ͭͷׂ • BurgessΒͷఆ͔ٛΒɺαʔόߏཧπʔϧʹҎԼͷ2ͭ ͷׂ͕͋Δͱଊ͑ΒΕΔ • ωοτϫʔΫଓ͞ΕͨαʔόͷϙϦγʔͷఆٛ • ఆٛ͞ΕͨϙϦγʔʹجͮ͘ৼΔ͍ͷ੍ޚ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 8
ϙϦγʔఆٛ • ϙϦγʔఆٛԿΒ͔ͷݴޠʹΑͬͯߦ͏ • ϙϦγʔఆٛݴޠେผ͢Δͱ3ͭ • ಠࣗͷ؆қݴޠ • YAML/JSONͷΑ͏ͳ؆қݴޠ •
ϓϩάϥϛϯάݴޠ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 9
ϙϦγʔఆٛݴޠͷมભ • ࠷ॳಠࣗ؆қݴޠ͕࠾༻͞Ε͍ͯͨʢCFEngine, Puppet) • ChefͰRubyΛ࠾༻ • ΫϥυͷීٴͰ։ൃऀαʔόʔΠϯϑϥΛ৮ΔΑ͏ʹ ͳͬͨ •
SaltStack, AnsibleͰYAMLΛ࠾༻ • ϓϩάϥϛϯάΛߦΘͳ͍ਓʹड͚ೖΕ͍͢ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 10
ྨࣅπʔϧͷϙϦγʔఆٛݴޠͷมભ • Terraformಠࣗ؆қݴޠɺCloudFormationJSON/YAML • ͦͷޙϓϩάϥϛϯάݴޠ࠾༻ͷྲྀΕ • Pulumi, CDKͳͲ • Kubernetes͜ͷྲྀΕ
• Kubernetes with Pulumi, CDK for Kubernetes(cdk8s)ͳͲ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 11
ϙϦγʔఆٛݴޠશൠͷมભ • ಠࣗݴޠ → ϓϩάϥϛϯάݴޠ → YAML → ϓϩάϥϛϯά ݴޠɺͱ͍ͬͨมભ͕ݟ͑Δ
• ಛʹYAMLͱϓϩάϥϛϯάݴޠؒͰ༳Εಈ͖͕ݟΒΕΔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 12
ৼΔ੍͍ޚ • ݴޠಉ༷ɺৼΔ੍͍ޚ༷ʑͳख๏͕͋Δ • ϓϩηεͷ࣮ߦํ๏ͰҎԼͷ3ͭʹେผ • αʔόʔ/ΤʔδΣϯτܕ • ελϯυΞϩʔϯܕ •
ΤʔδΣϯτϨεܕ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 13
ৼΔ੍͍ޚख๏ͷมભ • ݩʑɺCFEngine, Puppet, Chefαʔόʔ/ΤʔδΣϯτܕ • ͦͷޙग़͖ͯͨAnsibleΤʔδΣϯτϨεܕ • Masterless Chef/Puppetͱ͍͏ϫʔυ͕ొ4
• ͜ΕελϯυΞϩʔϯͰChef/PuppetΛར༻͢Δ͜ͱΛ ࢦ͢ 4 Masterless Chef/Puppet | Technology Radar | ThoughtWorks 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 14
αʔόߏཧ2େཁૉͷ·ͱΊ • αʔόߏཧʹʮϙϦγʔఆٛʯͱʮৼΔ੍͍ޚʯͷ 2ͭͷׂ͕͋Δ • ϙϦγʔఆٛԿΒ͔ͷݴޠͰߦ͍ɺݴޠʹมભ͕ݟΒΕ Δ • ৼΔ੍͍ޚʹมભ͕ݟΒΕΔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ
15
αʔόߏཧͷ՝ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 16
αʔόߏཧπʔϧ։ൃ͕ࡶ • αʔόߏཧπʔϧOSσΟετϦϏϡʔγϣϯͷҧ͍ ΛநԽͯ͘͠ΕɺϢʔβʔʹͱͬͯར༻͍͢͠ • ͦͷ໘ɺ࣮టष͘ࡶʹͳΔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 17
ৼΔ੍͍ޚ͕ॏࢹ͞Ε͍ͯͳ͍ • ϙϦγʔఆٛݴޠͱҟͳΓɺৼΔ੍͍ޚख๏ʹؔ͢Δٞ ͋·Γ׆ൃͰͳ͍ • ϞόΠϧίϯϐϡʔςΟϯάΤοδίϯϐϡʔςΟϯάͷ Α͏ͳίϯϐϡʔςΟϯάڥͷมԽͷରԠΛߟ͑ͨ ߹ɺ͜ͷลΓͷٞ׆ൃʹߦΘΕΔඞཁ͕͋ΔͷͰͳ͍ ͔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ
18
ϙϦγʔఆٛͱৼΔ੍͍ޚͷҰମԽ • طଘͷߏཧπʔϧϙϦγʔఆٛͱৼΔ੍͍ޚ͕ҰମԽ࣮ͨ͠ ʹͳ͍ͬͯΔ • ϙϦγʔఆٛݴޠAͱ͍͏πʔϧɺৼΔ੍͍ޚख๏Bͱ͍͏ πʔϧͷͷ͕ྑ͍ɺͱ͍͏߹ͰɺΈ߹ΘͤΔ͜ͱ͕Ͱ͖ͳ͍ • ࠓޙͷঢ়گͷมԽʹରͯ͠ɺͦΕʹదͨ͠ݴޠख๏͕ग़͖ͯͨ߹ Ͱɺͯ͢Ұ͔Β࣮͢Δඞཁ͕͋Δ
• ͔͠͠ɺߏཧπʔϧ࣮ࡶͳͷͰͦΕͰޮ͕ѱ͍ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 19
αʔόߏཧͷ՝·ͱΊ • αʔόߏཧπʔϧ։ൃ͕ࡶ • ৼΔ੍͍ޚख๏͕ॏࢹ͞Ε͍ͯͳ͍ • ϙϦγʔఆٛͱৼΔ੍͍ޚͷҰମԽ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 20
՝Λղܾ͢ΔͨΊͷख๏ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 21
ϙϦγʔఆٛͱৼΔ੍͍ޚͷ • ͯ͠෦తʹ࠶ར༻Ͱ͖ΔΑ͏ʹ͢Δ͜ͱͰɺ࣮ίε τΛ͑ͳ͕Β༷ʑͳঢ়گʹ࠷దͳߏཧπʔϧΛͭ͘Δ ͜ͱ͕Ͱ͖Δ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 22
Serverspec5Ͱͷख๏ 5 ٶԼ߶ีɼ܀ྛ݈ଠɼদຊ྄հɼServerspec: એݴతهड़Ͱαʔόͷઃఆঢ়ଶΛςετՄೳͳ൚༻ੑͷߴ͍ςετϑϨʔϜ ϫʔΫɼใॲཧֶձจࢽɼVol.61ɼNo.3ɼpp.677-686ɼ20203݄. 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 23
ServerspecͷߏཧπʔϧͷԠ༻ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 24
Serverspecख๏ͷ՝ • ࣮ݴޠͷAPIͰ྆ऀΛܨ͍Ͱ͓Γ࣮ݴޠ੍͕ݶ͞ΕΔ • ͦͷͨΊผݴޠͰಉ༷ͷ࣮͕ͭ͘ΒΕΔ݁Ռͱͳ͍ͬͯΔ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 25
தؒݴޠͰ͢Δख๏ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 26
தؒݴޠʹٻΊΒΕΔཁ݅ • ֤छϙϦγʔఆٛݴޠͱNର1ͰରԠ͢ΔͷͰ͋ΔͷͰɺத ؒݴޠࣗϙϦγʔఆٛݴޠͰ͋Δ • ϙϦγʔఆٛݴޠਓ͕ؒಡΈॻ͖͢Δ͜ͱΛఆͯ͠ઃܭ ͞ΕͨͷͰ͋Δͷʹର͠ɺதؒݴޠඞͣ͠ਓ͕ؒಡΈ ॻ͖͢Δඞཁ͕ͳ͍ • ैདྷͷϙϦγʔఆٛݴޠͱҟͳΔߟ͑ํʹج͍ͮͯઃܭ͢
Δඞཁ͕͋Δ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 27
ࠓޙͷݚڀ༧ఆ • ઌߦݚڀͷϦαʔν • ߏཧͱผͷྖҬͷϦαʔν • DSLΞεϖΫτࢦݴޠͳͲ • தؒݴޠͰ͢ΔҎ֎ͷख๏ͷݕ౼ •
ৼΔ੍͍ޚ࣮ͦͷͷ͕࣋ͭࡶ͞ͷղܾ 2020ୈ4ճ(IOT௨ࢉୈ52ճ)ݚڀձ 28