There are numerous ways to bind a system to another such as sockets, named pipes, RPC, CORBA, RMI, Web services and shared memory to name a few of them. But why the Representational State Transfer (REST) has such an impact as architectural style for designing scalable distributed applications?
REST is an easy to use revolution
The best concept often comes with the simplest way to solve the problem. Although REST is not a standard, it is widespread due to its simplicity and ease to use and it is still a simpler alternative to SOAP, WSDL-based Web services.
Millions of people use the Web daily and thousands of us have studied what the Web is. But have we used the full potential of the World Wide Web just by jumping from one document to another through URLs over the network named Internet? Think wider!
When two systems are so tight to each other, that they are not separable, then you have a monolith. This is the worst scenario of a good architecture principle which says that two systems must be independent as possible to be deployed, maintained, modified and removed with ease. This is why components communicate through interfaces and are so isolated from the others.
A web browser is loose coupled with a server since it is based on standard interfaces to communicate with a wide panel of servers, which provide a HTTP service.
Interoperability is the possibility that different systems can communicate through a determined common standard. In the Web ecosystem the standard are HTTP, URIs, XML, HTML, and so on. Most of the technologies on the Web communicate through HTTP such as SOAP, COM, CORBA and RMI. Quasi all systems support HTTP as application protocol and URIs as identifier mechanism.
A lot of technologies solicit a massive reuse of other technologies to keep the software engineering as low as possible. A reuse of existing components is a common pattern to maximise the benefit on business and growth.
In the REST world, there is just ONE interface. Each client can use this only interface to communicate with the REST service.
The user of an application does not care about the complexity of a system. What matters is the response time. So the system has to answer in a small time box. The intern architecture and the implementation will determine if the overall system will be efficient, such as computing on a multitude of clusters. REST and HTTP have not a large influence on distributed systems.
REST helps this web infrastructure’s maturity such as cache mechanism and proxies.
As the REST approach is completely stateless, meaning same request yields same result (idempotency) the question on where to hold the state or alter objects comes in place.[more to come]
[more to come]
[more to come]