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
Haconiwa - mrubyによるLinuxコンテナランタイム / haconiwa-fu...
Search
KONDO Uchio
March 01, 2017
Technology
3
7.4k
Haconiwa - mrubyによるLinuxコンテナランタイム / haconiwa-fukuoka-ruby-award-presentation-2017
福岡Ruby大賞本審査資料 @ 2017/03/01
KONDO Uchio
March 01, 2017
Tweet
Share
More Decks by KONDO Uchio
See All by KONDO Uchio
大規模レガシーテストを 倒すための CI基盤の作り方 / #CICD2023
udzura
5
2.4k
Ruby x BPF in Action / RubyKaigi 2022
udzura
0
250
Narrative of Ruby & Rust
udzura
0
230
開発者生産性指標の可視化 / pepabo-four-keys
udzura
3
1.7k
Talk of RBS
udzura
0
450
Re: みなさん最近どうですか? / FGN tech meetup in 2021
udzura
0
790
Dockerとやわらかい仮想化 - ProSec-IT/SECKUN 2021 edition -
udzura
2
730
Device access filtering in cgroup v2
udzura
1
920
"Story of Rucy" on RubyKaigi takeout 2021
udzura
0
840
Other Decks in Technology
See All in Technology
Claude CodeでKiroの仕様駆動開発を実現させるには...
gotalab555
3
900
Claude Codeが働くAI中心の業務システム構築の挑戦―AIエージェント中心の働き方を目指して
os1ma
9
1.5k
隙間時間で爆速開発! Claude Code × Vibe Coding で作るマニュアル自動生成サービス
akitomonam
3
250
ビジネス文書に特化した基盤モデル開発 / SaaSxML_Session_2
sansan_randd
0
260
相互運用可能な学修歴クレデンシャルに向けた標準技術と国際動向
fujie
0
200
Mambaで物体検出 完全に理解した
shirarei24
2
210
Nx × AI によるモノレポ活用 〜コードジェネレーター編〜
puku0x
0
340
みんなのSRE 〜チーム全員でのSRE活動にするための4つの取り組み〜
kakehashi
PRO
2
140
帳票構造化タスクにおけるLLMファインチューニングの性能評価
yosukeyoshida
1
230
専門分化が進む分業下でもユーザーが本当に欲しかったものを追求するプロダクトマネジメント/Focus on real user needs despite deep specialization and division of labor
moriyuya
1
1k
LLMで構造化出力の成功率をグンと上げる方法
keisuketakiguchi
0
450
JAWS AI/ML #30 AI コーディング IDE "Kiro" を触ってみよう
inariku
3
290
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
540
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
For a Future-Friendly Web
brad_frost
179
9.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Facilitating Awesome Meetings
lara
54
6.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
The Cost Of JavaScript in 2023
addyosmani
51
8.7k
The World Runs on Bad Software
bkeepers
PRO
70
11k
How to train your dragon (web standard)
notwaldorf
96
6.1k
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