Distributed Systems. Why?
Imagine team of 2 doctors with same skill set, working in parallel. They’re efficient because they’re 2. But because of the confusion for division of work, it could easily lead to miserable failures and it can’t scale efficiently.
It’s the same case with System’s design. It’s just too much load when only one application is hosted. When you horizontally scale(read: boot up more hosts for same application) it solves the “hight load” problem but all replicas have same responsibility. Shared responsibility.
With the new & growing trend of microservice architectures an another strategy is coming up as a champion.
Distributed systems.
It makes your system(be it app, server, db, site) available in multiple places.
But is it like replication?
No. Replication suggests “same replica is used in multiple place for availability”. Whereas Distribution talks more about dividing work load.
Fundamentally Distributed would mean: “Break it. Multiple pieces of a system distributed, behaving autonomously as one.”
In our doctor analogy used above it is same as saying that once doc will check patients for external injuries, and another for for internal injuries. this way they’ll be efficient in same fashion but with other benefits.
Distributed system:
- Gives impression of a single system
- Doesn’t hide the details of its pieces. Behaves like single system but doesn’t hide the the fact that’s multiple small systems working together.
- So it maintains transparency about it being distributed. Maybe by revealing location and having different accessibility points etc.
But Why? What do we get out of it?
Reliability 🙌
A system divided into components makes it harder to bring down the whole system altogether. Makes your system more reliable.
Performance 🏃
Since resources and responsibilities are distributed, it makes the component work as a team of individuals.
Scaling 📈
You can now scale individual components based on granular attributes like Geography 🗺 , size, administration etc.
Now these doctors can hire new docs in the respective department. If there are more number of external injury patients, only that department needs more docs. We could even hire docs with specific skills now 😃.
👼 These are the most visible benefits of a distributed system.
Have you adopted to a distributed design yet? What all benefits have you had? Do you believe it’s an overkill?
Let me know your thoughts in comments!