Smart endpoints and dumb pipes


Smart endpoints and dumb pipes When building communication structures between different processes, we have seen many products and approaches that stress putting significant smarts into the communication mechanism itself.

A good example of this is the Enterprise Service Bus (ESB), where ESB products often include sophisticated facilities for message routing, choreography, transformation, and applying Business Logic.

The Microservice community favors an alternative approach: Smart endpoints and dumb pipes.

Applications built from Smart endpoints and dumb pipes aim to be as decoupled and as cohesive as possible - they own their own Domain Logic and data and act more as filters in the classical UNIX sense - receiving a request, applying logic as appropriate and producing a response.

Typically, these are choreographed using simple RESTish protocols rather than complex protocols such as WS-Choreography or BPEL or orchestration by a central tool.

The two protocols used most commonly are HTTP request-response with resource API's and lightweight messaging. The best expression of the first is

Be of the web, not behind the web
-- Ian Robinson

Smart endpoints and dumb pipes teams use the principles and protocols that the world wide web (and to a large extent, Unix) is built on. Often used resources can be cached with very little effort on the part of developers or operations folk.

Smart endpoints and dumb pipes or something similar is a requirement to do Internet Scale products where:

  • Brand new deployments are rare.
  • New versions deployed automatically and frequently
  • No real need for general purpose orchestration
  • Each deployment is customized.

More Information#

There might be more information for this subject on one of the following: