Distributed Systems
A distributive system is a collection of multiple individual systems connected through a network sharing resources so as to achieve common goals.
It is more likely seen in the real world as it has huge advantages over monolithic architecture making it highly scalable and at the same time with multiple systems sharing the same resource solves our SPOF problem. (Single Point Of Failure)
As seen above media, in a distributive system, nodes are geographically distributed. So what if a node crashes due to power failure? In Distributed systems, the data will not be lost as data has been shared across multiple servers. Hence redundancy/replication helps us in saving data which is very essential as a backup is already there to take over justifying SPOF.
Example: Telecommunication Networks
Now let us discuss some merits and demerits of distributive systems:
Advantages of Distributed Systems
- Scalable: As it contains a collection of independent machines horizontal scaling can be done to achieve scalability.
- Reliable: The distributed system solves SPOF while the monolithic does not because even if an individual unit fails to work rest are operational making it more efficient to work most of the time and hence reliable.
- Low latency: Because of multiple servers and more likely spread to get closer to the user to resolve a query, hence takes very less time to resolve a user query.
Disadvantages of Distributed Systems
- Complexity: Because of high scalability the number of network points and hardware makes the system quite complex and challenging.
- Consistency: Higher number of devices makes it difficult to integrate the data as it gets complex to synchronous application states.
- Network Failure: Communication and coordination between systems in distributed systems is carried via network calls. In a network failure, conflicting information is passed or sometimes communication failure occurs leading to poor overall system performance.
Note: Management is also a disadvantage here out because of load balancing functionality(It is a process of distributing the load to the nodes), logging, caching and monitoing is required to manage the systemto prevent failures.
Analysis of Monolithic and Distributed Systems – Learn System Design
System analysis is the process of gathering the requirements of the system prior to the designing system in order to study the design of our system better so as to decompose the components to work efficiently so that they interact better which is very crucial for our systems.
System design is a systematic process involving phases such as planning, analysis, designing, deploying, and testing phases. Now the firstmost question would be why do analyze the system when we are well versed in the designing of systems.