For the last couple of months, a lot of my discussions have brought me to a single question of whether we want to go for a centralized system, a decentralized one or a distributed one?
Let me show you how these three look like.
We have had long discussions on the pros and cons and even though the debate is never ending, I want to highlight some points where these three majorly differ.
- Points of Failure / Maintenance : Centralized systems are easy to maintain as there is only a single point of failure. Decentralized have more but still finite. Distributed systems are the most difficult to maintain.
- Fault Tolerance / Stability : Centralized can be highly unstable. Kill the leader and there will be chaos. Kill the leader for a decentralized system and you will have many decentralized systems. Distributed systems are very stable and a single failure doesn’t do much harm.
- Scalability / Max Population : Centralized — low scalability, Decentralized — Moderate, Distributed — Infinite.
- Ease of development / Creation : Centralized systems can be created really fast, you pick up a framework and apply it everywhere. For Decentralized and Distributed, you have to first work out the lower level details like resource sharing (trade) and communications (transport).
- Evolution / Diversity : Since centralized systems follow a single framework, they don’t have diversity and evolve slowly. But for Decentralized and Distributed systems, once the basic infrastructure is in place, evolution is tremendous.
- If you want to grow fast and scale is not a concern, go for centralized.
- If you are solving a problem of scale and not in hurry, choose distributed. If in hurry, choose decentralized.
- If you have a strong leader, choose centralized. But if you have good managers, then choose decentralized and if you have a lot of individual contributors, then choose distributed.
If you agree to this, then please recommend & share.
If you disagree, please leave comments.