Resistencia nativa en la nube
Sugerencia
Este contenido es un extracto del libro electrónico “Architecting Cloud Native .NET Applications for Azure” (Diseño de la arquitectura de aplicaciones .NET nativas en la nube para Azure), disponible en Documentos de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.
La resistencia es la habilidad de un sistema para reaccionar frente a un error y seguir siendo funcional. No consiste en evitar errores, sino aceptarlos y crear las servicios nativos de nube para responder ante ellos. Quiere volver a un estado de funcionamiento completo lo antes posible.
Al contrario que las aplicaciones monolíticas tradicionales, donde todo se ejecuta en un único proceso, los sistemas nativos en la nube adoptan una arquitectura distribuida, tal como se muestra en la figura 6-1:
Figura 6-1. Entorno nativo de nube distribuido
En la ilustración anterior, cada microservicio y servicio de respaldo basado en la nube se ejecutan en un proceso independiente, a través de la infraestructura del servidor y comunicándose por medio de llamadas basadas en la red.
En este entorno, un servicio debe ser sensible a muchos problemas diferentes:
Latencia de red inesperada: el tiempo que tarda una solicitud de servicio en viajar al receptor y regresar.
Errores transitorios: errores de conectividad de red de corta duración.
Un bloqueo por una operación sincrónica de larga duración.
Un proceso de host que se ha bloqueado y que se está reiniciando o moviendo.
Un microservicio sobrecargado que no puede responder durante un período corto de tiempo.
Una operación de orquestador en marcha como una actualización gradual o mover un servicio de un nodo a otro.
Errores de hardware.
Las plataformas en la nube pueden detectar y reducir muchos de estos problemas en la infraestructura. Puede reiniciar, escalar horizontalmente e incluso redistribuir el servicio a otro nodo. Sin embargo, para aprovechar al máximo esta protección integrada, es necesario diseñar los servicios para que puedan reaccionar a ella y prosperar en este entorno dinámico.
En las secciones siguientes, se abordarán las técnicas defensivas que el servicio y los recursos administrados en la nube pueden aprovechar para minimizar el tiempo de inactividad e interrupción.