Bulkhead
[Arquitectura
]
El patrón Bulkhead. La palabra bulkhead, tiene cómo origen la separación que hay en el fuselaje de los barcos para prevenir el hundimiento. Estas separaciones lo que previenen es que en caso de una brecha en fuselaje, se pueda cerrar la compuerta de la zona y prevenir que todo el barco se inunde y acabe hundiéndose.
Pues el patrón bulkhead, lo que previene es justamente esto mismo, aislando aquellos servicios que fallan o están caídos, previene que nuestra aplicación se caiga por completo.
Vale, hasta aquí, entiendo que tenemos claro cuál es el problema, pero, ¿cómo y con que recursos podemos implementar este patrón?
Pues pongámonos en situación. Imaginemos que tenemos un servicio web, que por detrás tiene conectados varios micro servicios:
Podría ocurrir que tuviéramos un problema en el servicio de pagos y entonces en el orden cronológico de la secuencia de lógica de negocio, comprar producto, pagar producto y generar factura producto, no pudiéramos generar la factura porque se ha producido un error transitorio en el servicio de pagos.
Aplicando el patrón bulkhead, podríamos aplicar una solución cómo esta:
La idea es redundar servicios y que al poner un application gateway, este, balancee la carga si un servicio está caído hacia un servicio del mismo tipo que este activo. De esta forma y volviendo a la analogía del barco, cerraríamos la compuerta de la sección que se está inundando, para que afectara a nuestro barco.
Hay que decir que esta es una forma de implementar el bulkhead, pero que hay varias formas y alternativas de solventar este mismo problema, siempre, dependiendo de nuestras necesidades, complejidad y restricciones.
Un saludo.