Moving to a fully concurrent runtime (rust, golang, JVM, beam, etc) suddenly makes so much of that no longer a concern.
Moving to a fully concurrent runtime (rust, golang, JVM, beam, etc) suddenly makes so much of that no longer a concern.
I read their comment as needing an external database pool to scale, not that they don't need a pool.
When running JVM or the other runtimes, the database pool can be part of the application itself because it uses a different threading model.
To handle 25k qps with Rust, you can run 10 boxes. Maybe less.
Deployments are complicated (even when we wrap them in simple abstractions). A "rare" delay that impacts 1% of boxes during a deploy will become common on 100 boxes but still somewhat rare on only 10.
Running a single rust process per box allows a connection pooler to be in-process. It's more efficient, it supports postgres prepared statements, it's one less operational headache, etc.