Sure, horizontal scaling is great for handling large loads and provides fault tolerance, but it comes with its own set of challenges. Let’s talk about them today…
One of the biggest challenges with horizontally scaled systems is maintaining data consistency across multiple machines. This complexity of coordination slows down the system, ultimately affecting throughput.
Another issue is dealing with network-related problems. Disconnected machines, network congestion, and outages are not uncommon. So when you are making your system horizontally scalable, it is critical to understand
- how will data be brought back in sync
- how will data integrity be ensured
- how quickly can you recover from an outage
- what happens if the data never fully syncs
Then, of course, there is the question of data and workload ownership. With multiple machines handling the load, how do you decide which one gets what? What if one machine becomes overloaded - a “hot node”? How will you manage that?
With a larger infrastructure footprint, you would need to consider observability and monitoring. Without it, you’ll have no idea what went wrong or where. Yes, distributed systems can be painful.
Remember, vertical scaling is still a valid approach, as long as it solves your problem. At the end of the day, your job is to solve problems, not just write code or build complex infrastructure for the sake of it.
Hope this helps.
btw, enrollments are open for my sys design cohort - arpitbhayani.me/course