4 ms·
On the topic of vertical scalability, I have found that many runtimes require something else to scale. Ruby requires passenger/unicorn/puma/etc. It requires pgb
by phamilton 4y ago
On the topic of vertical scalability, I have found that many runtimes require something else to scale. Ruby requires passenger/unicorn/puma/etc. It requires pgbouncer if you're using postgres. It requires redis for background work. Similar situation with Python, or node. You need a process manager to handle forking for concurrency, you need external connection pools etc.
I can see and appreciate the unix philosophy at work, but it's also adding complexity. More things to tune, more things that can go wrong or become a bottleneck.
As we've moved our services to Rust, we've found that all those special tools disappear. Sure, we need to make similar decisions around how our system runs, but (as an example) configuring an in-process db pool is much much simpler than pgbouncer.
And that's a big part of a runtime being scalable. We won't be forced to reach for another tool as our requirements expand. We still might, but we don't have to.
(Certainly golang and the JVM fall into this category as well)