Principios de diseño de eficiencia del rendimiento

La eficiencia del rendimiento es la capacidad de la carga de trabajo para ajustarse a los cambios en las demandas. Una carga de trabajo debe ser capaz de controlar un aumento de la carga sin poner en peligro la experiencia del usuario. Por el contrario, cuando hay una disminución de la carga, la carga de trabajo debe conservar sus recursos. La capacidad, que indica la disponibilidad de recursos (CPU y memoria), es un factor significativo.

El diseño de la carga de trabajo no solo debe basarse en la capacidad aprovisionada previamente, lo que garantiza el rendimiento hasta un determinado límite. Si se supera ese límite, es posible que la carga de trabajo tenga problemas de rendimiento o incluso experimente interrupciones. Cuando la carga está por debajo de ese límite, los recursos continúan ejecutándose innecesariamente, incurriendo en costos.

Necesita una estrategia completa para mantener los objetivos de rendimiento a lo largo del tiempo. Las consideraciones de rendimiento no deben ser una idea posterior en el proceso de diseño, solo para solucionarse cuando surgen problemas en producción. En su lugar, adopte una mentalidad en la que el rendimiento sea una consideración clave de las primeras fases de diseño. Inicialmente, compile el sistema sin destinos de rendimiento específicos. Pero desde allí, pruebe y mida el rendimiento en cada fase de desarrollo para garantizar el progreso y la eficacia. La optimización continua de estos objetivos a lo largo del proceso y la incorporación de lecciones aprendidas de producción puede mitigar significativamente los posibles problemas de antemano.

Estos principios de diseño pueden ayudar a crear su estrategia para administrar la capacidad de los recursos para satisfacer lo suficiente los requisitos empresariales para el uso esperado. Además, reduzca los residuos durante las horas de poca actividad. Una vez que haya decidido una estrategia, solidifique el diseño mediante la lista de comprobación de eficiencia del rendimiento.

La eficiencia del rendimiento es sobre el uso eficaz de los recursos de carga de trabajo. Sin una buena estrategia, es posible que no pueda anticiparse y satisfacer las demandas del usuario. Es posible que tenga que recurrir a un enfoque de previsión a largo plazo y capacidad aprovisionada previamente, que no le permite aprovechar al máximo la plataforma en la nube.

Negociar objetivos de rendimiento realistas

Icono objetivo Se define la experiencia de usuario prevista y hay una estrategia para desarrollar una prueba comparativa y medir los objetivos de los requisitos empresariales preestablecidos.

Desde una perspectiva de rendimiento, es ideal tener objetivos de rendimiento bien definidos para iniciar el proceso de diseño. Para establecer esos objetivos, debe tener una buena comprensión de los requisitos empresariales y la calidad prevista del servicio que se espera que la carga de trabajo entregue. Defina las expectativas en colaboración con las partes interesadas de la empresa. En lugar de centrarse solo en las métricas técnicas, determine los efectos aceptables en la experiencia del usuario para los flujos clave.

Hay una dependencia circular. No se puede medir lo que no se ha definido y no se puede definir sin medida. Por lo tanto, también es importante medir el rendimiento de la carga de trabajo hasta lograr una definición satisfactoria de umbral aceptable con un acuerdo colectivo.

Hay una fuerte correlación entre los objetivos de rendimiento y confiabilidad, lo que ayuda a determinar la calidad del servicio en términos de rendimiento, disponibilidad y resistencia. Sin una definición clara, es difícil medir, alertar y probar el rendimiento. Después de establecer los destinos e identificar los números reales a través de las pruebas a lo largo del tiempo, puede implementar la automatización para las pruebas continuas con estos destinos.

Siga los procedimientos recomendados para definir destinos en el nivel de macro, incluso si son aproximados o dentro de un intervalo.

Enfoque Ventajas
Prepárese para una negociación eficaz al comprender los conceptos técnicos, explorar las posibilidades de diseño con la infraestructura disponible y usar los resultados de la experimentación concreta, si está disponible.

Use datos históricos para obtener visibilidad sobre los patrones de uso y los cuellos de botella.

Incorpore información sobre factores externos, como la entrada de análisis de mercado, expertos y estándares del sector.
Puede tomar decisiones informadas basadas en conclusiones prácticas.

Los objetivos de rendimiento se centran en la experiencia del usuario que se basa en lo que es factible, los procedimientos recomendados del sector y las tendencias de mercado actuales.
Colabore con los propietarios empresariales para comprender las promesas de los usuarios, en términos de calidad y cumplimiento normativo, si procede.

Mantenga una perspectiva amplia y evite profundizar en detalles pormenorizados en esta fase.

Sea explícito sobre lo que representa un rendimiento aceptable, en función de las inversiones.

Comprenda el contexto empresarial y el crecimiento previsto.
Evitará realizar suposiciones que podrían no alinearse con los objetivos empresariales. También impulsa la claridad y la motivación dentro del equipo de carga de trabajo.

Tener un contexto empresarial sobre los requisitos funcionales y no funcionales podría descubrir cambios de diseño en otros pilares de Azure Well-Architected y ayudarle a hacer inconvenientes informados.

La definición de parámetros al principio ayuda a evitar los costos asociados con los posibles rediseños de la solución más adelante.

Le permite asegurarse de que los objetivos de rendimiento cubren futuras proyecciones, por lo que puede alinear los esfuerzos actuales con los objetivos a largo plazo.
Identifique los flujos de carga de trabajo y priorice los flujos en el diagrama de arquitectura.

Defina la tolerancia al rendimiento de cada flujo como un intervalo de rendimiento aspiracional a inaceptable.

Evalúe los puntos de entrada y salida de cada flujo, teniendo en cuenta la importancia, la frecuencia de uso y la intensidad arquitectónica de la ruta de acceso.
Al priorizar los flujos, puede centrar los recursos en áreas críticas que tengan el mayor efecto en los resultados empresariales y del usuario.

Al dividir el sistema en sus partes y dependencias, comprende la función de cada componente e influye en el rendimiento. También se da cuenta de posibles problemas.

Ayuda a establecer una línea de base de rendimiento y una optimización de la unidad.
Empezar a crear un modelo de rendimiento Tenga en cuenta si los patrones de uso muestran variaciones estacionales o diarias. Tenga en cuenta el costo, las operaciones y la importancia crítica para la empresa.

Use estándares del sector para cuantificar métricas y métodos de agregación, como el uso de percentiles.

Evalúe la demanda y las expectativas y limitaciones que imponen las restricciones empresariales.

Incorpore perspectivas de crecimiento.
Un modelo de rendimiento proporciona información sobre el uso óptimo de los recursos y ayuda con la planificación estratégica.

Los estándares del sector ayudan a realizar pruebas comparativas.

La corrección futura garantiza que los objetivos de rendimiento sigan siendo relevantes y puedan adaptarse a los cambios.

Diseño para cumplir los requisitos de capacidad

Icono objetivo Proporcione suficiente suministro para abordar la demanda prevista.

Es importante medir de forma proactiva el rendimiento. La medición del rendimiento implica medir las líneas base y tener una comprensión preliminar de qué componentes del sistema es probable que representen desafíos. Puede lograrlo sin realizar una prueba de rendimiento completa o mediante una optimización pormenorizadas. Al realizar estos pasos iniciales, se establece una base para la administración eficaz del rendimiento al principio del ciclo de vida de desarrollo.

Examine el sistema en su conjunto, en lugar de centrarse en componentes individuales. Evite ajustarla en esta fase. La realización de mejoras de rendimiento pormenorizadas da como resultado inconvenientes en otras áreas. A medida que avanza a lo largo del ciclo de vida y comienza las pruebas de aceptación del usuario o avanza hacia la producción, puede identificar rápidamente qué áreas requieren una mayor optimización.

Enfoque Prestación
Evalúe las demandas de elasticidad de los flujos identificados.

Explore los patrones de diseño que se pueden implementar en la pila de tecnología, teniendo en cuenta la aplicación y las capas de proceso y datos subyacentes.
Puede definir los requisitos de escalabilidad en los componentes existentes que necesitan más capacidad y las áreas en las que necesita componentes adicionales para distribuir la carga.

Conoce posibles cuellos de botella en el sistema y diseña controles de compensación, como agregar funcionalidades de almacenamiento en caché para reducir la latencia y la carga del sistema.
Elija los recursos adecuados en la pila de tecnología, lo que le permite cumplir los objetivos de rendimiento e integrarse con el sistema.

Considere las características que pueden cumplir los requisitos de escalabilidad.

Busque el equilibrio adecuado entre la asignación de recursos y los requisitos del sistema, para controlar los aumentos inesperados de forma eficaz.
Al analizar las distintas funcionalidades de los recursos, se asegura de que cada componente contribuye a la funcionalidad general y el rendimiento del sistema.

Puede aprovechar las funcionalidades integradas que desencadenan automáticamente las operaciones de escalado.

Los recursos de ajuste de tamaño correcto pueden satisfacer los cambios en la demanda sin sobreaprovisionar, lo que da lugar a ahorros de costos.
Realice el planeamiento de la capacidad en función de la demanda y la capacidad de los recursos seleccionados para enriquecer el modelo de rendimiento.

Use técnicas de modelado predictivo para predecir los cambios previstos en la capacidad que pueden producirse con cambios predecibles e inesperados.

Defina los objetivos de rendimiento que se pueden traducir en requisitos técnicos.
Puede usar eficazmente los recursos y satisfacer la demanda sin sobreaprovisionar, lo que evita costos innecesarios.

Comprende cómo afectan las opciones de diseño al rendimiento.
Implemente una prueba de concepto que valide los requisitos técnicos y las opciones de diseño. Una prueba de concepto es fundamental para validar el diseño para determinar si el sistema puede cumplir los objetivos de rendimiento y si esos objetivos son realistas. En función de la carga prevista, puede validar si la capacidad prevista puede cumplir los objetivos de rendimiento.

Además, compruebe las implicaciones de costo de las opciones de diseño.
Documente la estrategia de pruebas de rendimiento.

Incluya casos de uso, diferentes metodologías y cadencia de los planes de prueba.

Defina un proceso para la operación descrito por el plan de pruebas de rendimiento.

Evaluar y priorizar los casos de prueba en el plan. Céntrese en los casos que ofrecen información valiosa sobre los objetivos de rendimiento y alineen el planeamiento de la capacidad.
Asegúrese de que se prueban los aspectos correctos del sistema.

Puede asignar recursos de forma eficaz y realizar pruebas de una manera que se alinee con las prioridades y los requisitos empresariales.
Documente la estrategia de supervisión del rendimiento.

Evalúe las métricas en distintos niveles de abstracción para cada flujo identificado.
Puede realizar un seguimiento del progreso hacia la consecución de los objetivos de rendimiento a lo largo del ciclo de desarrollo.

Lograr y mantener el rendimiento

Icono de objetivo Proteja contra la degradación del rendimiento mientras el sistema está en uso y a medida que evoluciona.

El desarrollo no es un esfuerzo único. Es un proceso continuo. Espere cambios en el rendimiento a medida que cambian las características. Hay varianza en los patrones de usuario y los perfiles, incluso los cambios de las optimizaciones en otros pilares de Azure Well-Architected. Cualquier cambio puede afectar a los recursos de carga de trabajo.

Proteja el sistema de los cambios para que no vuelva a deslizarse en los objetivos de rendimiento. Integre las pruebas y la supervisión en el proceso de desarrollo. Pruebe el rendimiento del sistema en producción con carga real y simule esa carga con pruebas automatizadas antes de la producción. En ambos casos, debe tener prácticas de supervisión implementadas con fines de comprobación.

A lo largo del ciclo de vida de desarrollo, realice varios tipos de pruebas en diferentes fases. En las fases iniciales, pruebe la prueba de concepto para asegurarse de que los resultados del rendimiento no son completamente inesperados. A medida que avanza el desarrollo, realice pruebas manuales y de bajo esfuerzo para establecer pruebas comparativas. En la fase de compilación, empiece a desarrollar pruebas de rendimiento rutinarias automatizadas que evalúen la latencia, los niveles de esfuerzo, la capacidad de carga y otras características definidas en los planes de prueba.

La supervisión debe ser una parte integral de ese esfuerzo, en lugar de ser un ejercicio aislado. Puede ver cómo funcionan el sistema y sus recursos con el tiempo. Después, puede ajustarlos para maximizar su valor y asegurarse de que siguen cumpliendo los estándares de rendimiento.

Tenga en cuenta que los objetivos de rendimiento varían con el tiempo, en respuesta a los cambios. Actualice el modelo de rendimiento en función de las métricas probadas y supervisadas. Indique claramente un aumento, reducción o ningún efecto en el rendimiento de los flujos.

Siempre esté listo para renegociar y restablecer las expectativas con las partes interesadas de la empresa.

Enfoque Prestación
Integre las pruebas de rendimiento rutinarias en Azure Pipelines.

Elija canalizaciones que puedan integrar pruebas. Por el contrario, elija las herramientas de prueba que se pueden integrar en las canalizaciones.
Las pruebas automatizadas ahorran tiempo y proporcionan coherencia que facilita la detección de regresiones o mejoras.

Estos artefactos permiten la supervisión continua de cualquier desviación o desfase a lo largo del tiempo, por lo que puede mantener un rendimiento y una calidad coherentes.
Formalice las pruebas de rendimiento como puertas de calidad que pueden aprobar o denegar la promoción de lanzamiento y la implementación final en producción. Estos puntos de control garantizan que cada fase de implementación cumpla los estándares de rendimiento necesarios antes de continuar con la siguiente fase. Los puntos de control ayudan a evitar la regresión de rendimiento no deseada.

Por ejemplo, si el rendimiento es significativamente inferior a las expectativas, puede bloquear una versión hasta que se realicen mejoras.
Configure un proceso repetible para supervisar transacciones reales en producción y desviaciones con respecto a los objetivos de rendimiento.

Use transacciones sintéticas en producción.

Configure alertas de supervisión en las regresiones de rendimiento.
Quiere obtener información sobre el rendimiento real del sistema en la carga real que no se pudo simular a través de pruebas.

A continuación, puede identificar de forma proactiva problemas y áreas de mejora, como posibles cuellos de botella, recursos infrautilizados y otros problemas.
Revise los resultados de las pruebas de rendimiento y supervise los datos minuciosamente y optimice hasta que cumpla los objetivos de rendimiento.

Priorice las acciones derivadas de esas revisiones y agréguelas al trabajo pendiente para la ejecución planeada.
En función de los resultados de las pruebas, puede capturar y comparar datos y empezar a analizar tendencias.

Los esfuerzos de optimización están controlados por datos.
Cree aptitudes de codificación que se centren en el rendimiento.

Tener estándares de codificación que ejemplifiquen los patrones de codificación controlados por el rendimiento.
El código que no tiene problemas de rendimiento puede hacer que los ciclos de pruebas sean más eficaces , ya que las pruebas se pueden centrar en problemas más significativos.

Los patrones de codificación ayudan a evitar volver a trabajar y a mantener el estilo de codificación coherente.
Solucione la erosión del rendimiento a medida que aumenta el uso, las características cambian y los datos se acumulan con el tiempo para mantener el rendimiento.

Restablezca las expectativas y establezca nuevos objetivos, si el ajuste preciso solo aporta ventajas a corto plazo.
Puede conservar el estado de rendimiento antes de que la degradación se convierta en problemas que afecten negativamente a la experiencia del usuario más allá del intervalo aceptable.

El cambio de destinos restablece el modelo de rendimiento y no pierde tiempo en optimizar el sistema que ya ha alcanzado su capacidad.

Mejora de la eficacia mediante la optimización

Icono de objetivo Mejore la eficiencia del sistema dentro de los objetivos de rendimiento definidos para aumentar el valor de la carga de trabajo.

Los objetivos establecidos durante la fase inicial se basan en un nivel razonable de experiencia del usuario, teniendo en cuenta varias restricciones. Debe volver a evaluar y ajustar los objetivos para mejorar aún más la experiencia. Para mejorar aún más la experiencia, requiere una comprensión clara de cómo se usa el sistema, cómo ha evolucionado y cómo ha cambiado la plataforma o la tecnología con el tiempo. El ciclo de supervisión, optimización, prueba e implementación es un proceso continuo.

Los esfuerzos de optimización de eficiencia permiten que una carga de trabajo funcione con un menor consumo de recursos. Pueden hacer que la carga de trabajo esté en un estado sobreaprovisionado con capacidad de reserva. Use esa capacidad para mejorar la confiabilidad del sistema. Elimine la capacidad para mejorar el costo del sistema. O bien, vuelva a usar la capacidad para admitir nuevas características de producto en los recursos existentes.

Cuando el sistema obtenga eficiencias, aproveche la oportunidad de establecer y mantener nuevos objetivos de rendimiento.

Enfoque Prestación
Asigne ciclos dedicados para la optimización del rendimiento para abordar los requisitos y optimizaciones no funcionales en áreas funcionales. Los destinos de esta optimización son recursos, código, retención de datos, consultas de base de datos y otros. Puede crear una referencia cultural de optimización controlada por el rendimiento. Mantiene al equipo responsable de supervisar de forma proactiva los patrones de rendimiento y también ajustar la aplicación.
Mejore la arquitectura con nuevos patrones de diseño y componentes, lo que puede aumentar el rendimiento, de maneras que anteriormente no tenía en cuenta debido a un tiempo o presupuesto limitados. El nuevo diseño y los componentes pueden optimizar el sistema, lo que da lugar a una mejor experiencia del usuario. Por ejemplo, puede usar el almacenamiento en caché o agregar un componente de red de entrega de contenido.

También puede dar lugar a ventajas de costos a largo plazo.
Use herramientas de supervisión para analizar tendencias históricas e identificar los flujos y las rutas de acceso de implementación de código que se beneficiarían más de un esfuerzo de optimización del rendimiento. Se recomiendan herramientas y generadores de perfiles de supervisión del rendimiento de las aplicaciones (APM) para este fin.

Identifique las rutas de acceso activas de la operación y otros posibles cuellos de botella en el sistema.
Al identificar las áreas problemáticas periódicas, el equipo puede centrarse en las ganancias más altas.
Póngase al día y manténgase al día con las innovaciones tecnológicas que pueden mejorar el rendimiento.

Aproveche las nuevas versiones publicadas para los marcos y bibliotecas dependientes.

De forma similar, use las nuevas características para los recursos de plataforma a medida que se actualizan y revisan.
La adopción de nuevas tecnologías a menudo puede ser el factor motivador para buscar oportunidades para mejorar.

El código que podría haber sido lento en el pasado puede volverse más rápido con estas actualizaciones. También quiere tener en cuenta cómo determinadas actualizaciones afectan negativamente al rendimiento.

Pasos siguientes