Principios de diseño de la confiabilidad
La compilación de una aplicación confiable en la nube es diferente al desarrollo de aplicaciones tradicionales. Históricamente, es posible que haya adquirido niveles de hardware redundante de gama alta para reducir al mínimo la probabilidad de que se produzca un error en toda una plataforma de aplicaciones.
En la nube, reconocemos que se producen errores. En lugar de intentar evitar todos los errores, el objetivo es minimizar los efectos que pueden provocar los errores de un único componente.
Para usar los principios encontrados en el Marco de buena arquitectura de Azure para evaluar la carga de trabajo, consulte la reseña sobre el Marco de buena arquitectura de Microsoft Azure.
Los siguientes principios de diseño proporcionan:
- Contexto para preguntas
- El motivo por el que es importante un aspecto determinado
- Cómo se puede aplicar un aspecto a la confiabilidad
Estos principios de diseño críticos se usan como objetivos para evaluar la confiabilidad de las aplicaciones implementadas en Azure. Estos objetivos proporcionan un marco para las preguntas de evaluación de las aplicaciones.
Diseño de requisitos empresariales
La confiabilidad es un concepto subjetivo. Para que una aplicación sea adecuadamente confiable, debe reflejar los requisitos empresariales que la rodean.
Por ejemplo, una aplicación crítica con un 99.999%
Acuerdo de Nivel de Servicio (SLA) requiere un mayor nivel de confiabilidad que otra aplicación con un Acuerdo de Nivel de Servicio de 95%
.
Las implicaciones en los costos son inevitables cuando se introducen mayor confiabilidad y alta disponibilidad. Este equilibrio debe considerarse con cuidado.
Diseño para errores
Los errores son imposibles de evitar en un entorno multiinquilino y muy distribuido, como Azure.
Si se anticipa a los errores, desde componentes individuales a regiones enteras de Azure, puede desarrollar una solución de una manera resistente para aumentar la confiabilidad.
Observación del estado de la aplicación
Para poder mitigar los problemas que afectan a la confiabilidad de la aplicación, primero es preciso detectar estos problemas.
Al supervisar el funcionamiento de una aplicación en relación con un estado de mantenimiento, puede detectar y predecir problemas de confiabilidad.
La supervisión permite realizar acciones correctoras rápidas.
Potenciación de la automatización
Una de las principales causas del tiempo de inactividad de una aplicación es un error humano debido a la implementación de software que no se ha probado suficientemente o a una configuración incorrecta.
Para minimizar la posibilidad de que se produzcan errores humanos y la consecuencia de ellos, es fundamental procurar la automatización en todos los aspectos de una solución en la nube.
La automatización mejora:
- Confiabilidad
- Pruebas automatizadas
- Implementación
- Administración
Diseño para la recuperación automática
La recuperación automática describe la capacidad de un sistema para tratar los errores de manera automática. El control de errores se produce a través de protocolos de corrección predefinidos. Estos protocolos se conectan con los modos de error dentro de la solución.
Se trata de un concepto avanzado que requiere que el sistema tenga un alto nivel de madurez en la supervisión y automatización.
Desde el principio, la recuperación automática debe ser una aspiración para maximizar la confiabilidad.
Diseño de la escalabilidad horizontal
La escalabilidad horizontal es un concepto que se centra en la capacidad de un sistema para responder a la demanda a través del crecimiento horizontal. A medida que crece el tráfico, se agregan más unidades de recursos en paralelo, en lugar de aumentar el tamaño de los recursos existentes.
A través de las unidades de escalado, un sistema puede controlar los aumentos de tráfico (tanto esperados como inesperados), que son esenciales para la confiabilidad general.
Las unidades de escalado reducen aún más los efectos de un error de un único recurso.