Distributed systems consists of multiple computers which communicate and coordinate the actions by passing messages to each other.
Using distributed systems results in some advantages and its own challenges. One of the main advantages of the distributed systems is to share the resources such as printer and file in the networks for all users or sharing a database for all the applications running on distributed systems.
Distributed systems have good performance when dealing with high scale data. The idea behind it is to keep the good performance by adding more resources to the system if necessary. The software should be compatible with distributed systems to allow scalability by adding more computers to the sever.
Mobiles in distributed systems by Coulouris A, Dollimore J, Kindberg T
In distributed systems, since transactions will be sent in a network, it brings security risks to protect these data from network sniffers and attackers. So its a challenge for developers to protect sensitive data by implementing the encryption methods and also using authentication to allow authorized users to access the data on the server.
Another challenge for developers is to design the system in such way that if one of the servers in the network crashes, the other servers can continue their operations to keep the system up and running.
One of the main concerns of distributed systems is concurrency, so its possible that server get many requests at the same time to use resources, so developers should make sure that they are placing locks on the transactions which requires updates to avoid concurrency related issues.
Coulouris A, Dollimore J, Kindberg T (2001). Distributed Systems concept and design. 3rd ed. England: Pearson Education Ltd. 2-25.