Eeyup. I've seen a few companies with a prototype built on ROS and they universally struggle to get it from a basic demonstrator to a production system until they ditch ROS because it's just so poorly engineered. Everything you gain in the short term from having a nicely integrated system with a bunch of existing libraries gets more than offset by how buggy, difficult to debug, slow, and incomplete each part of it is, relative to basically any other alternative. Especially because it defaults to a distributed system which basically takes your existing problem and makes many new and exciting ones to go along with it (and neither ROS nor most of its users/developers are well equipped to solve distributed problems reliably).
This is my life right now: reckoning with optimizing a ROS1-based system that was itself hacked together in record time.
ROS seems almost like it wants to distribute state by default. And it has no primitives for sanely managing distributed state, health checks, etc. The lego brick approach to camera drivers is great, but trying to orchestrate all those bricks is a nightmare. Rosparam/master is woefully inadequte as a control plane.
I recommend anyone in this space look at tools like Consul.