{"guid":"8571a2ac-c0b5-51ee-85fc-3e7259e18478","title":"verschiedene Modelle von Nebenläufigkeit am Beispiel Ruby","subtitle":null,"slug":"wicmp11-40-verschiedene-modelle-von-nebenlaufigkeit-am-beispiel-ruby","link":"https://cfp.w.icmp.camp/wicmp11/talk/UVPTN9/","description":"In den Nebenläufigkeitsmodellen gibt es Threads, Prozesse, Actors (Golang-Goroutines, Ruby-Ractors), Coroutinen (Ruby Fibers, Haskell Lazy Evaluation). Außerdem gibt es Abstraktions-Libraries wie concurrent-ruby.\nDas kann man dann noch mit verschieden Interpretern kreuzen und erhält einen bunten Blumenstrauß von Knieschüssen.\n\nWir wollen uns die Modelle anschauen und dann mal ganz konkret auf ein Stück Software anwenden:\nOpenVox Server ist in einer Mischung aus Clojure und Ruby geschrieben. Beide Sprachen laufen auf der Java-Virtual-Machine (JVM) und bringen einen Moloch von Software zum laufen. Die Frage ist, ob man eine der Sprachen sinnvoll abschütteln kann und ob man es schafft den Interpreter zu wechseln.\n\nSchwerpunkt wechselt von OpenVox auf Nebenläufigkeitskonzepte. Die Beschreibung wurde für einen anderen Talk erarbeitet:\n\nZwischenspiel: Java-Limits \"jvm pain points\"\n - https://dev.to/betadots/scaling-puppet-infrastructure-3p2o#scaling-beyond-jruby-limits\n - max 32 jrubies\n - max 2GByte reserved code cache\n - memory alloc\n\nRuby Performance\n - JRuby\n - MRI\n - `rvm list known`\n   - maglev - discontinued\n   - ree - discontinued looong ago\n   - mruby - C integration\n   - truffleruby - experimental Java standard foreign function interface - performance bad\n   - rbx - dead\n   - jruby - jruby-10 ruby3.1\n   - mri-3.3, mri-3.4, mri-4.0\n - Gem::concurrent\n   https://github.com/ruby-concurrency/concurrent-ruby/blob/master/lib/concurrent-ruby/concurrent/hash.rb#L17-L23\n - Ractors\n   - Gobal Interpreter Lock\n   - no shared state\n - Threads\n - just in time compiler\n - jruby\n\nOpenVox Server current architectur\n  - Clojure - jar, DSL\n  - Clojars.org library, vgl rubygems.org\n  - Compiler\n  - Compile - Templates\n  - CA-Prozess\n  - CA-API\n  - PuppetDB - Exported Resources\n  - PuppetDB - API\n  - ENC\n\nOpenVox MRI Architecture\n - Multi Process\n \nBonus:\n - Metrics von Server\n - Metrics von Agent\n\nBackup:\n - Fibers - Enumerator.produce(0).map { _1 + 1} .filter { _1.odd? }.first(10)\n\nLicensed to the public under https://creativecommons.org/licenses/by-sa/4.0/","original_language":"deu","persons":["duckling"],"tags":["40","2026","wicmp11","Raum Meltdown","wicmp11-deu","wicmp11","Day 2"],"view_count":53,"promoted":false,"date":"2026-02-27T15:40:00.000+01:00","release_date":"2026-02-27T00:00:00.000+01:00","updated_at":"2026-04-11T18:00:05.931+02:00","length":3074,"duration":3074,"thumb_url":"https://static.media.ccc.de/media/events/wicmp/wicmp11/40-8571a2ac-c0b5-51ee-85fc-3e7259e18478.jpg","poster_url":"https://static.media.ccc.de/media/events/wicmp/wicmp11/40-8571a2ac-c0b5-51ee-85fc-3e7259e18478_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/wicmp/wicmp11/40-8571a2ac-c0b5-51ee-85fc-3e7259e18478.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/wicmp/wicmp11/40-8571a2ac-c0b5-51ee-85fc-3e7259e18478.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/wicmp11-40-verschiedene-modelle-von-nebenlaufigkeit-am-beispiel-ruby","url":"https://api.media.ccc.de/public/events/8571a2ac-c0b5-51ee-85fc-3e7259e18478","conference_title":"WICMP 11","conference_url":"https://api.media.ccc.de/public/conferences/wicmp11","related":[],"recordings":[{"size":333,"length":3074,"mime_type":"video/webm;codecs=av01","language":"deu","filename":"wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_av1-hd.webm","state":"new","folder":"av1-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2026-02-27T23:31:25.292+01:00","recording_url":"https://cdn.media.ccc.de/events/wicmp/wicmp11/av1-hd/wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_av1-hd.webm","url":"https://api.media.ccc.de/public/recordings/96159","event_url":"https://api.media.ccc.de/public/events/8571a2ac-c0b5-51ee-85fc-3e7259e18478","conference_url":"https://api.media.ccc.de/public/conferences/wicmp11"},{"size":361,"length":3074,"mime_type":"video/webm","language":"deu","filename":"wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2026-02-28T00:25:31.001+01:00","recording_url":"https://cdn.media.ccc.de/events/wicmp/wicmp11/webm-hd/wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/96165","event_url":"https://api.media.ccc.de/public/events/8571a2ac-c0b5-51ee-85fc-3e7259e18478","conference_url":"https://api.media.ccc.de/public/conferences/wicmp11"},{"size":112,"length":3074,"mime_type":"video/webm","language":"deu","filename":"wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2026-02-27T23:48:14.574+01:00","recording_url":"https://cdn.media.ccc.de/events/wicmp/wicmp11/webm-sd/wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/96160","event_url":"https://api.media.ccc.de/public/events/8571a2ac-c0b5-51ee-85fc-3e7259e18478","conference_url":"https://api.media.ccc.de/public/conferences/wicmp11"},{"size":46,"length":3074,"mime_type":"audio/mpeg","language":"deu","filename":"wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2026-02-27T23:14:48.424+01:00","recording_url":"https://cdn.media.ccc.de/events/wicmp/wicmp11/mp3/wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/96158","event_url":"https://api.media.ccc.de/public/events/8571a2ac-c0b5-51ee-85fc-3e7259e18478","conference_url":"https://api.media.ccc.de/public/conferences/wicmp11"},{"size":117,"length":3074,"mime_type":"video/mp4","language":"deu","filename":"wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2026-02-27T23:14:10.759+01:00","recording_url":"https://cdn.media.ccc.de/events/wicmp/wicmp11/h264-sd/wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_sd.mp4","url":"https://api.media.ccc.de/public/recordings/96157","event_url":"https://api.media.ccc.de/public/events/8571a2ac-c0b5-51ee-85fc-3e7259e18478","conference_url":"https://api.media.ccc.de/public/conferences/wicmp11"},{"size":28,"length":3074,"mime_type":"audio/opus","language":"deu","filename":"wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2026-02-27T23:09:50.963+01:00","recording_url":"https://cdn.media.ccc.de/events/wicmp/wicmp11/opus/wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_opus.opus","url":"https://api.media.ccc.de/public/recordings/96156","event_url":"https://api.media.ccc.de/public/events/8571a2ac-c0b5-51ee-85fc-3e7259e18478","conference_url":"https://api.media.ccc.de/public/conferences/wicmp11"},{"size":367,"length":3074,"mime_type":"video/mp4","language":"deu","filename":"wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2026-02-27T23:07:37.577+01:00","recording_url":"https://cdn.media.ccc.de/events/wicmp/wicmp11/h264-hd/wicmp11-40-deu-verschiedene_Modelle_von_Nebenlaeufigkeit_am_Beispiel_Ruby_hd.mp4","url":"https://api.media.ccc.de/public/recordings/96155","event_url":"https://api.media.ccc.de/public/events/8571a2ac-c0b5-51ee-85fc-3e7259e18478","conference_url":"https://api.media.ccc.de/public/conferences/wicmp11"}]}