Lograr y mantener el rendimiento
Protéjase contra la degradación del rendimiento mientras el sistema está en uso y a medida que este evoluciona. |
---|
El desarrollo no es un esfuerzo de una sola vez. Es un proceso continuo. Prevea cambios en el rendimiento a medida que cambien las características. Los patrones y perfiles de usuario cambiarán, así como las optimizaciones en otros pilares del marco de buena arquitectura de Azure. Cualquier cambio puede agotar los recursos de carga de trabajo.
Proteja el sistema de los cambios para que no afecte a 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 en vigor con fines de comprobación.
A lo largo del ciclo de vida de desarrollo, realice varios tipos de pruebas en distintas fases. En las fases iniciales, emplee la prueba de concepto para asegurarse de que los resultados del rendimiento no sean 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 funciona el sistema y sus recursos a lo largo del 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 cuándo existe un aumento, reducción o ningún efecto en el rendimiento de los flujos.
Esté siempre listo para renegociar y restablecer las expectativas con las partes interesadas de la empresa.
Escenario de ejemplo
Contoso Event Solutions ofrece un producto que el personal de recepción de eventos puede usar para escanear vales en un dispositivo móvil y permitir rápidamente la entrada a un lugar que requiera entradas para las personas autorizadas. El sistema está disponible con un modo completamente sin conexión y también como una versión conectada a la nube para lugares que busquen evitar la duplicación de vales. El modo sin conexión es muy eficaz, pero el modo en línea no cumplía sus objetivos de rendimiento. El equipo de desarrollo invirtió recientemente en un par de ciclos de desarrollo para trabajar en esta limitación, y ahora el rendimiento es mucho mejor y cumple los objetivos. Las partes interesadas de la empresa desean ampliar su base de clientes para dar soporte a lugares más grandes pronto.
Prueba del rendimiento en el desarrollo
Formalice las pruebas de rendimiento como puertas de calidad que puedan aprobar o denegar la promoción de versiones 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 el siguiente proceso. 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.
Desafío de Contoso
- El equipo ha invertido mucho tiempo y esfuerzo para lograr un rendimiento aceptable para la versión en línea de la aplicación, pero no tienen ningún sistema implementado actualmente para evitar una regresión.
- La siguiente característica que planea agregar es la posibilidad de que un lugar opte por requerir mostrar una imagen del asistente junto con un escáner de verificación adicional. Existe un riesgo de que la búsqueda y descarga de fotos adicionales ralentice el proceso.
- Sin un proceso formal en vigor, existe un riesgo de que el rendimiento de las versiones en línea y sin conexión pueda verse afectado negativamente por la funcionalidad adicional y puede no cumplir sus objetivos.
Aplicación del enfoque y los resultados
- El equipo integra pruebas de rendimiento automatizadas en la canalización de compilación. Al implementar criterios estrictos "go/no-go" basados en el rendimiento en la canalización de compilación, el equipo tiene más confianza en que la nueva característica no se va a publicar con una regresión de rendimiento.
- El equipo hizo bien en realizar estas pruebas, ya que detectó un error en la versión más reciente de la compilación. El error obligaba a la aplicación a intentar conectarse a Internet para descargar una imagen mientras el escáner estaba en modo sin conexión, lo que provocaba que se agotara el tiempo de espera con cada escaneado de ticket. La detección de este error con las pruebas automatizadas permitió al equipo corregirlo antes de lanzar la nueva versión.
Optimización a través de la observabilidad
Establezca un proceso repetible para supervisar las transacciones reales en producción y las desviaciones con respecto a sus objetivos de rendimiento. Además, utilice transacciones sintéticas en producción y establezca alertas de supervisión de las regresiones de rendimiento.
Desea conocer el rendimiento real de su sistema bajo cargas reales que no pueden simularse mediante pruebas. Así podrá identificar de forma proactiva problemas y áreas de mejora, como posibles cuellos de botella, recursos infrautilizados y otros problemas.
Desafío de Contoso
- Durante un evento en el que se utiliza la validación de entradas en línea, el sistema back-end se utiliza en gran medida.
- Existe un sistema de supervisión del rendimiento de las aplicaciones (APM), pero no se ha utilizado para supervisar el estado de las transacciones de producción.
Aplicación del enfoque y los resultados
- El equipo ha decidido adoptar procesos actualizados para capturar mejor las métricas de estado:
- Configuran alertas basadas en percentiles de rendimiento y para valores atípicos de rendimiento. Ninguna alerta indica que el sistema está realizando intervalos aceptables para la mayoría de escaneados de vales.
- Una vez completado un evento sin conexión, la telemetría de los escaneos de vales se carga por lotes y esas métricas también se someten a un proceso para buscar desviaciones del rendimiento aceptable.
- El equipo también implementa pruebas de transacciones sintéticas para aumentar su supervisión del rendimiento. Dado que casi todos los eventos tienen lugar los fines de semana y por la noche, el equipo usa pruebas de transacciones sintéticas a lo largo de la semana para generar una base de referencia de rendimiento más coherente.
Control de los cambios de carga de trabajo de forma inteligente
Solucione la erosión del rendimiento a medida que aumenta el uso, cambian las funciones y se acumulan datos con el tiempo para mantener el rendimiento. Restablezca las expectativas y establezca nuevos objetivos, si la optimización aporta solo ventajas a corto plazo.
Al adoptar este enfoque, 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 al optimizar el sistema que ya ha alcanzado su capacidad.
Desafío de Contoso
- El equipo de ventas ha estado incorporando activamente nuevos lugares de eventos al sistema. El negocio es bueno.
- El sistema de supervisión de cargas de trabajo ha empezado a observar que el presupuesto de rendimiento se consume más y más a lo largo del tiempo, incluso sin la introducción de nuevas características.
- Sin un cambio, esta trayectoria puede provocar una regresión inaceptable en el rendimiento, lo que pone la carga de trabajo en riesgo de sufrir una interrupción si se produce un incidente.
Aplicación del enfoque y los resultados
- El equipo se da cuenta de que, a medida que se incorporan más clientes, el mecanismo de búsqueda de datos para eventos en línea está realizando un examen muy grande sobre los datos de muchas consultas.
- Algunas optimizaciones de consultas han ayudado a evitar que el aumento del uso provoque daños adicionales. En los próximos meses, el equipo planea dividir diferentes eventos en distintas particiones de datos para reducir la necesidad de examen de consultas. Esto admitirá el escalado horizontal continuo de la carga de trabajo.
- También se dan cuenta de que pueden optimizar aún más el sistema para crecer mediante la eliminación de datos de vales de eventos antiguos. La búsqueda de eventos antiguos no es algo que el sistema de validación de vales deba hacer, de modo que los datos se puedan mover a un almacén dedicado para la creación de informes y la búsqueda histórica.