$30 off During Our Annual Pro Sale. View Details »
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
March 02, 2021
Technology
3
280
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
March 02, 2021
Tweet
Share
More Decks by Gosuke Miyashita
See All by Gosuke Miyashita
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
65
25k
Serverspec(をつくった自分)のそれまでとその後
mizzy
9
3.2k
Past and future of Infrastructure as Code
mizzy
0
320
Configuration Managementツールのポリシー定義用中間言語に関する考察/Considerations about an intermediate language of configuration management tools
mizzy
0
500
Infrastructure as Codeのこれまでとこれから/Infra Study Meetup #1
mizzy
28
13k
エンジニアかつ研究者としての今後のキャリアについて/My Career As An Engineer And A Researcher
mizzy
0
420
Compare OCI Runtimes
mizzy
2
1.6k
Serverspec and OSS at IEICE Society Conference 2018
mizzy
2
330
House Meetup
mizzy
7
3.4k
Other Decks in Technology
See All in Technology
MS Ignite 2025で発表されたFoundry IQをRecap
satodayo
3
250
あなたの知らないDateのひみつ / The Secret of "Date" You Haven't known #tqrk16
expajp
0
120
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
280
“決まらない”NSM設計への処方箋 〜ビットキーにおける現実的な指標デザイン事例〜 / A Prescription for "Stuck" NSM Design: Bitkey’s Practical Case Study
bitkey
PRO
1
510
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
240
【pmconf2025】PdMの「責任感」がチームを弱くする?「分業型」から全員がユーザー価値に本気で向き合う「共創型開発チーム」への変遷
toshimasa012345
0
200
M5UnifiedとPicoRubyで楽しむM5シリーズ
kishima
0
120
「え?!それ今ではHTMLだけでできるの!?」驚きの進化を遂げたモダンHTML
riyaamemiya
10
4.6k
なぜ使われないのか?──定量×定性で見極める本当のボトルネック
kakehashi
PRO
1
1.1k
Databricksによるエージェント構築
taka_aki
1
140
21st ACRi Webinar - AMD Presentation Slide (Nao Sumikawa)
nao_sumikawa
0
230
法人支出管理領域におけるソフトウェアアーキテクチャに基づいたテスト戦略の実践
ogugu9
1
190
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
120
20k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Producing Creativity
orderedlist
PRO
348
40k
Practical Orchestrator
shlominoach
190
11k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
The Language of Interfaces
destraynor
162
25k
Designing Experiences People Love
moore
143
24k
Typedesign – Prime Four
hannesfritz
42
2.9k
Six Lessons from altMBA
skipperchong
29
4.1k
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