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
Serverspec(をつくった自分)のそれまでとその後
Search
Gosuke Miyashita
April 20, 2022
Programming
3.4k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Serverspec(をつくった自分)のそれまでとその後
Gosuke Miyashita
April 20, 2022
More Decks by Gosuke Miyashita
See All by Gosuke Miyashita
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
72
37k
A method for separating policy definition and behavior control by an intermediate language to achieve optimal server configuration management according to the situation
mizzy
3
320
Past and future of Infrastructure as Code
mizzy
0
380
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 Programming
See All in Programming
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
3
2.1k
FastAPI の並行処理モデルを完全に理解する
hoto17296
8
3.1k
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
740
MySQLとPostgreSQLって何が違うの?
akagami
0
140
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
270
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
160
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
300
Deep dive into the select statement (GopherCon UK)
jespino
0
140
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
140
Hono + Inertia + React で LP を構築した話
oukayuka
2
180
React本体のコードリーディング
high_g_engineer
1
160
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
260
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
400
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
480
4 Signs Your Business is Dying
shpigford
187
23k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
500
Tell your own story through comics
letsgokoyo
1
1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.4k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
300
WENDY [Excerpt]
tessaabrams
11
39k
Designing for Performance
lara
611
70k
Transcript
Serverspec (Λͭͬͨࣗ͘) ͷͦΕ·Ͱͱͦͷޙ ٶԼ ߶ี (mizzy) iCARE Dev Meetup #32
20224݄20 1
͓͢͠Δ༰ • ServerspecҎલͷ • ͦΕ·ͰͷOSSͱͷؔΘΓํΛͬ͟ͱհ • ServerspecҎޙͷ • ͦͦ͜͜༗໊ʹͳͬͨOSSΛͭͬͨ͘͜ͱʹΑΔࣗͷ Өڹ
• Serverspecͦͷͷͷ͋·Γ͠·ͤΜ 2
ࣗݾհ • ٶԼ ߶ี • mizzy.org, mizzy@github, gosukenator@twitter • ϑϦʔϥϯεͷιϑτΣΞΤϯδχΞ
• 47ࡀ5ࣇͷ 3
ࠜཪ෦͔Β͓ಧ͚ͯ͠·͢ 4
Serverspecͱ ͜Μͳײ͡ͰRubyͷRSpecͰαʔόͷςετΛ͢Δπʔϧɻ20133݄ϦϦʔεɻ describe package('nginx') do it { should be_installed }
end describe service('nginx') do it { should be_enabled } it { should be_running } end describe port(80) do it { should be_listening } end 5
Serverspecͷ໊ • GitHub: 2.4K Stars • oreilly.com: serverspecͰݕࡧ͢Δͱ50݅ώοτ • BestGems.org:
σΠϦʔμϯϩʔυϥϯΩϯάͰ࠷ߴೋܻॱ Ґɺτʔλϧμϯϩʔυ3300ສ͑ • Black Duck Open Source Rookies of the Year 2013 • Thought Works Technology Raderʹܝࡌ • ୈ10ճຊOSSྭड 6
ServerspecΛͭ͘Δ·Ͱ (OSSͱͷؔΘΓํ) 7
OSSʢͬΆ͍ͷʣͱͷؔΘΓ • ࠷ॳʹ৮ΕͨͷNCSA Mosaic, NCSA HTTPd, Mule, Linux͋ ͨΓ •
OSSͱ͍͏ݴ༿͕·ͩͳ͍1995ࠒ • ࣗ࡞ͷϓϩάϥϜެ։2003ࠒ͔Β • ΣϒαΠτͷهࣄͷҰ෦ͱͯ͠ެ։ • Ұྫ: MTV2000ϦϞʔτը༧ 8
OSSͱͷؔΘΓʢ2004ࠒʙʣ • 2004ࠒ͔ΒOSS׆ಈͱݺΜͰΑ͍Α͏ͳ͜ͱΛ࢝͠Ίͨ • ࣗ࡞blosxomϓϥάΠϯͷެ։ • CPANϞδϡʔϧͷύονఏڙ/ࣗ࡞CPANϞδϡʔϧެ։ • Plagger Plugin։ൃ
• CodeReposͷࢀՃ 9
OSSͱͷؔΘΓʢ2008ࠒʙʣ • GitHub͕ओମʹ • ͪΐͬͱͨ͠ͷͰͭͬͨ͘ͷGitHubʹஔ͘Α͏ʹ͍ͯ͠Δ • ݱࡏ238ϦϙδτϦʢ͏ͪΦϦδφϧͰpublicͳͷ130͙Β ͍ʣ • ར༻͍ͯ͠ΔOSSͰؾ͍ͮͨ͜ͱ͕͋ΕϓϧϦΫΤετΛૹΔΑ
͏ʹ͍ͯ͠Δ • ྫ: DockerʹૹͬͨϓϧϦΫΤετ 10
ServerspecΛͭͬͨ͘ޙ (ࣗࣗʹى͖ͨ͜ͱ) 11
ϑϦʔϥϯεʹͳͬͨ • 20144݄ʹϑϦʔϥϯεʹͳ͔ͬͯΒؙ8 • ݫີʹServerspec͕͔͋ͬͨΒϑϦʔϥϯεʹͳͬͨΘ͚Ͱ ͳ͍ • ਖ਼ࣾһͷࣄΛ୳͍͕ͯͨ͠ɺྲྀΕͰۀҕୗͰݸਓࣄۀओͱ͠ ͯࣄΛ͢Δ͜ͱʹͳͬͨ •
͜ͷ··ݸਓࣄۀओͰ͠Β͍ͬͯ͘͜͏ɺͱࢥ͔ͬͯΒ࠷ॳ ʹೖͬͨࣄ͕ServerspecབྷΈͩͬͨ 12
ਓ຺͕͕ͬͨ • ͦΕ·Ͱ PerlίϛϡχςΟͷܨ͕Γ͕ϝΠϯͩͬͨ • ͋ͱαʔόΠϯϑϥք۾ͷํʑ • ςετۦಈͱ͔ΞδϟΠϧͳͲͷίϛϡχςΟͷํʑͱܨ͕ Δػձ͕૿͑ͨ •
ͪΖΜͦΕҎ֎ͷํʑ 13
USͷٕज़ΧϯϑΝϨϯεʹొஃͨ͠ • αϯϑϥϯγείͰ։࠵͞ΕͨChefConf 2014ʹొஃ • ChefConf 2014 ʹདྷͯ·͢ - Gosuke
Miyashita 14
ChefConf 2014ͰͷҰίϚ 15
ΦϥΠϦʔ͔Β୯ஶΛग़ͨ͠ • 20151݄ൃߦ • ࣥචظؒ7ϲ݄ • ࣄ͠ͳ͕ΒͷࣥචʹΑΔετϨε͔ɺࣗՈ ײ࡞ੑൽෘԌΛൃͨ͠ 16
ॻධΑΓʢͦͷ1ʣ ͕ड़͔ͨͬͨͷɺຊॻ͕ɺզʑͷΑ͏ͳOSSʹରͯؔ͠ ΘΓͷڧ͍ιϑτΣΞΤϯδχΞʹͱͬͯɺͨͱ͑ʰϋο ΧʔͱըՈʱʰJoel on SoftwareʱͷΑ͏ͳɺٕज़จԽʹؔ͢ ΔΤοηΠͷΑ͏ͳຯΘ͍Λܼ࣋ͭ࡞Ͱ͋Δͱ͍͏͜ͱͰ͋ Δɻ — Serverspecͷ࡞ऀ͕ͭ͘Δɺ͋ΔͻͱͭͷOSSจԽ
- ॻධ ʰServerspecʱ | ܀ྛ݈ଠ 17
ॻධΑΓʢͦͷ2ʣ mizzy͞ΜʹΑΔServerspecຊɺKonstantinͷSinatraຊΛ͑Δ ͔͠Εͳ͍΄Ͳɺ࡞ऀͷࢥ͕ਵॴʹग़ͯ͘Δڵຯਂ͍ຊͰ ͢ɻ — ΦϥΠϦʔʰServerspecʱΛಡΜͩ - ϩʔϑΝΠه 18
๏ਓԽͨ͠ • ϑϦʔʹͳͬͯ2Ͱ๏ਓԽ • ߹ಉձࣾServerspec Operations • Heavy Water Operations
LLC͔ΒͷΠϯεύΠΞ • ໊ࣾʹ͍ͭͯগ͚ͩ͠ޙչ͕͋Δ • Ұൠͷਓʹͱͬͯͯ͘Θ͔Γʹ͍͘ձ໊ࣾ • ྖऩॻʹ໊ࣾॻ͍ͯΒ͏࣌ʹޱ಄Ͱ௨͡ͳ͍ 19
δϟʔφϧจΛॻ͍ͨ • ٶԼ߶ี, ܀ྛ݈ଠ, দຊ྄հ. "Serverspec: એݴతهड़Ͱαʔόͷઃ ఆঢ়ଶΛςετՄೳͳ൚༻ੑͷߴ͍ςετϑϨʔϜϫʔΫ." ใॲཧֶ ձจࢽ
61.3 (2020): 677-686. • ݩʑͷ͖͔͚ͬɺ201310݄ͷୈ2ճ ίϯςφܕԾԽͷใަ ձˏ౦ژͰmatsumotory͞ΜͱॳΊ͓ͯձ͍ͨ࣌͠ͷձ͔Β • 2014ʹݚڀϨϙʔτͱͯࣥ͠ච͍͕ͯͨ͠ɺ2019ʹ͘͞ΒΠϯ λʔωοτݚڀॴͷࣄΛ͚ͨͷ͕͖͔͚ͬͱͳΓɺվΊͯδϟʔφ ϧจͱͯࣥ͠ච 20
େֶӃʹೖֶͨ͠ • ࡢ4݄ʹژେֶେֶӃใֶݚڀՊത࢜ޙظ՝ఔʹೖֶ • म࢜ඈ͠Ͱത࢜ • δϟʔφϧจࢿ֨৹ࠪͷରԠ݉Ͷ͍ͯͨ 21
·ͱΊ • Serverspecͱ͍͏OSSΛͭͬͨ͘Β46ࡀͰେֶӃੜʹͳͬͯͨ • ࣮ࡍʹServerspecOSS͚ͩͰͳ͘ɺΦʔϓϯͳ׆ಈΛੵΈ ॏͶ͖ͯͨ݁ՌɺͩͱࢥͬͯΔʢϒϩάهࣄษڧձͰͷొஃ ʣ • ࠓߦ͍ͬͯΔେֶӃͷݚڀɺจΦʔϓϯͳͷͳͷͰɺ͍ ··Ͱ͖ͨͨ͠Φʔϓϯͳ׆ಈͱଓ͖
• Openness is our driver for excellence 22