ESB (Bus de Servicio Empresarial)

Integración Empresarial Jan 6, 2025 JAVASCRIPT

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

Standards & RFCs