Martin Sústrik
Introduction
The world of Internet is moving in a very specific direction. As clients are almost constantly online, the need for client-side software is diminishing. Thin client becomes the norm. Users are happy to trade the control of their data and software for ease of use and not having to bother with installing and managing the software. Service providers on the other hand are happy to trade smart thick clients for extremely low time-to-market provided by application executed in the browser.
Client-side code, often in form of javascript, is downloaded on demand from the server and thus the traditional client-server protocols, i.e. stable contracts between client and server applications, cease to be the core concept of the network. Death of the application protocol is already being mourned in IETF1.
However, let's have a look at other side of the Internet infrastructure today.
As the centralised services become dominant, it suddenly makes a lot of sense to deliver products on top of these services. A game may be delivered via your favourite social network or maybe you can combine functionality of different centralised services in an innovative manner to form a new service. When creating a new product, if often makes sense to offload a specific functionality to an online service and focus on your business instead of maintaining an unrelated commodity infrastructure. Finally, using an existing service is often a means to reach the community centered around the service, the eyeballs, the users, the associated revenue.
To build services on top of existing services, these need to be accessible and usable in automated manner. Thus, if a service wants to benefit from the ecosystem of other related services, it has to expose some kind of API or protocol in addition to the thin client running in the browser.
This is already happening. Under the radar, complex ecologies of services emerge. While this may be considered to be a positive development, the bad thing is that there's no real infrastructure for this kind of thing, communication channels between services are implemented in completely ad-hoc manner, nobody really knows how it works, to what extent is scales and what are the implications for the network as such.
This paper argues that end-to-end principle2, seemingly obsolete in the world of centralised services, kicks back as soon as service-to-service interactions are introduced. It shows how traditional architectures for business communication fail to address problems encountered in large-scale multi-tenant environments and explains some of the results we've achieved with 0MQ3, a project aimed at providing decentralised business-level communication infrastructure.