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
March 02, 2021
Technology
320
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
More Decks by Gosuke Miyashita
See All by Gosuke Miyashita
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
72
38k
Serverspec(をつくった自分)のそれまでとその後
mizzy
9
3.4k
Past and future of Infrastructure as Code
mizzy
0
390
Configuration Managementツールのポリシー定義用中間言語に関する考察/Considerations about an intermediate language of configuration management tools
mizzy
0
540
Infrastructure as Codeのこれまでとこれから/Infra Study Meetup #1
mizzy
28
13k
エンジニアかつ研究者としての今後のキャリアについて/My Career As An Engineer And A Researcher
mizzy
0
470
Compare OCI Runtimes
mizzy
2
1.7k
Serverspec and OSS at IEICE Society Conference 2018
mizzy
2
390
House Meetup
mizzy
7
3.6k
Other Decks in Technology
See All in Technology
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
360
振り返りこそエンジニアの本領
negima
0
330
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
220
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1k
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
150
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
270
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
150
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
280
enechainの内製セルフサービスプラットフォーム
hiyosi
0
120
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
1
350
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
160
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
160
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Into the Great Unknown - MozCon
thekraken
41
2.7k
For a Future-Friendly Web
brad_frost
183
10k
The agentic SEO stack - context over prompts
schlessera
0
900
ラッコキーワード サービス紹介資料
rakko
1
4.8M
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
Designing for humans not robots
tammielis
254
26k
Everyday Curiosity
cassininazir
0
310
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
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