¿Cuáles son las características de resistencia más importantes de un marco de microservicios?

Los microservicios están destinados a ser distribuidos y ampliados a través de diferentes redes, regiones y centros de datos. Los sistemas distribuidos son inherentemente susceptibles a fallas. Si está diseñando un marco de microservicios, debe abordar este requisito. No es una característica que puede agregar más tarde. Es un requisito. Estos son algunos de los aspectos de resiliencia más importantes de un marco de microservicios o una plataforma de microservicios.

  • Capacidad para identificar fallas y actuar de inmediato (Fail-Fast)
  • Capacidad para volver a intentarlo en caso de fallas.
  • Capacidad para ignorar algunas fallas y continuar sin agotar el sistema (Fail-Silent)
  • Un servicio o aplicación fallida no debería desactivar todo el sistema. Lo que significa que el marco debe evitar la cascada de fallas (Bulkhead)
  • Capacidad para aislar fallas y permitir que los sistemas con fallas se recuperen en lugar de sobrecargar los sistemas durante las fallas, lo que hará que los sistemas nunca se recuperen (disyuntor)

Hay muchos otros aspectos importantes de resiliencia cuando se trata de construir una arquitectura de microservicios. He mencionado las 5 cosas importantes a tener en cuenta al construir una plataforma de este tipo o al seleccionar un marco.

Netflix Hystrix es un gran marco para construir sus microservicios de manera resistente.

Diría que los microservicios son menos resistentes que los servidores monolíticos para la mayoría de las pequeñas y medianas empresas (por ejemplo, la mayoría de los casos de uso), y sus ventajas teóricas a menudo fallan en la práctica. En los proyectos web del mundo real, los microservicios generalmente terminan teniendo dependencias duras de otros microservicios, mientras que un servidor monolítico no. Entonces, cuando un microservicio se comporta mal, a menudo derriba toda la red de microservicios dependientes (también conocido como microservice-hell ). La planificación de la capacidad para los microservicios también es difícil, porque no es fácil determinar exactamente qué microservicio está causando cuellos de botella en el rendimiento (por lo que podría terminar jugando de manera segura y aumentar uniformemente las capacidades de microservicio en general, lo que no es mejor que hacerlo con monolítico servidores).

Crear un proyecto web con un servidor monolítico es más simple que hacerlo con microservicios y tiene menos riesgos técnicos. Cuando un servidor monolítico alcanza su límite de rendimiento, simplemente clone el servidor para duplicar previsiblemente la capacidad (o cuádruple, octuple, etc.). si resulta que tiene un cuello de botella de rendimiento específico como la carga de video, simplemente clone un grupo de servidores monolíticos dedicados a la carga de video (en lugar de reinventar un microservicio casi dependiente para ello).

en resumen, existen importantes ventajas de devop en el mundo real para escalar horizontalmente un grupo de servidores monolíticos homogéneos (donde cada uno se puede depurar de forma independiente si se comporta mal) frente a “orquestar” una mezcla de microservicios heterogéneos cuasi-dependientes (donde cada uno generalmente no se puede depurar de forma independiente).