Recomendaciones para la optimización continua del rendimiento

Se aplica a esta recomendación de lista de comprobación de eficiencia del rendimiento de Azure Well-Architected Framework:

PE:12 Optimice continuamente el rendimiento. Céntrese en los componentes que muestran el deterioro del rendimiento a lo largo del tiempo, como las bases de datos y las características de red.

En esta guía se describen las recomendaciones para la optimización continua del rendimiento. La optimización continua del rendimiento es el proceso de supervisión, análisis y mejora constante de la eficiencia del rendimiento. La eficiencia del rendimiento se adapta a aumentos y disminuciones en la demanda. La optimización del rendimiento debe ser una actividad continua durante toda la vida útil de la carga de trabajo. El rendimiento de la carga de trabajo a menudo degrada o se vuelve excesivo con el tiempo, y los factores que se deben tener en cuenta incluyen cambios en los patrones de uso, la demanda, las características y la deuda técnica.

Definiciones

Término Definición
Organización de los datos en capas Una estrategia de almacenamiento que implica clasificar los datos en función de su frecuencia de acceso y almacenarlos en niveles de almacenamiento en consecuencia.
Deuda técnica Las ineficiencias acumuladas, las opciones de diseño poco óptimas o los accesos directos tomados intencionadamente durante el proceso de desarrollo para ofrecer código más rápido.
Período de vida Mecanismo que establece un tiempo de expiración para los datos.

Estrategias de diseño principales

La eficacia del rendimiento es cuando la capacidad de la carga de trabajo se alinea con el uso real. Una carga de trabajo que supera el rendimiento es tan problemática como una que supera el rendimiento. Los inconvenientes difieren. El rendimiento excesivo afecta a la optimización de costos. Un rendimiento deficiente afecta a los usuarios. La clave para la eficiencia del rendimiento es supervisar, ajustar y probar con el tiempo. Debe revisar periódicamente las métricas de rendimiento y realizar ajustes según sea necesario para asegurarse de que la carga de trabajo sea eficaz. Para alcanzar los objetivos de rendimiento, es necesario probar todos los cambios previos y posteriores a la implementación.

Desarrollo de una referencia cultural de rendimiento

Una cultura de rendimiento es un entorno en el que se espera una mejora continua y el equipo aprende de producción. La optimización del rendimiento requiere aptitudes especializadas. Los equipos de carga de trabajo necesitan las aptitudes y la mentalidad adecuadas para optimizar su rendimiento para satisfacer los aumentos y las reducciones de la demanda. También debe asignar su tiempo para admitir la supervisión y corrección de los problemas de rendimiento necesarios a medida que surjan. Estos equipos necesitan expectativas claras. Por ejemplo, los objetivos de rendimiento, las líneas base y los umbrales de desviación (lo lejos de la línea base es aceptable) deben ser altamente visibles y socializados.

Compensación: las optimizaciones de rendimiento continuo requieren un equipo que tenga las aptitudes y el tiempo adecuados para encontrar y corregir problemas de rendimiento. Dedicar personal al rendimiento agrega costos operativos. Si tiene recursos limitados de personal, la optimización continua del rendimiento podría llevar tiempo lejos de otras tareas operativas.

Evaluación de las nuevas características de la plataforma

La evaluación de nuevas características de la plataforma implica examinar las nuevas funcionalidades y herramientas de una plataforma que pueden mejorar la eficiencia del rendimiento, como soluciones de almacenamiento optimizadas, mecanismos de almacenamiento en caché o herramientas de administración de recursos. Las nuevas características de la plataforma pueden abrir vías para mejorar la eficiencia del rendimiento. Mantenga actualizada la plataforma y las herramientas para asegurarse de que usa las innovaciones y procedimientos recomendados más recientes. Supervise de forma coherente los comentarios y las métricas de rendimiento de estas nuevas adiciones para refinar el enfoque.

Priorizar los esfuerzos de optimización

Optimizar proactivamente el rendimiento significa tomar medidas proactivas para mejorar y mejorar el rendimiento de la carga de trabajo antes de que surjan problemas de rendimiento. El uso de medidas proactivas implica identificar posibles cuellos de botella, supervisar las métricas de rendimiento e implementar optimizaciones para garantizar que la carga de trabajo funciona de forma eficaz y cumple los objetivos de rendimiento deseados. En función del análisis de los componentes deteriorados, los flujos críticos y la deuda técnica, puede implementar optimizaciones de rendimiento específicas de cada área. Las mejoras pueden implicar cambios de código, ajustes de infraestructura o actualizaciones de configuración.

Priorizar los componentes deteriorados

Una carga de trabajo suele tener componentes como bases de datos y componentes de red que son propensos a degradaciones del rendimiento a lo largo del tiempo. A medida que la carga de trabajo evoluciona y cambian los patrones de uso, estos cambios suelen afectar al rendimiento de los componentes individuales de la carga de trabajo. El aumento de los datos en las bases de datos puede provocar tiempos de ejecución de consultas más largos y una recuperación de datos más lenta. Los cambios en los patrones de uso pueden dar lugar a un diseño de consulta poco óptimo. Las consultas que eran eficaces una vez pueden ser ineficaces a medida que evoluciona la carga de trabajo. Las consultas ineficazs pueden consumir recursos excesivos y degradar el rendimiento de la base de datos. Un mayor uso de la carga de trabajo puede provocar un mayor tráfico de red, lo que provoca problemas de congestión y latencia.

Es importante realizar esfuerzos continuos para optimizar el rendimiento de estos componentes. Identifique y solucione de forma proactiva los problemas de rendimiento de la carga de trabajo. Al priorizar los componentes de deterioro conocidos, puede abordar proactivamente posibles problemas de rendimiento y garantizar el funcionamiento sin problemas de la carga de trabajo. Podría implicar la implementación de técnicas de optimización del rendimiento, la optimización de la asignación de recursos o la actualización de componentes de hardware o software según sea necesario.

Dar prioridad a los flujos críticos

Los flujos críticos son los procesos o flujos de trabajo más importantes y de alta prioridad de la carga de trabajo. Al priorizar estos flujos críticos, se asegura de que las partes más esenciales de la carga de trabajo están optimizadas para el rendimiento. Saber qué flujos son críticos ayuda a priorizar los esfuerzos de optimización. Optimizar la eficiencia del rendimiento de las áreas más importantes de la aplicación proporciona la mayor rentabilidad de la inversión. Debe supervisar los flujos críticos y las páginas más populares. Busque formas de hacer que sean más eficientes.

Automatización de la optimización del rendimiento

La automatización puede eliminar procesos manuales repetitivos y lentos, lo que les permite realizar de forma eficaz. La automatización reduce las posibilidades de error humano y garantiza la coherencia en la ejecución de tareas de optimización. Al automatizar estas tareas, también puede liberar a las personas para centrarse en actividades y actividades más complejas que agregan valor. Puede aplicar la automatización a varias tareas, como pruebas de rendimiento, implementación y supervisión:

  • Pruebas de rendimiento automatizadas: use herramientas de pruebas de rendimiento automatizadas como JMeter, K6 o Selenium para simular diferentes cargas de trabajo y escenarios.

  • Implementación automatizada: implemente procesos de implementación automatizados para garantizar implementaciones coherentes y sin errores. Use herramientas de CI/CD para automatizar el proceso de implementación. Estas herramientas pueden ayudarle a identificar cuellos de botella de rendimiento a medida que los usa para probar con puntos de conexión, comprobar los estados HTTP e incluso validar la calidad y las variaciones de los datos.

  • Supervisión y alertas: configure sistemas de supervisión y alertas automatizados para supervisar continuamente las métricas de rendimiento y detectar cualquier desviación o anomalías. Cuando se detectan problemas de rendimiento, se pueden desencadenar alertas automatizadas para notificar a los equipos o usuarios adecuados.

  • Administración de incidentes: implemente un sistema de administración de incidentes automatizado que pueda recibir alertas, crear vales y asignar vales a los equipos adecuados para la resolución. Estos pasos ayudan a garantizar que los problemas de rendimiento se solucionan rápidamente y se asignan a los recursos adecuados.

  • Diagnóstico automatizado: desarrolle scripts o herramientas de diagnóstico automatizadas que puedan analizar los datos de rendimiento e identificar las causas principales de los problemas de rendimiento. Estas herramientas pueden ayudar a identificar áreas o componentes específicos del sistema que están causando problemas de rendimiento.

  • Acciones de corrección automatizadas: defina e implemente acciones de corrección automatizadas que se pueden desencadenar cuando se detectan problemas de rendimiento específicos. Estas acciones pueden incluir el reinicio de servicios, el ajuste de la asignación de recursos, la eliminación de cachés o la implementación de otras técnicas de optimización del rendimiento.

  • Sistemas de recuperación automática: cree funcionalidades de recuperación automática en el sistema mediante la automatización del proceso de recuperación para problemas de rendimiento conocidos. Esta funcionalidad puede implicar corregir o ajustar automáticamente la configuración del sistema para restaurar un rendimiento óptimo.

Abordar la deuda técnica

La deuda técnica hace referencia a las ineficiencias acumuladas, las opciones de diseño poco óptimas o los accesos directos tomados durante el proceso de desarrollo que pueden afectar al rendimiento. La deuda técnica, el código poco claro y las implementaciones demasiado complejas pueden dificultar la eficiencia del rendimiento. Abordar la deuda técnica implica identificar y resolver estos problemas para mejorar el rendimiento general y la capacidad de mantenimiento de la carga de trabajo. Este trabajo puede incluir la refactorización de código, la optimización de las consultas de base de datos, la mejora del diseño arquitectónico o la implementación de procedimientos recomendados. Tal vez haya introducido deuda técnica para cumplir una fecha límite, pero debe abordar la deuda técnica a medida que optimiza la eficiencia del rendimiento a lo largo del tiempo.

Optimización de bases de datos

Optimizar continuamente las bases de datos implica identificar e implementar optimizaciones para garantizar que las bases de datos puedan controlar las cargas, ofrecer tiempos de respuesta rápidos y minimizar el uso de recursos. Al optimizar periódicamente las bases de datos, puede mejorar el rendimiento de las aplicaciones, reducir el tiempo de inactividad y mejorar la experiencia general del usuario.

  • Optimizar las consultas de base de datos: las instrucciones SQL mal escritas pueden degradar el rendimiento de la base de datos. Las condiciones JOIN ineficazs pueden provocar un procesamiento de datos innecesario. Las subconsultas complejas, las consultas anidadas y las funciones excesivas pueden reducir la velocidad de ejecución. Las consultas que recuperan demasiados datos se deben volver a escribir. Debe identificar las consultas de base de datos más comunes o críticas y optimizarlas. La optimización ayuda a garantizar consultas más rápidas.

  • Mantener índices: evalúe la estrategia de indexación para asegurarse de que los índices están correctamente diseñados y mantenidos. El mantenimiento de índices incluye la identificación de índices sin usar o redundantes y la creación de índices que se alinean con los patrones de consulta. Los índices de base de datos ayudan a acelerar las operaciones de recuperación de datos. En el caso de las bases de datos relacionales, debe supervisar la fragmentación de índices. Debe volver a generar o reorganizar los índices con regularidad. En el caso de las bases de datos no relacionadas, debe elegir la directiva de indexación correcta para la carga de trabajo. Use el ajuste automático en las bases de datos cuando estén disponibles. Estas características incluyen la creación automática de índices que faltan, la eliminación de índices sin usar y la corrección del plan. Para obtener más información, consulte Mantenimiento de índices para mejorar el rendimiento.

  • Revisar el diseño del modelo: revise el modelo de datos para asegurarse de optimizarlo para los requisitos específicos de la aplicación. Mejorar el rendimiento de las consultas y la recuperación de datos puede implicar la desnormalización, la creación de particiones u otras técnicas.

  • Optimizar la configuración de la base de datos: optimice las opciones de configuración de la base de datos, como la asignación de memoria, la E/S de disco y la configuración de simultaneidad para maximizar el rendimiento y el uso de recursos.

Optimización de la eficacia de los datos

Optimizar la eficiencia de los datos es el proceso de garantizar que los datos se almacenan, procesan y acceden de la manera más eficaz posible. Los niveles de datos y el uso de períodos de vida (TTL) son técnicas que se pueden usar para optimizar la eficiencia de los datos. Puede aplicar estas técnicas en varios escenarios de almacenamiento de datos, como bases de datos, sistemas de archivos o almacenamiento de objetos.

  • Usar niveles de datos: los niveles de datos implican clasificar los datos en función de su importancia o frecuencia de acceso y almacenar los datos en distintos niveles en consecuencia. La configuración de niveles de datos permite un uso más eficaz de los recursos de almacenamiento y mejora el rendimiento. Los datos a los que se accede con frecuencia o los datos críticos se pueden almacenar en niveles de alto rendimiento, mientras que los datos menos frecuentes o menos críticos se pueden almacenar en niveles de menor costo. El objetivo es revisar el uso de datos con el tiempo para asegurarse de que los datos están en el nivel correcto. A medida que cambian las prioridades de datos, los datos deben pasar de un nivel a otro.

  • Implementación del período de vida: el período de vida es un mecanismo que establece un tiempo de expiración para los datos. El período de vida permite que los datos se eliminen o archiven automáticamente después de un período determinado, lo que reduce los requisitos de almacenamiento y mejora la administración de datos. Al establecer un período de vida adecuado, permite quitar datos innecesarios, liberar espacio de almacenamiento y mejorar la eficacia general. Los datos de sesión, los archivos temporales y los datos de caché son destinos frecuentes para el período de vida. Las entradas de base de datos también pueden tener un período de vida.

Riesgo: un período de vida demasiado corto puede crear problemas de rendimiento.

Facilitación de Azure

Automatización de la optimización del rendimiento: Azure Advisor proporciona recomendaciones de rendimiento automáticas basadas en la telemetría de la carga de trabajo. Debe revisar y abordar estas recomendaciones con regularidad. Azure Monitor proporciona información en tiempo real sobre el rendimiento del sistema y le permite configurar alertas basadas en métricas de rendimiento específicas. Azure Log Analytics proporciona diagnósticos y análisis automatizados en los registros y métricas recopilados. Las herramientas como Aplicación de Azure Insights proporcionan información y recomendaciones para optimizar el rendimiento.

Para automatizar la corrección, use scripts o herramientas de automatización para ejecutar acciones de corrección automáticamente cuando se desencadene las alertas. Puede usar Azure Automation, Azure Functions o soluciones de automatización personalizadas.

Azure permite realizar pruebas de rendimiento para simular diferentes escenarios de usuario y cargas de trabajo. Las pruebas automatizadas pueden ayudarle a identificar cuellos de botella de rendimiento y optimizar el sistema en consecuencia. Las herramientas como Azure DevOps pueden automatizar las pruebas de rendimiento.

Optimización de bases de datos: la familia de productos SQL tiene muchas características integradas que le permiten supervisar y corregir el rendimiento de la base de datos SQL. Debe usar estas características para mantener el rendimiento de la base de datos. Azure SQL Database tiene una característica de ajuste automático que supervisa y mejora continuamente las consultas. Debe usar esta característica para mejorar automáticamente las consultas SQL.

Puede personalizar las directivas de indexación mediante las características de Azure Cosmos DB. Personalice las directivas para satisfacer las necesidades de rendimiento de la carga de trabajo.

Optimización de la eficiencia de los datos: la creación de niveles de datos permite almacenar datos en diferentes niveles en función de su frecuencia de acceso e importancia. Ayuda a optimizar los costos de almacenamiento y el rendimiento. Azure proporciona diferentes niveles de almacenamiento, como niveles de acceso frecuente, esporádico y de archivo para los datos de blobs. Los niveles de acceso frecuente están optimizados para los datos a los que se accede con frecuencia, los niveles de acceso esporádico son para datos a los que se accede con poca frecuencia y los niveles de archivo son para datos a los que se accede con poca frecuencia. Mediante el uso del nivel de acceso de almacenamiento más adecuado para los datos, puede garantizar una recuperación y almacenamiento de datos eficaces.

Lista de comprobación de eficiencia del rendimiento

Consulte el conjunto completo de recomendaciones.