Challenges in Distributed Systems

13 Mar 2011 by

Challenges in Distributed Systems

Challenges in Distributed Systems

Designing the distributed systems does not come for free. Some challenges need to be overcome in order to get the ideal systems. The challenges in distributed systems are:

  • Heterogeneity
  • Transparency
  • Openness
  • Concurrency
  • Security
  • Scalability
  • Resilience to failure

Heterogeneity

This term means the diversity of the distributed systems in terms of hardware, software, platform, etc. Modern distributed systems will likely span different:

  • Hardware devices: computers, tablets, mobile phones, embedded devices, etc.
  • Operating System: Ms Windows, Linux, Mac, Unix, etc.
  • Network: Local network, the Internet, wireless network, satellite links, etc.
  • Programming languages: Java, C/C++, Python, PHP, etc.
  • Different roles of software developers, designers, system managers

Transparency

Distributed systems designers must hide the complexity of the systems as much as they can. Adding abstraction layer is particularly useful in distributed systems. While users hit search in google.com, they never notice that their query goes through a complex process before google shows them a result. Some terms of transparency in distributed systems are:

Transparency Description
Access Hide differences in data representation and how a resource is accessed
Location Hide where a resource is located
Migration Hide that a resource may move to another location
Relocation Hide that a resource may be moved to another location while in use
Replication Hide that a resource may be copied in several places
Concurrency Hide that a resource may be shared by several competitive users
Failure Hide the failure and recovery of a resource
Persistence Hide whether a (software) resource is in memory or a disk

Openness

If the well-defined interfaces for a system are published, it is easier for developers to add new features or replace sub-systems in the future. Example: Twitter and Facebook have API that allows developers to develop theirs own software interactively.

Concurrency

Distributed Systems usually is multi-users environment. In order to maximize concurrency, resource handling components should be anticipate as they will be accessed by competing users. Concurrency is a tricky challenges, then we must avoid the system’s state from becoming unstable when users compete to view or update data.

Security

Every system must consider strong security measurement. Distributed Systems somehow deals with sensitive information; so secure mechanism must be in place.

Scalability

Distributed systems must be scalable as the number of user increases.

B. Clifford Neuman

A system is said to be scalable if it can handle the addition of users and resources without suffering a noticeable loss of performance or increase in administrative complexity

Scalability has 3 dimensions:

  • Size
    • Number of users and resources to be processed. Problem associated is overloading
  • Geography
    • Distance between users and resources. Problem associated is communication reliability
  • Administration
    • As the size of distributed systems increases, many of the system needs to be controlled. Problem associated is administrative mess

Note: Scalability often conflicts with small system performance. Claim of scalability in such system is often abused.

Resilience to Failure

Distributed Systems involves a lot of collaborating components (hardware, software, communication). So there is a huge possibility of partial or total failure.

18 responses so far

Leave a Reply