Member-only story

Most of today’s enterprise IT applications are distributed — either at a larger- scale that operates over the internet or as a collection of local networks.
The demand for developing Distributed Systems has increased significantly over the past years as applications are now required to serve a wide range of consumers in different geographical locations in real-time. Initially, most software systems did not have to consider the networking layer to enable other devices to communicate with each other. As networking capabilities have advanced over the past decade, the client-server model has gained popularity to enable different users to send requests to servers and demand service from them.
In the client-server model, the assumption is that the client has limited computing capabilities, and therefore all the processing shall take place at the server-side.
Mobile agent is another paradigm for distributed systems that appeared after the client-server model. Mobile agents aimed to overcome the slow network connectivity between client and server in the client-server model as some applications needed constant contact with the server for processing and network connectivity was the bottleneck
After that, Service Oriented Architecture (SOA) arises, which offered an integration solution that enabled different distributed systems to communicate with each other. In the SOA approach, the client communicates a message using a Remote Procedure Call such as Simple Object Access Protocol(SOAP) with other components.
SOA enables software components to work with each other over multiple networks independent of each other’s platforms or programming languages. Service-Oriented Architecture is scalable and highly reliable while it offers platform Independence, however, SOA is complex, and slow with a high overhead as all the inputs in SOA architecture must be validated before it gets sent to the service which can lead to a longer response time and machine load.
Due to these shortcomings more lightweight communication mechanism was needed to satisfy business needs while maintaining the scalability and reliability that SOA offers, which becomes the motive for having more lightweight communication mechanisms such as REST API and more lightweight architecture known as microservices.
