Definition
Una arquitectura de middleware centralizada que proporciona enrutamiento de mensajes, transformación, mediación de protocolos y orquestación para integración de servicios. Común en empresas legacy, a menudo siendo reemplazado por patrones más ligeros.
Example
El ESB recibe peticiones SOAP del mainframe, transforma XML a JSON, enruta al microservicio REST, agrega respuestas, y envía de vuelta al mainframe - todo basado en configuración sin programación.
Analogía
Como una estación de tren central por donde pasan todas las rutas - un hub conveniente pero crea un cuello de botella y un punto único de falla. El enfoque moderno es como vuelos directos punto a punto.
Code Example
// Traditional ESB Configuration (XML-based)
<route>
<from uri="jms:queue:orders"/>
<transform>
<xslt>classpath:transform-soap-to-json.xsl</xslt>
</transform>
<choice>
<when>
<xpath>/order/region = 'US'</xpath>
<to uri="http://us-service/api/orders"/>
</when>
<when>
<xpath>/order/region = 'EU'</xpath>
<to uri="http://eu-service/api/orders"/>
</when>
</choice>
<aggregate>
<correlationExpression>
<xpath>/order/id</xpath>
</correlationExpression>
</aggregate>
<to uri="jms:queue:responses"/>
</route>
// Modern Alternative: Lightweight API Gateway
class OrderRouter {
async route(order) {
// Simple code-based routing instead of XML config
const transformed = this.soapToJson(order);
const service = order.region === 'US'
? usService
: euService;
return await service.process(transformed);
}
}
// ESB drawbacks:
// - Single point of failure
// - Performance bottleneck
// - Complex configuration
// - Vendor lock-in
// - Difficult to scale horizontally