La eficiencia del rendimiento consiste en mantener la experiencia del usuario incluso cuando hay un aumento de la carga mediante la administración de la capacidad. La estrategia incluye el escalado de recursos, la identificación y la optimización de posibles cuellos de botella y la optimización del rendimiento máximo.
Este modelo de madurez le guía a través de un recorrido estratégico de optimización del rendimiento mediante el escalado de recursos, la identificación y optimización de posibles cuellos de botella y la optimización del rendimiento máximo.
Para empezar, seleccione los componentes adecuados y establezca los objetivos de rendimiento y, a continuación, progreso para medir y supervisar el comportamiento de la carga de trabajo. A medida que madura, incorporará comentarios reales de los usuarios para refinar el enfoque, aprovechar la información de producción para las mejoras dirigidas y, en última instancia, logrará una optimización avanzada a través de la experimentación y la automatización. Cada fase se basa en la anterior, transformando la estrategia de rendimiento de la solución de problemas reactiva a la ingeniería proactiva de eficiencia.
El modelo se estructura en cinco niveles de madurez distintos, cada uno con un objetivo principal y un conjunto de estrategias principales. Use las vistas con pestañas siguientes para explorar cada nivel. Asegúrese de revisar también los inconvenientes resaltados y los riesgos asociados a medida que avanza.
Establecer expectativas claras de rendimiento y seleccionar componentes de tamaño adecuado que se adapten a sus requisitos.
El nivel 1 del modelo de madurez se centra en recopilar expectativas de rendimiento y elegir servicios en la nube que le ayuden a satisfacer esas expectativas. En este nivel, investigará esos recursos y componentes para encontrar la mejor opción. Dé prioridad a los servicios que proporcionan solo las funcionalidades de rendimiento necesarias. Este enfoque ayuda a controlar los costos y mantiene la velocidad de desarrollo.
Estrategias clave
Trabaje con las partes interesadas para comprender las expectativas generales del rendimiento de la carga de trabajo. Estas expectativas pueden incluir objetivos para tiempos de carga de páginas para aplicaciones web o tiempos de respuesta para sistemas interactivos. En esta fase del desarrollo de cargas de trabajo, trate estos objetivos como directrices en lugar de requisitos estrictos, ya que el foco no está centrado en recopilar métricas de rendimiento. Después de recopilar las expectativas de la carga de trabajo, empiece a investigar los tipos de recursos que podrían adaptarse a la carga de trabajo.
✓ Elegir los recursos de red adecuados
Evalúe las necesidades de red para determinar los servicios y configuraciones adecuados para la carga de trabajo. Considere el tráfico de red, el ancho de banda, la latencia y el rendimiento de la red para asegurarse de que esta admite la carga de trabajo de forma eficaz. Use redes virtuales privadas y redes troncales para reducir la latencia.
Asegúrese incluso de la distribución del tráfico de red para evitar la sobrecarga del servidor y reducir los tiempos de respuesta. Evalúe los diferentes servicios de equilibrio de carga que ofrece el proveedor de nube. Considere el tipo de tráfico, el enrutamiento global o regional, los objetivos de nivel de servicio y características específicas, como la aceleración de sitios y el equilibrio de carga de baja latencia.
Riesgo: Dedique tiempo a investigar y comprender completamente las distintas opciones para las redes fundamentales. Los cambios posteriores en esta área pueden requerir un rediseño completo y una reimplementación.
✓ Elegir los recursos de computación adecuados
Evalúe las necesidades de proceso de la carga de trabajo, incluidos el tipo de instancia, la escalabilidad y los niveles de servicio. Considere la posibilidad de incluir contenedores para lograr mejoras de rendimiento a través del aislamiento, la eficiencia de los recursos, los tiempos de inicio rápidos y la portabilidad.
Elija un servicio de proceso que pueda satisfacer sus necesidades, a la vez que le permite escalar fácilmente a medida que evoluciona la carga de trabajo. La creación de la carga de trabajo es un proceso iterativo. Puede empezar de a poco mediante el uso de SKU menos potentes y menos instancias. Actualice estos componentes más adelante en el ciclo de vida de la carga de trabajo.
Contrapartida: compare sus necesidades inmediatas con respecto a su presupuesto. Busque oportunidades para apagar o desasignar recursos de proceso cuando no estén en uso.
✓ Elegir los servicios de almacén de datos adecuados
Determine las necesidades de la carga de trabajo para almacenar, recuperar y administrar datos. Considere características como:
Tipos de datos: ¿Qué tipos de datos espera que la carga de trabajo ingiere, procesa o almacena?
Volumen: ¿Cuántos datos espera ingerir, procesar o almacenar?
Rendimiento de la transacción: ¿Cuáles son los requisitos de rendimiento para acceder a distintos tipos de datos?
Consistencia: ¿Cuáles son sus objetivos para la consistencia de los datos entre tipos de datos?
Durabilidad: ¿Cuáles son los objetivos de durabilidad de los datos en los tipos de datos?
Patrones de acceso: ¿Qué tipos de patrones de acceso necesita admitir la carga de trabajo? Por ejemplo, para un componente determinado, es posible que tenga que realizar varias escrituras, pero pocas lecturas. Para otro componente, es posible que tenga que hacer lo contrario.
En función de las respuestas a estas preguntas, elija el mejor servicio de datos para cada uno de los casos de uso de la carga de trabajo.
Debido a la amplia variedad de opciones para los servicios de datos en entornos en la nube, puede adaptar el diseño para usar diferentes servicios para que coincidan mejor con la funcionalidad de cada componente de la carga de trabajo. Este enfoque le ayuda a optimizar el rendimiento de cada componente.
Contrapartida: evite el sobrediseño de componentes de datos eligiendo diferentes servicios de datos para componentes que puede consolidar en un almacén de datos único. Lograr un equilibrio entre el rendimiento y el costo y la complejidad.
Implementar una supervisión completa del rendimiento para obtener visibilidad sobre el comportamiento de la carga de trabajo e identificar las oportunidades de optimización.
El nivel 2 del pilar de eficacia del rendimiento se centra en el uso de información sobre la carga de trabajo para informar las optimizaciones de rendimiento. El primer paso es identificar flujos de carga de trabajo críticos desde una perspectiva de rendimiento. A continuación, divida la carga de trabajo en sus componentes y establezca objetivos y métricas medibles que puede capturar y analizar para futuras optimizaciones. Por último, debe investigar los patrones de diseño que pueden ayudarle a mejorar la eficacia del rendimiento y realizar un ejercicio de planeamiento de capacidad inicial. Estas actividades le ayudan a crear un plan para el futuro inmediato de la carga de trabajo. Este enfoque garantiza que el rendimiento no se vea afectado a medida que evoluciona la carga de trabajo.
Estrategias clave
La clasificación y categorización de los flujos de carga de trabajo es una estrategia importante en cada uno de los pilares de Well-Architected Framework. El análisis de flujos desde la perspectiva de cada pilar le ayuda a identificar áreas que deben optimizarse. Puede comparar esas optimizaciones para ayudarle a determinar dónde invertir. Por ejemplo, en algunos escenarios, los problemas de seguridad de un flujo pueden superar los problemas de rendimiento. Después de clasificar y clasificar los flujos, céntrese en los flujos que identifique como críticos para iniciar el planeamiento de optimización. Los criterios específicos del rendimiento que pueden ayudarle a identificar los flujos críticos incluyen:
Frecuencia: Número de veces que se realiza el flujo, como buscar un producto.
Criticidad: Grado de importancia que el flujo tiene para el éxito general de la aplicación, como una búsqueda de perfil de usuario.
Riesgo: Nivel de riesgo que el flujo tiene sobre el rendimiento general, como generar un informe complejo.
Uso intensivo de datos: Cantidad de presión que el flujo coloca en la capa de datos.
Uso intensivo de la arquitectura: La medida en que el flujo interactúa con los componentes en toda la carga de trabajo.
✓ Establecer métricas clave para los recursos y componentes de la carga de trabajo que le ayudan a cumplir sus objetivos
Establezca objetivos de rendimiento para los componentes y recursos de la carga de trabajo en función de la investigación de mercado, el análisis competitivo y las encuestas. Céntrese en métricas clave, como el tiempo de respuesta, el rendimiento y la latencia. Establezca destinos para distintos componentes, flujos de usuario, flujos de trabajo, flujos de datos, dependencias externas y rendimiento general de la carga de trabajo.
Establezca objetivos realistas y medibles para cada métrica, a la vez que tenga en cuenta las expectativas del cliente. Use percentiles como P99, P95 y P50 para obtener una perspectiva completa. Realice pruebas para establecer el rendimiento base, pero no enfatice en exceso la optimización.
Registre todos los objetivos de rendimiento en una ubicación centralizada accesible para los equipos de desarrollo y operaciones. Utilice paneles e informes para que los objetivos sean visibles y ejecutables.
El planeamiento de la capacidad es un proceso iterativo que se debe llevar a cabo periódicamente durante el ciclo de vida de la carga de trabajo. En esta fase, es posible que aún no esté familiarizado con todas las tecnologías en uso o que todavía esté evaluando diferentes opciones. Esta incertidumbre puede limitar la capacidad de planear de forma completa las necesidades futuras. Para este ejercicio de planeamiento de capacidad inicial, el objetivo es cambiar de la administración de capacidad reactiva, lo que incluye agregar recursos para satisfacer la demanda inmediata. En su lugar, el enfoque se centra en la planeación proactiva, donde prevé la capacidad necesaria para un período definido. Para lograr un planeamiento eficaz de la capacidad, recopile y analice los datos sobre el uso de recursos, incluidos los patrones históricos de las cargas de trabajo existentes. Use el análisis estadístico, el análisis de tendencias y el modelado predictivo para predecir las necesidades futuras. Asegúrese de que estas previsiones se alinean con los objetivos de la carga de trabajo.
Riesgo: En un entorno tradicional basado en centros de datos, el aprovisionamiento excesivo es un enfoque común para el planeamiento de la capacidad. En un entorno de nube, el exceso de aprovisionamiento puede ser una pérdida de dinero. Considere detenidamente sus expectativas empresariales para desarrollar una escala de tiempo para agregar capacidad de una manera que satisfaga sus necesidades de rendimiento sin afectar negativamente al presupuesto.
Hay muchos patrones de diseño de aplicaciones comunes que pueden ayudarle a optimizar la carga de trabajo para el rendimiento. Puede lograr mejoras de rendimiento agregando una memoria caché o desarrollando una estrategia de particionamiento. Para obtener una lista completa de patrones que pueden ayudarle a mejorar la carga de trabajo, consulte Patrones de diseño en la nube.
Dilema: Algunos patrones de diseño pueden agregar un grado de complejidad a la carga de trabajo. Compare la carga de administración adicional con respecto a las mejoras de eficiencia para determinar si un patrón específico merece la pena implementar.
La optimización del código hace que toda la carga de trabajo sea más eficaz. Las tareas de aplicación se ejecutan más rápido y usan menos recursos de proceso, por lo que puede maximizar el rendimiento de la infraestructura. Tenga en cuenta los siguientes enfoques de optimización de código:
Instrumente el código. La instrumentación del código le ayuda a identificar problemas en el rendimiento del código mediante la captura de telemetría durante el tiempo de ejecución. Este proceso le ayuda a identificar y resolver problemas al principio del ciclo de desarrollo.
Identificar rutas críticas. Instrumentar su código le ayuda a identificar rutas críticas. Las rutas de acceso activas son secciones esenciales o de uso alto de un programa que requieren un alto rendimiento y una baja latencia.
Optimización de la lógica de código. Busque formas de simplificar la lógica de código para mejorar la eficacia. Quite las llamadas de función innecesarias y las operaciones de procesamiento de datos. Minimice las operaciones de registro, las solicitudes de red y las asignaciones de memoria. Busque oportunidades para usar SDK y bibliotecas más eficaces.
Use simultaneidad y paralelismo. El uso de simultaneidad y paralelismo puede mejorar la eficacia de la aplicación mediante la administración eficaz de varias tareas. La simultaneidad controla varias tareas cambiando entre ellas, mientras que el paralelismo procesa varias tareas simultáneamente.
Recopile datos de rendimiento de aplicaciones como rendimiento, latencia y tiempos de finalización para identificar cuellos de botella y mejorar la experiencia del usuario. Use el seguimiento distribuido y el registro estructurado para facilitar el análisis. Recopile métricas y registros para todos los recursos. Use herramientas como Azure Monitor Insights para la supervisión del rendimiento. Recopile datos de base de datos y almacenamiento y recopile métricas de rendimiento para máquinas virtuales. Almacene todos los datos recopilados en un solo lugar para facilitar el acceso y el análisis.
Riesgo: Asegúrese de configurar las directivas de retención y rotación de registros porque la cantidad de datos que recopila y almacena puede aumentar rápidamente y los costos pueden aumentar inesperadamente.
Aproveche la información real del usuario y los comentarios del sistema para impulsar mejoras de rendimiento dirigidas que mejoran la experiencia del usuario.
El nivel 3 del pilar eficiencia del rendimiento se centra en la incorporación de señales internas y externas para refinar los objetivos de rendimiento, el diseño y las configuraciones de cargas de trabajo y las prácticas operativas relacionadas. En niveles de madurez anteriores, es posible que haya establecido objetivos de rendimiento y configuraciones en función de las necesidades de velocidad de desarrollo y las pruebas internas. A medida que evoluciona la carga de trabajo, la incorporación de comentarios de usuarios y partes interesadas internos y externos ayuda a garantizar objetivos de rendimiento realistas para la carga de trabajo de producción. Este enfoque le permite cumplir esos objetivos sin poner en peligro los requisitos de otros pilares.
Estrategias clave
Pasar a producción significa que debe estar preparado para responder inmediatamente a los problemas de rendimiento. La supervisión sólida del rendimiento y las alertas útiles y accionables ayudan a garantizar que los equipos adecuados reciban notificaciones de problemas y puedan comenzar su investigación y resolución de problemas rápidamente. Las estrategias siguientes pueden ayudarle a definir las actividades de respuesta a problemas de rendimiento:
Configure las alertas de rendimiento en la plataforma de supervisión.
Ajuste las alertas para proporcionar advertencias accionables cuando un componente está en riesgo de un problema de rendimiento. Este enfoque puede incluir establecer un umbral en un valor estático o basarlo en los cambios de tendencia de una métrica específica. Determine el valor del desencadenador a través de pruebas continuas para evitar falsos positivos.
Analice los registros y las métricas de rendimiento para identificar las causas subyacentes de los problemas.
Mantenga informado a las partes interesadas sobre el estado y el progreso de la resolución de los problemas de rendimiento.
Establezca un marco para priorizar los problemas de rendimiento en función de su impacto.
Documente todos los pasos, procesos y procedimientos recomendados para responder a problemas de rendimiento.
Como parte de la estrategia de supervisión del rendimiento, asegúrese de supervisar específicamente el rendimiento de los flujos. Comprenda el efecto de cada flujo en el rendimiento de la carga de trabajo. Para los flujos, identifique los posibles problemas a través de la información de comportamiento del usuario. Realice un seguimiento de los tiempos de respuesta, los errores y otras métricas para optimizar los flujos críticos. Analice los registros para realizar un seguimiento del rendimiento del flujo e identifique problemas.
Revise periódicamente los comentarios internos y externos sobre el rendimiento para evaluar si los objetivos se alinean con las expectativas. Considere la posibilidad de usar el sondeo de satisfacción del cliente, los sistemas de comentarios y las pruebas de usuario dirigidas para recopilar comentarios útiles.
Cuando sea práctico para la carga de trabajo, considere la posibilidad de usar un enfoque de supervisión de usuarios reales (RUM). Este enfoque puede ayudarle a determinar si la experiencia del usuario cumple sus expectativas de rendimiento.
Application Insights y Azure Traffic Manager proporcionan funcionalidad para capturar datos RUM para sitios web.
Realice un seguimiento del rendimiento de la aplicación mediante métricas que se alinean con sus objetivos y objetivos. Compare estas métricas con los comentarios de los usuarios y las partes interesadas empresariales para asegurarse de recopilar los datos correctos. Mantenga las métricas relacionadas con la empresa independientes de los datos de rendimiento para facilitar el análisis, incluso si existe alguna superposición. Este enfoque hace que los datos sean más claros y ayude a los equipos a tomar decisiones fundamentadas.
El análisis de tendencias le ayuda a planear los requisitos de capacidad. Actualice las predicciones para que coincidan con los objetivos de carga de trabajo y la demanda del usuario para que siempre tenga suficientes recursos. Revise periódicamente los contratos de nivel de servicio del proveedor de nube para asegurarse de que puede agregar recursos según sea necesario sin tener que entrar en los límites de servicio.
A medida que evoluciona su planeamiento de capacidad, trabaje estrechamente con los responsables de la toma de decisiones empresariales para mantenerse alineado con los objetivos empresariales.
Contrapartida: equilibre el planeamiento de la capacidad de rendimiento con los requisitos de confiabilidad y presupuesto. Trabaje con las partes interesadas para encontrar compromisos prácticos cuando los requisitos entren en conflicto.
✓ Optimizar la estrategia de escalado
Utilice técnicas de escalado avanzadas para optimizar el uso de los recursos. Ajuste los umbrales usados para escalar las operaciones en función de los comentarios internos y externos. Compile la automatización para realizar operaciones de escalado para los componentes que carecen de la funcionalidad de escalado automático nativa. Use el escalado programado para los componentes que se usan o están inactivos ligeramente durante los tiempos predecibles a lo largo del día, la semana o el mes. Evalúe continuamente las configuraciones de escalado y realice refinamientos para satisfacer mejor las demandas fluctuantes de una carga de trabajo.
✓ Optimizar la administración de datos
Las ineficiencias en la administración de datos pueden causar problemas de rendimiento en toda la carga de trabajo. Use las estrategias siguientes para optimizar el patrimonio de datos:
Divida grandes conjuntos de datos o cargas de trabajo en partes más pequeñas, denominadas particiones, para almacenamiento o procesamiento independientes. Este enfoque permite el procesamiento paralelo, reduce la contención y mejora el uso de recursos y los tiempos de procesamiento. También distribuye datos entre varios dispositivos de almacenamiento, lo que reduce la carga individual y mejora el rendimiento general. Alinee los tipos de creación de particiones con casos de uso específicos. La creación de particiones puede ser horizontal, vertical o funcional, en función de las necesidades del sistema. Para obtener más información sobre los patrones de diseño que usan la creación de particiones, consulte Patrones de diseño de eficiencia del rendimiento.
Optimice las consultas mediante características como información de rendimiento de consultas para Azure SQL Database.
Asegúrese de que el modelo de datos es adecuado para la carga de trabajo teniendo en cuenta factores como la normalización, la indexación y la creación de particiones.
Alinee la infraestructura de almacenamiento con los requisitos de carga de trabajo mediante la optimización de la configuración, como el tamaño del búfer y el almacenamiento en caché.
Diseñe pruebas de rendimiento que pueden ayudarle a comprender cómo se realiza la carga de trabajo en diferentes escenarios de producción. Utilice una variedad de pruebas, como carga, esfuerzo, remojo, pico y pruebas de compatibilidad basadas en criterios y métricas. Mida cómo afecta cada prueba al rendimiento de la carga de trabajo. Las métricas deben incluir aspectos de rendimiento, como el tiempo de respuesta, el rendimiento y el uso de la CPU y la memoria. Defina los criterios de aceptación que se alineen con los objetivos. Para obtener más información, consulte Recomendaciones para las pruebas de rendimiento.
Las pruebas de rendimiento deben realizarse en un entorno dedicado como parte de la estrategia general de pruebas. Este enfoque incluye pruebas de confiabilidad y seguridad.
Revise los resultados de las pruebas para identificar cuellos de botella e ineficiencias. Compare los resultados con los objetivos, los criterios predefinidos o las ejecuciones anteriores.
Contrapartida: los entornos de prueba pueden ser impulsores de costos de gran relevancia. Diseñe entornos de prueba solo con los recursos necesarios para emular con precisión el escenario específico que se está probando. Para minimizar los costos de uso, asegúrese de que los recursos se apagan o eliminan después de las pruebas.
Riesgo: Si necesita usar datos de producción, asegúrese de que se quiten los datos confidenciales antes de copiarlos en entornos de prueba. Use datos sintéticos cuando sea práctico.
Otra función de prueba crítica es crear la línea base de rendimiento. Las líneas base proporcionan puntos de referencia para comparar el rendimiento con el tiempo. Identifique las métricas de rendimiento y úselas como métricas de línea base. Evalúe el rendimiento futuro con respecto a estas líneas base para identificar mejoras o degradaciones. Revise y actualice periódicamente las líneas base para capturar elementos y características de diseño actualizados. Las líneas base obsoletas pueden dar lugar a objetivos poco realistas e irrecuperables a medida que la carga de trabajo madura y se agregan nuevas características.
Fomentar un entorno de mejora continua en el que los equipos aprenden de producción y escuchan comentarios internos y externos. Equipe a los equipos de cargas de trabajo con las aptitudes y la mentalidad necesarias para optimizar el rendimiento y controlar las fluctuaciones de la demanda. Asigne tiempo para supervisar y solucionar problemas de rendimiento. Establezca expectativas claras con objetivos de rendimiento visibles, líneas base y umbrales de desviación aceptables.
Transformar la información de producción en mejoras sistemáticas del rendimiento a través de la toma de decisiones controlada por datos y la optimización proactiva.
El nivel 4 del modelo de madurez supone que la carga de trabajo está en producción y ha estado funcionando con tiempo suficiente para recopilar información útil sobre cómo funciona normalmente. En este nivel, debe usar esta información para realizar actualizaciones necesarias y mejoras adicionales.
Utilice los mecanismos de telemetría y retroalimentación para identificar problemas de rendimiento como cuellos de botella y desarrollar planes para realizar mejoras. Use prácticas de administración de cambios maduras para asegurarse de que no causa accidentalmente más problemas al realizar cambios en su entorno.
Tenga en cuenta que las mejoras iterativas alcanzan un punto de disminución de los retornos. Debe decidir cuándo alcanza un estado de funcionamiento que cumpla con sus requisitos. Un estado aceptable es cuando el costo y la carga de corregir ineficacias no superan las mejoras de rendimiento menores que se obtienen.
Recuerde que cualquier cambio que realice en su entorno para mejorar el rendimiento afecta directamente a otros pilares del marco de Well-Architected. La optimización de costos es la compensación más común. Evalúe cuidadosamente el impacto en otros pilares antes de realizar mejoras en el rendimiento para mantener el equilibrio adecuado para sus requisitos.
Estrategias clave
En el nivel 4, debe supervisar y probar el rendimiento en producción. Debe tener planes de prueba y escenarios bien desarrollados y datos de prueba ya implementados. El objetivo de las pruebas es detectar posibles problemas de rendimiento antes de que se produzcan en producción. Por lo tanto, la supervisión y las pruebas deben ser rigurosas, estandarizadas y documentadas exhaustivamente. Tenga en cuenta las recomendaciones siguientes:
Revise continuamente la línea base. Aplique lo que aprenda de la supervisión del rendimiento para asegurarse de que la línea base refleja las métricas de rendimiento reales. Es importante mantener una línea base porque ejecuta pruebas con esa línea de base para asegurarse de que las implementaciones como las actualizaciones de características no afectan negativamente al rendimiento.
Desplace a la izquierda en las pruebas. Integre las pruebas anteriores en el ciclo de desarrollo para detectar posibles problemas antes de que se produzcan en producción.
Desplace a la derecha en las pruebas. Realice pruebas en producción. Para asegurarse de que las pruebas no sean perjudiciales, use estrategias como implementaciones azul-verde y pruebas A/B.
Use transacciones sintéticas en las pruebas. Las transacciones sintéticas permiten probar de forma coherente la experiencia del usuario real. Estas pruebas le ayudan a identificar problemas y posibles mejoras antes de que los usuarios se vean afectados.
Automatización de la supervisión y las pruebas. Use herramientas probadas en el sector para automatizar la supervisión y las alertas en la línea base y para las pruebas de rendimiento. La automatización reduce los pasos manuales y garantiza la coherencia.
Dilema: Las pruebas en producción pueden ser complejas y normalmente requieren un esfuerzo significativo de los equipos de DevOps. Estos requisitos pueden afectar a la velocidad de desarrollo y a otras funciones operativas. Las implementaciones azul-verde y las pruebas A/B también pueden agregar costos a la carga de trabajo mediante el uso de recursos duplicados al realizar pruebas. Incluya estas consideraciones en el presupuesto y el planeamiento de desarrollo.
✓ Implementar optimizaciones avanzadas de administración de datos
En el nivel 4, debe tener muchas estrategias de optimización de administración de datos ya vigentes. Use la experiencia de producción para realizar más optimizaciones para ajustar la administración de datos y asegurarse de que la carga de trabajo funciona de forma eficaz a medida que continúa evolucionando.
Utilice la compresión de datos sin y con pérdida para reducir la huella de datos. Este enfoque ayuda a ahorrar espacio de almacenamiento y uso de ancho de banda y puede dar lugar a transferencias de datos y tiempos de acceso más rápidos.
Desarrolle e implemente una directiva de archivo y eliminación para los datos que rara vez se usan o que ya no se usan. Mueva los datos a almacenamiento independiente, menos costoso o quítelo por completo para ayudar a ahorrar espacio de almacenamiento y uso de ancho de banda.
Ajuste las estrategias de almacenamiento en caché y particionamiento en función de la experiencia de producción.
Replique los datos en regiones cercanas a los usuarios para reducir la latencia. Algunas tecnologías de base de datos, como Azure Cosmos DB, proporcionan réplicas legibles y grabables en varias regiones. Las réplicas reducen aún más la latencia al implementar la carga de trabajo entre regiones.
Incluya la supervisión del rendimiento del almacenamiento en la solución de supervisión de cargas de trabajo. Los problemas de rendimiento pueden aparecer rápidamente cuando se infringen los límites de almacenamiento. Muchos servicios de almacenamiento en la nube imponen estrangulamiento cuando se cruzan los umbrales, lo que provoca cuellos de botella que afectan a las funcionalidades de las aplicaciones aguas abajo. La supervisión del rendimiento del almacenamiento y la observación de tendencias pueden ayudarle a evitar de forma proactiva los límites.
✓ Optimizar los flujos críticos a través del aislamiento
Cuando sea práctico, aísle los flujos críticos para evitar la contención de recursos y simplificar la administración. Tenga en cuenta las estrategias siguientes:
Dedique recursos de proceso, almacenamiento y redes a flujos críticos.
Use enfoques de contenedorización para aislar los flujos críticos en el nivel lógico o de software.
Asigne explícitamente capacidad para la CPU, la memoria y la entrada y salida del disco a flujos críticos para asegurarse de que están aprovisionados correctamente.
Dilema: Aislar los flujos a través de recursos dedicados es más caro que compartir recursos entre flujos. Realice un análisis de costo-beneficio antes de implementar este enfoque para asegurarse de que es el mejor enfoque para su caso de uso.
✓ Ampliar las optimizaciones de código derivadas de la experiencia de producción
Vuelva a consultar las optimizaciones de código que ha realizado anteriormente en el desarrollo de cargas de trabajo para encontrar áreas que necesitan mejoras adicionales. Por ejemplo, ahora debe contar con una telemetría de producción que pueda ayudarle a encontrar ineficiencias, como pérdidas de memoria. También puede confirmar las rutas críticas que identificó mediante datos de tiempo de ejecución de producción, o puede encontrar rutas críticas inesperadas.
✓ Optimizar tareas operativas
Las tareas operativas, como escaneos de virus, rotaciones de secretos, copias de seguridad, optimización de índices como reorganización o reconstrucción y implementaciones, pueden afectar al rendimiento de la carga de trabajo. La optimización de su eficiencia mantiene la carga de trabajo funcionando sin problemas. Tenga en cuenta las estrategias siguientes para optimizar estos tipos de tareas:
Ajuste las herramientas operativas. Pruebe y comprenda cómo las herramientas esenciales, como la supervisión de la integridad de los archivos y el examen de virus, afectan al rendimiento. A continuación, ajuste las configuraciones para ellos. Por ejemplo, cree listas de exclusión para exámenes de virus para minimizar su duración.
Ajuste de las operaciones de base de datos. Busque oportunidades para ajustar las operaciones, como las copias de seguridad de bases de datos, los cambios de esquema, el ajuste del rendimiento y la supervisión. Use herramientas nativas como el ajuste automático en Azure SQL Database para ayudar a este esfuerzo.
Investigue y pruebe las nuevas características de la plataforma que están disponibles para determinar si pueden ayudarle a obtener eficiencias. Supervise constantemente los comentarios y las métricas de rendimiento de estas nuevas incorporaciones para perfeccionar su enfoque.
Contrapartida: tenga en cuenta cómo su plataforma en la nube empaqueta las capacidades en SKUs. Algunas SKU que proporcionan un mayor rendimiento podrían sobreaprovisionarse para su caso de uso actual, pero podrían ahorrarle tiempo y esfuerzo en una migración futura.
Dilema: La adopción de algunos tipos de servicios puede significar migrar la aplicación o los datos, lo que podría provocar tiempo de inactividad para completar la migración. Como parte de la evaluación, determine si puede tolerar el tiempo de inactividad necesario para migrar correctamente.
✓ Priorizar los esfuerzos de optimización
La optimización proactiva del rendimiento significa mejorar la eficacia de la carga de trabajo antes de que se produzcan problemas mediante la identificación de cuellos de botella e implementación de optimizaciones. En función del análisis, realice mejoras específicas a través de cambios de código, ajustes de infraestructura o actualizaciones de configuración.
Lograr un rendimiento máximo a través de la experimentación, automatización y técnicas de optimización de vanguardia que proporcionan un valor empresarial medible.
El nivel 5 del modelo de madurez se centra en identificar oportunidades para mejorar el rendimiento valioso en toda la carga de trabajo. Tome un enfoque basado en experimentación para la optimización. Vuelva a visitar las áreas de diseño de cargas de trabajo, como las prácticas de implementación, la supervisión y la depuración, y la automatización operativa para encontrar más mejoras. Adopte una mentalidad de mejora continua revisando periódicamente el diseño de cargas de trabajo y las prácticas operativas. Use los procesos de administración de cambios establecidos para asegurarse de que las mejoras se implementan de forma segura y eficaz.
Estrategias clave
Tome un enfoque proactivo para mejorar la eficacia mediante la experimentación. Comience con una hipótesis de una actualización de carga de trabajo que espera ofrecer mejoras de rendimiento medibles, en función de los datos de rendimiento observados que identifiquen un cuello de botella o una ineficiencia. Cree un entorno de prueba que imite estrechamente las condiciones del mundo real tanto como sea posible para validar o refute la hipótesis. Después de probar su hipótesis, evalúe la rentabilidad de la inversión (ROI) del cambio para decidir si vale la pena implementar. Incluya todos los pilares del Azure Well-Architected Framework en la evaluación del ROI. Si los compromisos que necesita hacer para otros pilares son aceptables, es probable que el cambio valga la pena considerar.
✓ Optimizar la implementación y las versiones de características
En el nivel 5, debe tener un proceso de actualización estandarizado en su lugar que funcione de forma confiable. En este nivel, vuelva a evaluar los procesos para determinar si la estrategia actual es la mejor opción para la eficiencia operativa. Evalúe si el modelo de implementación azul-verde, canario u otro modelo de implementación se alinea mejor con las necesidades de su organización. Considere la posibilidad de usar banderas de funciones para activar y desactivar fácilmente funciones en grupos de usuarios específicos. Asegúrese de que la estrategia de copia de seguridad admita una recuperación rápida a un estado correcto conocido.
✓ Optimice procesos de supervisión y depuración
La recopilación de registros y telemetría de los componentes afecta inherentemente al rendimiento. Mida cómo afecta la plataforma de supervisión a la carga de trabajo, incluidos elementos como el registro, la telemetría, la instrumentación y la depuración remota. Identificar oportunidades de optimización. Si alguno de estos procesos reduce el rendimiento más de lo que mejora la observabilidad, considere la posibilidad de volver a configurarlos o deshabilitarlos. Como parte de las prácticas de mejora continua, revise periódicamente los datos de supervisión que recopila para asegurarse de que solo recopila la información más valiosa para la información de rendimiento que necesita.
Vuelva a evaluar las alertas de rendimiento para determinar si solo recibe alertas valiosas. Quite alertas que no sean accionables y vuelva a configurar alertas que carecen de información suficiente para comprender claramente la naturaleza del problema de rendimiento y los componentes afectados.
✓ Expansión de la automatización de operaciones
Busque oportunidades para ampliar la automatización de las tareas operativas para lograr más eficiencias. Debe tener muchas tareas operativas repetitivas automatizadas en el nivel 5, así que eche un vistazo completo a las operaciones para identificar otros objetivos de automatización valiosos. Tenga en cuenta las siguientes tareas relacionadas con el rendimiento:
Pruebas de rendimiento: Use herramientas estándar del sector bien establecidas para simular cargas de trabajo.
Implementaciones: Implemente herramientas de integración continua e implementación continua para implementaciones coherentes y eficaces.
Administración de incidentes: Automatice el enrutamiento de alertas, la creación de tickets y asignaciones.
Acciones de corrección: Automatice acciones como reiniciar servicios y ajustar las asignaciones de recursos.
Mecanismos de recuperación automática: Cree funcionalidades para corregir automáticamente problemas de rendimiento conocidos.