Open In App

Design Issues of Distributed System

Last Updated : 04 Aug, 2023
Like Article

Distributed System is a collection of autonomous computer systems that are physically separated but are connected by a centralized computer network that is equipped with distributed system software. These are used in numerous applications, such as online gaming, web applications, and cloud computing. However, creating a distributed system is not simple, and there are a number of design considerations to take into account. The following are some of the major design issues of distributed systems:

 Design issues of the distributed system –

  1. Heterogeneity: Heterogeneity is applied to the network, computer hardware, operating system, and implementation of different developers. A key component of the heterogeneous distributed system client-server environment is middleware. Middleware is a set of services that enables applications and end-user to interact with each other across a heterogeneous distributed system.
  2. Openness: The openness of the distributed system is determined primarily by the degree to which new resource-sharing services can be made available to the users. Open systems are characterized by the fact that their key interfaces are published. It is based on a uniform communication mechanism and published interface for access to shared resources. It can be constructed from heterogeneous hardware and software.
  3. Scalability: The scalability of the system should remain efficient even with a significant increase in the number of users and resources connected. It shouldn’t matter if a program has 10 or 100 nodes; performance shouldn’t vary. A distributed system’s scaling requires consideration of a number of elements, including size, geography, and management.
  4. Security: The security of an information system has three components Confidentially, integrity, and availability. Encryption protects shared resources and keeps sensitive information secrets when transmitted.
  5. Failure Handling: When some faults occur in hardware and the software program, it may produce incorrect results or they may stop before they have completed the intended computation so corrective measures should to implemented to handle this case. Failure handling is difficult in distributed systems because the failure is partial i, e, some components fail while others continue to function.
  6. Concurrency: There is a possibility that several clients will attempt to access a shared resource at the same time. Multiple users make requests on the same resources, i.e. read, write, and update. Each resource must be safe in a concurrent environment. Any object that represents a shared resource in a distributed system must ensure that it operates correctly in a concurrent environment.
  7. Transparency: Transparency ensures that the distributed system should be perceived as a single entity by the users or the application programmers rather than a collection of autonomous systems, which is cooperating. The user should be unaware of where the services are located and the transfer from a local machine to a remote one should be transparent.

Mastering System Design by Geeksforgeeks

Want to get a Software Developer/Engineer job at a leading tech company? or Want to make a smooth transition from SDE I to SDE II or Senior Developer profiles? If yes, then you’re required to dive deep into the System Design world! A decent command over System Design concepts is very much essential, especially for working professionals, to get a much-needed advantage over others during tech interviews.


And that’s why, GeeksforGeeks is providing you with an in-depth interview-centric Mastering System Design that will help you prepare for the questions related to System Designs for Google, Amazon, Adobe, Uber, and other product-based companies.

Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads