What is a highly distributed architecture?

An Enterprise Service Bus or ESB brings communication ability with external environment, to applications initially lacking in this field. It therefore allows any two or more applications to exchange information without human intervention. Once integrated in an infrastructure, it allows automation and monitoring of information trnasmission, between applications, and between business fields (e.g. sharing data between accounting and human resources departments). With added orchestration capabilities, using an ESB allows one to set up and automate complex processes.

ESBs could be viewed as a new-generation EAI (Entreprise Applications Integration) platform, which brings an even higher network layer based on services. One major assets of services is that they let the ESB manage mediation of informations towards the application providing the relevant service.

Centralized ESB

In a traditional ESB, applications are distributed. To use a service, one has only to know how to call it, regardless of whatever application(s) will ultimately be used. The central server takes care of everything else. Thus, a highly intensive use of services could overload it. As it is the pivot of the whole infrastructure, breaking it would mean having all exchange capabilities down. WHich is an unthinkable risk for majority of entities.

To limit this risk and reduce processing load, a common strategy is to associate several servers: a cluster. For the price of added complexity, you gain better reliability and performances.

Centralized ESB diagram
Centralized architecture
Using clusters - diagram
Using a cluster architecture

Highly-distributed ESB

We saw earlier that a centralized ESB takes care of information distribution between applications. Highly-distributed ESB can go further, by distributing services management. Orchestration isn't wholly executed by the central server anymore, it's locally managed.

Highly-distributed architecture - diagram
Highly-distributed architecture

This configuration has a prerequisite: installing ESB on any and each machine. Doing this improves the global quaity of your infrastructure in many ways, that are detailed here.