Capítulo 12. Aumentar la resiliencia en
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Los sistemas distribuidos implican una latencia adicional y una mayor probabilidad de fallo a medida que las solicitudes atraviesan la red. Si te equivocas con los tiempos de espera y los reintentos, un servicio lento puede ser peor que uno roto, ya que los hilos se atascan esperando a que responda. Una vez que el servicio se recupera, los retos aún no han terminado, porque una manada atronadora de peticiones puede volver a ponerlo de rodillas.
Necesitamos construir sistemas basados en microservicios de forma diferente. Los servicios deben escribirse para manejar los problemas de las cosas de las que dependen, incluido el cierre de los hosts en los que se ejecutan.
Los sistemas deben ser resistentes a los fallos, con redundancia incorporada. Los reintentos, la recuperación y la remediación deben ser automatizados y elegantes siempre que sea posible. La promesa de los microservicios de un pequeño radio de explosión en caso de fallo sólo se aplica si te has asegurado de que el resto del sistema puede funcionar cuando un servicio individual tiene problemas.
Más adelante en el capítulo, hablaré de cómo construir servicios resilientes, y después sistemas resilientes. Pero antes, hablemos de lo que significa la resiliencia y, sobre todo, de los retos que plantea la construcción de un sistema distribuido resiliente.