Most applications use data, information to work e.g. user information, financial data, weather data and so on. Any useful application consumes or generates data of any kind.
When the application manages the data by itself and store the data, let's say, in a database or in a local file, we can say that the application and the data are tightly coupled. But what happens if we want to change the file we are reading from? What if the database was moved to another server, or changed name?
In this case we would have to go to the application, find the code that manages the data, and change it. Possibly we would need to get the source code, do the change and recompile it again - hoping it would all still work as expected.
But what if we could decouple the application and the data from the application? The application would just ask for the data, to some other entity, and just do what the application has a responsibility to do, that is, do something with the data. The application wouldn't be in charge of managing the data, it would just ask for it.
That is what an Enterprise Service Bus does. It is in charge of the data, it provides the data requested, and if the source of the information changes it would be transparent to the application. The application wouldn't even know that the database source changed, it would just ask for the data as it always has.
That is the main advantage of an ESB: the application is decoupled from the data, so each has its own responsibility.
In the next article we’ll learn how we are using ESB at Inflection Point.