Database scaling is often the biggest headache when your application starts growing. Let’s take PostgreSQL, one of most reliable, well-understood and fastest growing SQL databases. Everything works perfectly at first - your queries are fast, your application is responsive, and life is good. But as more users start using your application, cracks begin to appear. It usually starts with random slowdowns during busy hours. Then you notice more error messages popping up when lots of users try to do things at once. Adding more CPU or RAM to your database server helps for a while, but eventually, you hit a wall where throwing more hardware at the problem doesn't help anymore.