Compartir a través de


Principios de diseño de una carga de trabajo crítica

La metodología de diseño crítica se basa en cinco principios clave de diseño que sirven como brújula para las decisiones de diseño posteriores en las áreas de diseño críticas. Le recomendamos que se familiarice con estos principios para comprender mejor su impacto y las desventajas asociadas a la no adhesión.

Importante

Este artículo forma parte de la serie de cargas de trabajo críticas de Azure Well-Architected . Si no está familiarizado con esta serie, se recomienda empezar con lo que es una carga de trabajo crítica?

Principios de diseño críticos:

Estos principios de diseño críticos resuenan y amplían los pilares de calidad del marco de trabajo de Azure Well-Architected: confiabilidad, seguridad, optimización de costos, excelencia operativa y eficiencia del rendimiento.

Confiabilidad

Confiabilidad máxima : búsqueda fundamental de la solución más confiable, lo que garantiza que las ventajas y desventajas se comprendan correctamente.

Principio de diseño Consideraciones
Diseño activo/activo Para maximizar la disponibilidad y lograr la tolerancia a errores regionales, los componentes de la solución deben distribuirse entre varias regiones de Availability Zones y Azure mediante un modelo de implementación activo o activo siempre que sea posible.
Reducción del radio de explosión y aislamiento de errores El error es imposible de evitar en un entorno de nube multiinquilino muy distribuido, como Azure. Al anticipar errores y el impacto correlacionado, desde componentes individuales a regiones enteras de Azure, se puede diseñar y desarrollar una solución de forma resistente.
Observación del estado de la aplicación Antes de que se puedan mitigar los problemas que afectan a la confiabilidad de la aplicación, primero deben detectarse y comprenderse. Al supervisar el funcionamiento de una aplicación en relación con un estado correcto conocido, es posible detectar o incluso predecir problemas de confiabilidad, lo que permite realizar acciones correctivas rápidas.
Potenciación de la automatización Una de las principales causas del tiempo de inactividad de la aplicación es un error humano, tanto si se debe a la implementación de software probado insuficientemente como a una configuración incorrecta. Para minimizar la posibilidad y el impacto de los errores humanos, es fundamental esforzarse por la automatización en todos los aspectos de una solución en la nube para mejorar la confiabilidad; pruebas, implementaciones y administración automatizadas.
Diseño para la recuperación automática La recuperación automática describe la capacidad de un sistema para tratar los errores automáticamente a través de protocolos de corrección predefinidos conectados a modos de error dentro de la solución. Es un concepto avanzado que requiere un alto nivel de madurez del sistema con supervisión y automatización, pero debe ser una aspiración del inicio para maximizar la confiabilidad.
Prevención de complejidad Evite la complejidad innecesaria al diseñar la solución y todos los procesos operativos para impulsar la confiabilidad y la eficiencia de la administración, lo que minimiza la probabilidad de errores.

Eficiencia del rendimiento

Rendimiento sostenible y escalabilidad : diseñe para la escalabilidad en toda la solución de un extremo a otro sin cuellos de botella de rendimiento.

Principio de diseño Consideraciones
Diseño de la escalabilidad horizontal El escalado horizontal es un concepto que se centra en la capacidad de un sistema para responder a la demanda a través del crecimiento horizontal. Esto significa que 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. Una capacidad de sistemas para controlar los aumentos esperados e inesperados del tráfico a través de unidades de escalado es esencial para el rendimiento general y la confiabilidad al reducir aún más el impacto de un único error de recursos.
Automatización para hiperescala Las operaciones de escalado en toda la solución deben automatizarse completamente para minimizar el rendimiento y el impacto en la disponibilidad de los aumentos inesperados o esperados en el tráfico, lo que garantiza el tiempo necesario para realizar operaciones de escalado se entiende y se alinea con un modelo para el estado de la aplicación.
Validación y pruebas continuas Las pruebas automatizadas deben realizarse dentro de los procesos de CI/CD para impulsar la validación continua para cada cambio de aplicación. Las pruebas de carga en una línea base de rendimiento con experimentación de caos sincronizada deben incluirse para validar los umbrales, los destinos y las suposiciones existentes, así como ayudar a identificar rápidamente los riesgos para la resistencia y la disponibilidad. Estas pruebas se deben llevar a cabo en entornos de ensayo y pruebas, pero también opcionalmente en entornos de desarrollo. También puede ser beneficioso ejecutar un subconjunto de pruebas en el entorno de producción, especialmente junto con un modelo de implementación azul/verde para validar nuevos stamps de implementación antes de recibir tráfico de producción.
Reducción de la sobrecarga con los servicios de proceso administrados El uso de servicios de proceso administrados y arquitecturas en contenedores reduce significativamente la sobrecarga administrativa y operativa en curso de diseño, funcionamiento y escalado de aplicaciones cambiando la implementación y el mantenimiento de la infraestructura al proveedor de servicios administrados.
Rendimiento de línea base e identificación de cuellos de botella Las pruebas de rendimiento con telemetría detallada de todos los componentes del sistema permiten la identificación de cuellos de botella dentro del sistema, incluidos los componentes que deben escalarse en relación con otros componentes, y esta información debe incorporarse en un modelo de capacidad.
Capacidad del modelo Un modelo de capacidad permite planear los niveles de escala de recursos para un perfil de carga determinado y, además, expone cómo funcionan los componentes del sistema en relación entre sí, lo que permite el planeamiento de la asignación de capacidad en todo el sistema.

Excelencia operativa

Operaciones por diseño : diseñadas para durar con una sólida y asertiva administración operativa.

Principio de diseño Consideraciones
Componentes de acoplamiento flexible El acoplamiento flexible permite pruebas, implementaciones y actualizaciones independientes y a petición de los componentes de la aplicación, a la vez que minimiza las dependencias entre equipos para soporte técnico, servicios, recursos o aprobaciones.
Automatización de procesos de compilación y versión Los procesos de compilación y versión totalmente automatizados reducen la fricción y aumentan la velocidad de implementación de actualizaciones, lo que aporta repetibilidad y coherencia en todos los entornos. La automatización reduce el bucle de comentarios de los desarrolladores que insertan cambios para obtener información sobre la calidad del código, la cobertura de pruebas, la resistencia, la seguridad y el rendimiento, lo que aumenta la productividad del desarrollador.
Agilidad del desarrollador La automatización continua de integración e implementación continua (CI/CD) permite el uso de entornos de desarrollo de corta duración con ciclos de vida vinculados a la de una rama de características asociada, que promueve la agilidad del desarrollador y impulsa la validación lo antes posible dentro del ciclo de ingeniería para minimizar el costo de ingeniería de los errores.
Cuantificar el estado operativo La instrumentación de diagnóstico completa de todos los componentes y recursos permite observar continuamente los registros, las métricas y los seguimientos, pero también facilita el modelado de estado para cuantificar el estado de la aplicación en el contexto de los requisitos de disponibilidad y rendimiento.
Ensayo de errores de recuperación y prácticas El planeamiento y la práctica de la continuidad empresarial (BC) y la recuperación ante desastres (DR) son esenciales y se deben llevar a cabo con frecuencia, ya que los aprendizajes pueden mejorar iterativamente los planes y procedimientos para maximizar la resistencia en caso de tiempo de inactividad no planeado.
Adopción de una mejora operativa continua Priorice la mejora rutinaria del sistema y la experiencia del usuario mediante un modelo de mantenimiento para comprender y medir la eficacia operativa con mecanismos de comentarios para permitir que los equipos de aplicaciones comprendan y solucione las brechas de forma iterativa.

Seguridad

Siempre seguro : diseñe para la seguridad de un extremo a otro para mantener la estabilidad de la aplicación y garantizar la disponibilidad.

Principio de diseño Consideraciones
Supervisar la seguridad de toda la solución y planear respuestas a incidentes Correlacionar eventos de seguridad y auditoría para modelar el estado de la aplicación e identificar amenazas activas. Establezca procedimientos automatizados y manuales para responder a incidentes mediante herramientas de administración de eventos e información de seguridad (SIEM) para el seguimiento.
Modelado y realización de pruebas frente a posibles amenazas Asegúrese de que la protección de recursos adecuada y establezca procedimientos para identificar y mitigar las amenazas conocidas, mediante pruebas de penetración para comprobar la mitigación de amenazas, así como el análisis estático de código y el análisis de código.
Identificación y protección de puntos de conexión Supervise y proteja la integridad de red de los puntos de conexión internos y externos mediante funcionalidades de seguridad y dispositivos, como firewalls o firewalls de aplicaciones web. Use enfoques estándar del sector para protegerse frente a vectores de ataque comunes, como ataques de denegación de servicio distribuido (DDoS), como SlowLoris.
Protección frente a vulnerabilidades de nivel de código Identifique y mitigue las vulnerabilidades de nivel de código, como el scripting entre sitios o la inyección de código SQL, e incorpore la aplicación de revisiones de seguridad en los ciclos de vida operativos para todas las partes del código base, incluidas las dependencias.
Automatización y uso de privilegios mínimos Impulsar la automatización para minimizar la necesidad de interacción humana e implementar privilegios mínimos en la aplicación y el plano de control para protegerse frente a escenarios de actores malintencionados y de filtración de datos.
Clasificación y cifrado de datos Clasifique los datos según el riesgo y aplique el cifrado estándar del sector en reposo y en tránsito, lo que garantiza que las claves y los certificados se almacenen de forma segura y administrada correctamente.

Optimización de costos

Existen ventajas obvias de costos asociadas a la introducción de una mayor confiabilidad, que se deben tener en cuenta cuidadosamente en el contexto de los requisitos de carga de trabajo.

Maximizar la confiabilidad puede afectar al costo financiero general de la solución. Por ejemplo, la duplicación de recursos y la distribución de recursos entre regiones para lograr una alta disponibilidad tiene implicaciones claras en los costos. Para evitar excesos de costos, no haga sobreaprovisionar ni sobreaprovisionar más allá de los requisitos empresariales pertinentes.

Además, se ha agregado el costo asociado a la inversión en ingeniería en conceptos fundamentales de confiabilidad, como adoptar la infraestructura como código, automatización de la implementación e ingeniería de caos. Esto conlleva un costo en términos de tiempo y esfuerzo, lo que podría invertirse en otro lugar para ofrecer nuevas características y funcionalidades de la aplicación.

Diseño nativo en la nube

  • Servicios administrados nativos de Azure : se priorizan los servicios administrados nativos de Azure debido a su menor sobrecarga administrativa y operativa, así como a una estrecha integración con una configuración e instrumentación coherentes en toda la pila de aplicaciones.

  • Alineación de la hoja de ruta : incorpore las próximas funcionalidades de servicio de Azure nuevas y mejoradas a medida que estén disponibles con carácter general (GA) para mantenerse cerca del perímetro inicial de Azure.

  • Adopción de funcionalidades de vista previa y mitigación de brechas conocidas : aunque los servicios disponibles con carácter general (GA) tienen prioridad para la compatibilidad, las versiones preliminares del servicio de Azure se exploran activamente para una rápida incorporación, lo que proporciona comentarios técnicos y accionables a los grupos de productos de Azure para abordar las brechas.

  • Alineación de la zona de aterrizaje de Azure : se puede implementar dentro de una zona de aterrizaje de Azure y se alinea con la metodología de diseño de la zona de aterrizaje de Azure, pero también totalmente funcional e implementable en un entorno sin sistema operativo fuera de una zona de aterrizaje.

Paso siguiente

Revise los problemas transversales asociados a las cargas de trabajo críticas.