ESB to Decouple From the Legacy System
Context
The system (called the legacy system) shall be migrated to a microservice-based architecture. The legacy system is a service-oriented architecture (SOA) where service communicate with each other over an enterprise service bus (ESB).
Problem
- A reimplementation of the whole system is not feasible due to too high risks and a too long break in return of invest.
Solution
Use the ESB for communication between microservices as well. This uniform communication channel facilitates easy communication between the new microservices and the old SOA services. the legacy system as another microservice for the migration.
However, it requires discipline to move towards microservices and avoid falling back into the habits of SOA, like putting business logic into the ESB and, thus, introducing a central point of coupling.
This technique can facilitate the technique Gradually Replace the Legacy System. The following techniques might pose an alternative to this technique:
- Treat the Legacy System as Microservice if the API of the legacy system resembles the communication style between microservices.
- Proxy microservices if your legacy system does not reach the required availability needs (under load).
Maturity
More data is required (only 1 source).
Sources of Evidence
L25:
- Hybrid Pattern for Service Discovery
- combines service registry and API gateway, replaces API gateway with message bus
- clients interact with message bus, routes requests to requested microservice
- microservice communicate with each other over ESB (like in SOA)
- Advantage: ease of migration from existing SOA applications => reuse ESB for comm. betw. microservices to gradually replace legacy system
- Disadvantage: inherited from SOA
- => ESB could re-emerge in future evolutions of microservices