Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Haconiwa - mrubyによるLinuxコンテナランタイム / haconiwa-fu...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
KONDO Uchio
March 01, 2017
Technology
7.7k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Haconiwa - mrubyによるLinuxコンテナランタイム / haconiwa-fukuoka-ruby-award-presentation-2017
福岡Ruby大賞本審査資料 @ 2017/03/01
KONDO Uchio
March 01, 2017
More Decks by KONDO Uchio
See All by KONDO Uchio
大規模レガシーテストを 倒すための CI基盤の作り方 / #CICD2023
udzura
5
2.6k
Ruby x BPF in Action / RubyKaigi 2022
udzura
0
320
Narrative of Ruby & Rust
udzura
0
280
開発者生産性指標の可視化 / pepabo-four-keys
udzura
3
1.9k
Talk of RBS
udzura
0
510
Re: みなさん最近どうですか? / FGN tech meetup in 2021
udzura
0
870
Dockerとやわらかい仮想化 - ProSec-IT/SECKUN 2021 edition -
udzura
2
830
Device access filtering in cgroup v2
udzura
1
1k
"Story of Rucy" on RubyKaigi takeout 2021
udzura
0
940
Other Decks in Technology
See All in Technology
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
310
GoにおけるFFIのこれまでとこれから
goccy
5
2.5k
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
160
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
320
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
140
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
230
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
140
家のリアーキテクト・リファクタリング
suguruooki
0
110
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
160
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
Tab5をRubyで動くパソコンにする
kishima
2
340
20260912_スクフェス三河
kgnkhkr
0
290
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.4k
A better future with KSS
kneath
240
18k
A Tale of Four Properties
chriscoyier
163
24k
Practical Orchestrator
shlominoach
191
12k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
First, design no harm
axbom
PRO
2
1.3k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
Raft: Consensus for Rubyists
vanstee
141
7.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Transcript
Haconiwa mrubyʹΑΔॊೈ͔ͭಈతͳɺOSSͷLinuxίϯςφϥϯλΠϜ Presentation by Uchio Kondo
ൃදऀʹ͍ͭͯ • ۙ౻͏͓ͪ / GMOϖύϘٕज़ج൫νʔϜ ϓϦϯγύϧ • ग़౦ࡾՏɺݱࡏԬࢢࡏॅ • ίϛϡχςΟ:
Fukuoka.rb ·ͨɺRailsGirls Fukuoka #1 ΦʔΨφΠβʔ • RubyKaigi 2016 Speaker
ΞδΣϯμ 1. ιϑτΣΞͷ֓ཁ 2. औΓΈͷಈػͳͲ 3. ιϑτΣΞͷಛɾ༏Ґੑ 4. ࣮ͱࠓޙʹ͍ͭͯ 5.
ࢀߟࢿྉ
ιϑτΣΞͷ֓ཁ
Haconiwaͱʁ • LinuxίϯςφͷϥϯλΠϜͰ͋Δ • Linuxίϯςφͱ...LinuxͷΧʔωϧͷ༷ʑͳػೳΛ༻͍ ͯಠཱͨ͠ҰछͷԾڥΛ࡞Δٕज़ • ϥϯλΠϜͱ...ͦͷԾڥΛ࡞͠ɺ্ཱͪ͛ɺϥΠ ϑαΠΫϧΛཧ͢ΔιϑτΣΞ
HaconiwaͲ͏͍͏ϥϯλΠϜ͔ • LinuxίϯςφϥϯλΠϜʹɺޙड़͢Δ௨Γઌߦ࣮͕ ͍͔ͭ͘ଘࡏ͢ΔʢLXC, Docker, rkt, ...ʣɻ • HaconiwaɺLinuxίϯςφϥϯλΠϜͷதͰɺ Ruby(mruby)ͷεΫϦϓτʹΑͬͯConfiguration
as Code Λ࣮ݱ͢Δ ʢॊೈͳઃఆͷهड़ɺϑοΫͷهड़ͳͲʣ
औΓΈͷಈػ
ݩʑͷಈػ • ͍ΘΏΔSaaSαʔϏε(*)ͷ։ൃɾӡ༻ͷܦݧ্ɺ෦Ͱ ར༻͍ͯ͠ΔίϯςφϥϯλΠϜ࣮ʹෆΛײ͡ɺࣗ ͷඞཁͱ͢ΔػೳΛ࣮ͨ͠ͷΛ࡞ͬͨɻ • ϗεςΟϯάܥαʔϏεͷதͰ͏ͷ͕ͦͦͷಈػ • RubyKaigi 2016ͷCFPʹԠื͠ɺ௨աͨ͜͠ͱ͖͔ͬ
͚ͷҰͭ (*) http://sqale.jp/
։ൃͷաఔͰͷؾ͖ͮ • Πϯλʔωοτ͕େ͍ʹීٴ͠ɺΣϒαΠτͷΞΫηεٸ ૿ͳͲʹର͢ΔॊೈͳαʔόϦιʔεͷίϯτϩʔϧ͕՝ͱ ͳ͍ͬͯΔɻ • KubernetesͳͲͷ͋Δ௨ΓɺίϯςφԾԽٕज़ʹ͓ ͚Δٕज़ֵ৽ʹظ͕͋Δ • ͦ͏͍ͬͨഎܠΛ౿·͑ɺΑΓ൚༻తͳίϯςφϥϯλΠϜʹ
͘͢։ൃΛଓ͚͍ͯΔ
Rubyͷ࠾༻ಈػ • ։ൃͷॳ͔ΒɺʮॊೈͰϓϩάϥϚϒϧʯͳ͜ͱΛఆ • PaaS෦ͰͷϦιʔεׂΓͯɺΞΫηεٸ૿࣌ͷϦιʔ εͷߜΓࠐΈɺFastContainer(*)ͳͲ৽ΞʔΩςΫνϟ ͷରԠ • ͦ͏͍ͬͨతʹRubyඇৗʹ͍͍ͯΔ (*)
http://hb.matsumoto-r.jp/entry/2016/11/11/234915
RubyͷϝϦοτ ͦͷ1 • ෦DSLͱͷ૬ੑͷྑ͞ ίϯςφهड़ݴޠɺઃఆͱϓϩάϥϜͷͪΐ͏Ͳதؒ • namespace/cgroup/capabilityͳͲͷࢦఆʹઃఆ • ίϯςφىಈ࣌ͷಉظ/ඇಈػͷϑοΫɺγάφϧϋϯυϥ ʹϓϩάϥϜ
• Rubyͷจ๏Ͱ͋Εɺ෦DSLͱͯ͠౷Ұతʹهड़Մೳ
RubyͷϝϦοτ ͦͷ2 • mrubyΈࠐΈʹ͍ͨɺચ࿅͞ΕͨCͷAPIΛ࣮͍ͯ͠ Δɻͦͷ෭࢈ͱͯ͠ɺCݴޠΛܦ༝ͨ͠γεςϜίʔϧͷόΠ ϯσΟϯά͕ඇৗʹॻ͖͘͢ͳ͍ͬͯΔ • ·ͨɺΞΫηε͢ΔͨΊͷίʔυྔCͱͯ͠খ͘͞ࡁΉ • ࣮ͱͯ͠ɺ༷ʑͳmruby
gemΛ࡞ࡁΈ: ɹcgroup, capability, linux namespace, seccomp...
ιϑτΣΞͷ ಛɾ༏Ґੑ
طଘ࣮ʹൺͨ༏Ґੑ - ॊೈੑ • ྫ͑Dockerͱൺͯ: • DockerԾڥͱͯ͠ͷಠཱੑΛॏࢹͨ݁͠Ռɺີ݁߹ͷ ίϯςφͰ͋Δ • ҰํͰHaconiwaɺඞཁͳίϯϙʔωϯτΛΈ߹Θͤɺঢ়
گʹԠͯ͡ແޮԽ͢Δ͜ͱ͑͞Ͱ͖·͢ɻྫ͑ىಈ࣌ͷΦʔ όϔουͷݮͳͲɺΑΓଟ͘ͷ༻్ʹίϯςφΛར༻Ͱ͖Δ
طଘ࣮ʹൺͨ༏Ґੑ - ಈతͳੑ࣭ • ྫ͑LXCͱൺͯ: • LXCAPIΛ࣋ͪɺόΠϯσΟϯάΛ࡞Ͱ͖Δɻ͔ͦ͠͠ͷAPI ىಈɺఀࢭͳͲɺݶఆతͳૢ࡞ͷΈ • ҰํͰHaconiwaɺίϯςφʹؔ͢ΔઃఆҰ௨Γͯ͢
DSLͰઃఆՄೳɻͳ͓͔ͭɺىಈͷ༷ʑͳλΠϛϯάͰ͋ͬͨ Γɺ͋Δ͍γάφϧϋϯυϥɺىಈޙͷඇಉظతϑοΫॲཧ αϙʔτ͢ΔͨΊɺΑΓϓϩάϥϜͳͲͰͷ੍ޚ͕༰қͰ͋Δ
طଘ࣮ʹൺͨ༏Ґੑ - อकੑ • ྫ͑rkt(CoreOS)/Kubernetesͱൺͯ: • rktଟ͘ͷઃఆΛαϙʔτ͢Δ͕ɺίϚϯυϥΠϯΦϓγϣ ϯͰͷड͚ೖΕͱͳΔ KubernetesΦʔέετϨʔγϣϯπʔϧ͕ͩɺHaconiwaͷ ࢦ͢ํੑʹ͍ۙͷ͕͋Δɻ
ҰํͰɺઃఆڊେͳyamlϑΝΠϧͷΈ
طଘ࣮ʹൺͨ༏Ґੑ - อकੑ • ʢঝલʣॊೈͰෳࡶͳίϯςφઃఆɺ͋Δ͍ΦʔέετϨʔ γϣϯͱͷ࿈ܞΛߟ͑ΔͱɺͦΕΒͷઃఆಈ࡞ΛRuby ͷΑ͏ͳݴޠͰهड़ͨ͘͠ͳΔ͜ͱ͕ߟ͑ΒΕΔɻ • HaconiwaͷΑ͏ʹઃܭࢥͷஈ֊ͰDSLʹΑΔ੍ޚΛα ϙʔτͨ͠ίϯςφɺͦ͏͍ͬͨཁΛड͚ࢭΊΒΕΔɻ
RubyΛ࠾༻͍ͯ͠ΔͷͰֶश͢͠͞/Մಡੑߴ͍
ֵ৽ੑʹ͍ͭͯ • ઌड़ͨ͠Α͏ʹɺHaconiwaDSLΛࠜຊͱͨ͠ॊೈੑɺ ಈతੑΛ࣮ݱ͍ͯ͠Δ • ͦͷ݁ՌɺʮίϯςφʯΛݻఆతͳԾڥͰͳ͘ɺ ϓϩάϥϜͰ੍ޚ͕ՄೳͳεϨουతͳͷͱൃలͤ͞ ͏Δɺͱߟ͑Δ
HaconiwaͷγεςϜίʔϧతଆ໘ • ίϯςφ࣮ߦج൫ͱͯ͠ɺOSͷू߹ମΛҰͭͷʮOSʯɺ ͋Δ͍ϦιʔεͷϓʔϧͱΈͳ͢ͱɺίϯςφͷάϧʔ ϓ͕ϓϩηεతɺίϯςφҰͭҰͭεϨουతͳɺ͋Δ छ͍ࣺͯͷαϒϧʔνϯͱ၏ͤΔ • ͦ͏ߟ͑ΔͱɺͦͷίϯςφΛࣗ༝ࣗࡏʹ࡞ɺΞΫηε Ͱ͖ΔHaconiwaͷ෦APIɺγεςϜίʔϧతͰ͋Δ
• චऀൃදʮHaconiwaͷதͱઃܭࢥʯp. 36
“Haconiwa API”ͷҰ࣮͕Haconiwa • c.f. specinfra/Serverspec • ʮHaconiwaͷ෦APIʯΛΑΓ൚༻తʹൈ͖ग़͢ͱɺ HaconiwaࣗͷଞʹɺίϯςφΛར༻༷ͨ͠ʑͳϛυϧ ΣΞΛ࡞Δ͜ͱ͕Ͱ͖ΔͷͰͳ͍͔
࣮ͱࠓޙͷల
ٕज़ൃදଞɺ࣮ʹ͍ͭͯ • RubyKaigi 2016ɺ໊ݹRubyձٞ03Λ࢝ΊɺRubyίϛϡ χςΟத৺ʹHaconiwaʹؔ͢ΔτʔΫΛॏͶ͍ͯΔஈ֊ • ଞɺͱͯ͠ɺGitHubͷϓϩδΣΫτͷ ελʔ͕97 (20172݄22ݱࡏ)
ࠓޙʹ͍ͭͯ 1 • ઌड़ͨ͠ίϯςφ࣮ߦج൫ͱͯ͠ͷOSΫϥελͷൃΛ͞Βʹਐ Ίͨɺদຊ྄հࢯͷFastContainerߏ(*)Λ౿·͑ɺॴଐձࣾͰ ϗεςΟϯάܥWebαʔϏεͷ։ൃΛਐΊ͍ͯΔஈ֊Ͱ͋Δ • FastContainerͷΑ͏ͳੜଘظؒͷίϯτϩʔϧ͞Εͨίϯςφ Haconiwaͱ૬ੑ͕͍͍ •
ྫ͑ɺʮαʔόϨεΞʔΩςΫνϟʯͷ࣮ݱʹ͍͍ͯΔ
• ʮFactContainerΞʔΩςΫνϟ֓ʯΑΓ
ࠓޙʹ͍ͭͯ 2 • ίϯςφϥϯλΠϜͱͯ͠ͷͷ্Λࢦ͢ • ۩ମతʹɺseccomp/apparmorͱ͍ͬͨηΩϡϦςΟؔ ͷAPIͷαϙʔτɺCRIUͱ͍ͬͨίϯςφىಈͷߴ Խʹཱٕͭज़ͱͷ࿈ܞΛߟ͍͑ͯΔ • ಉ࣌ʹυΩϡϝϯτͷॆ࣮......͍ͨ͠
૯ׅ
Haconiwaͷ·ͱΊ • Haconiwaɺྨࣅͷ࣮ͱൺͯඇৗʹಈతͰॊೈͳίϯςφΛ࡞ Ͱ͖ΔϥϯλΠϜͰ͋Γɺͦͷ࣮ݱͷͨΊʹRuby/mrubyͷੑ࣭Λ׆༻ ͍ͯ͠Δɻ • Haconiwaɺίϯςφ࣮ج൫ͷOSͷΫϥελΛͻͱ·ͱ·ΓͷOS ͱΈͳ͢ͱɺҰछͷγεςϜίʔϧͱߟ͑Δ͜ͱͰ͖Δ • ্ड़ͨ͠Α͏ͳHaconiwaͷಛΛ׆༻͠ɺ࣍ੈతͳϗεςΟϯάܥ
ͷαʔϏεΛߟҊɾ։ൃ͍ͯ͠Δ
ࢀߟࢿྉ
ࢿྉҰཡ 1. Haconiwaʹؔ͢Δࢿྉ The introduction of mRuby on Container https://speakerdeck.com/udzura/mruby-on-container
Haconiwaͷ͜Ε·Ͱͱ͜Ε͔Β https://speakerdeck.com/udzura/haconiwa-on-the-pavement Haconiwa ͷதͱઃܭࢥ https://speakerdeck.com/udzura/the-haconiwa-internals 2. FastContainer/DAOSߏʹ͍ͭͯ FastContainerΞʔΩςΫνϟ֓ https://speakerdeck.com/matsumoto_r/reactive-stateless-and-mortal- architecture-for-web-applications ະདྷͷαʔόج൫ͷHaconiwa/mrubyͷؔΘΓ https://speakerdeck.com/udzura/haconiwa-and-future-os 3. Serverspecͱspecinfraʹ͍ͭͯ ࠷ॳͷݴٴ https://github.com/mizzy/serverspec-thesis/pull/13#issuecomment-32700180 4. αʔόϨεΞʔΩςΫνϟʹ͍ͭͯ http://www.publickey1.jp/blog/16/qcon_tokyo_2016.html