Yeah this is not the fault of ruby. Sounds more like bad choices that could be made with any language or framework.
Regardless, in my experience, when you run into scenarios that need queueing, multi-threading, etc., you need to know what you’re doing.
MRI (CRuby) has a GVL which is why you might use a forking web server like Puma or Pitchfork.
JRuby and TruffleRuby though have true multi-threading and no GVL.
I’ve used the Concurrent Ruby library with JRuby and Tomcat quite a bit and find works very well for what I need.
If we were to take Byzantine in a more accurate, historical sense, something truly “Byzantine” should be evolving, enduring, top-tier, and built to last for 1k years.