mantenimiento y mejora continua de la performance de las aplicaciones
DESCRIPTION
¿Cómo se puede garantizar que la performance de los sistemas no empeore con el transcurso del tiempo? Si un sistema hoy responde rápidamente, ¿eso garantiza que seguirá siendo así en el futuro? De la misma forma que los sistemas, sus funcionalidades, el hardware, drivers, y sistemas operativos que les dan soporte van cambiando, también lo hace la carga sobre el sistema. La carga, entendida como la cantidad de usuarios que accede al sistema, la forma en que los usuarios ejecutan las funcionalidades, y el volumen de datos que debe ser procesado por las solicitudes del negocio son todos ejemplos de elementos que van cambiando durante la vida de una aplicación informática. A medida que el contexto va cambiando, el sistema debe adaptarse para mantener la calidad de la performance en las respuestas a sus usuarios. Luego que un sistema es puesto en producción comienza la etapa de mantenimiento. Para que el mantenimiento sea menor, se pueden realizar pruebas funcionales y no funcionales, con el objetivo de anticiparse a situaciones que ocurrirán en producción. La etapa de mantenimiento se caracteriza por ser tan larga cómo la vida del sistema. En esta etapa es donde ocurren todas esas situaciones inesperadas y todos los cambios en el ambiente a los que debemos adaptarnos. Es importante entonces mantener una permanente monitorización sobre los componentes del sistema con el objetivo de detectar problemas rápidamente y adaptar lo que sea necesario para solucionarlos. Monitorización y revisión de los tiempos de respuesta en los access logs de los servidores web y servidores de aplicaciones. Uso de los recursos (CPU, memoria, acceso a disco). Crecimiento de las tablas en la base de datos. Estos son algunos pocos ejemplos de indicadores que pueden ser monitorizados para conocer el sistema e identificar problemas. En esta charla veremos metodología, buenas prácticas, herramientas útiles y ejemplos para mantener y mejorar la performance durante la vida de los sistemas informáticos. Esta charla fue expuesta por Simon de Uvarow en el marco del Encuentro Internacional GeneXus 2014, #GX24TRANSCRIPT
#GX24#GX24
Adaptación y mejora continua de la performance de las aplicaciones
Simon De [email protected]
#GX24
¿Qué está pasando?
En el ambiente de testing
no hay problemas
Los servidores están sobrados
de recursos
La base tá’
tranquilaza
Grá f i c o ed
QUE J AS
#GX24
Mantenimiento
Mantenimiento y mejora de la performance de aplicaciones basada en:
• Registro / Bitácora de cambios• Conocimiento del funcionamiento interno de los
componentes utilizados• Monitorización
#GX24
Agenda
• Motivación – Problemas que se presentan en producción
• Conociendo el Sistema– Logs e indicadores disponibles en el ambiente
• Interpretando el Sistema– Herramientas
• Proceso– Proceso de mejora continua
#GX24
Problemas que se presentan en producción
Motivación
#GX24
Mantenimiento en producción
Cambios de personalCambios en el HardwareActualizaciones de Sistemas Operativos, Servidores de App, versión del framework, drivers, etc.Nuevas funcionalidades o cambios en existentesAumento volumen de la base de datosAumenta la carga del sistema (usuarios usando la app.)
Hay que estar preparados para conocer el impacto de los cambios, sobre todo los que están fuera de
nuestro control
#GX24
Mantenimiento en producción
Desde el punto de vista del usuarioEl sistema no responde El sistema responde, pero mensajes de errorEl sistema responde, pero muy “lento”
Desde el punto de vista de infraestructura“La CPU del servidor nunca sobrepasa el 40% de uso, hay gigas de memoria disponible, y tanto el disco como la red tienen recursos más que sobrados para operar correctamente.”
¿Entonces que pasa? ¿Porqué se cae? ¿Porqué está lento?
¿Qué está pasando?
Testing no encontró ningún
problema
Los servidores están sobrados
de recursos
La base tá’
tranquilaza
Gr á f i c oed
QUE J AS
#GX24
Mantenimiento en producción
Nos falta información para identificar el problema!
#GX24
Logs e indicadores disponibles en el ambiente
Conociendo el Sistema
#GX24
Herramientas de APM
Open Source Licenciadas
Helios OpNet – Riverbed
Moskito AppDynamics
Nagios New Relic
… …
#GX24
Diagrama de Infraestructura
Diagrama de infraestructura + Plan de Monitorización inicial
Balanceador
- Recursos de Sistema Operativo
- Access logs con tiempo de Resp.
- Logs del balanceador
- Recursos de SO- AccessLogs +
TdR- Uso de memoria
del proceso- Información de
aplicación: Exceptions Logs, GX Managment Enable
- Pools- …
- Recursos de SO- Locks / seg- SQLs más lentas
Cluster
App. Server 1 App. Server 2
Apps Apps
#GX24
Logs
#GX24
Logs
#GX24
Interpretando el Sistema
Herramientas para extraer la información dentro de los datos
#GX24
Recursos de SO
BalanceadorCluster
App. Server 1 App. Server 2
Apps Apps
UsuariosUsuarios
NMon – NMon Analyzer Perfmon – Genera logs y
gráficas
#GX24
Access Log Analyzer
BalanceadorCluster
App. Server 1 App. Server 2
Apps Apps
UsuariosUsuarios
#GX24
Access Log AnalyzerObservaciones:
- Balanceador NO distribuye equitativamente la carga entre los 2 servidores
- El pico es de casi 6000 pedidos / minuto en los 2 servidores
- Se identifican los momentos de menor carga para aplicar cambios en el ambiente
- La carga en el sistema es similar durante el período monitorizado
#GX24
Access Log AnalyzerObservaciones:
- Hay excepciones en los servidores (errores de programas) que llegan al usuario como errores HTTP 500.
- Se llegó a un pico de 140 excepciones en 1 minuto.
#GX24
Access Log Analyzer
Otros reportes posibles:• Top 5, 10, URLs más lentas de cada intervalo• Cantidad de HTTP reqs. Recibidos, agrupados por
código de respuesta• Cantidad de respuestas de cada intervalo,
agrupadas por tiempo de respuesta• Todos los tiempos de resp. de una determinada URL• URLs que más aparecen en el Top de todos los
intervalos• …
#GX24
Framework memory usage
BalanceadorCluster
App. Server 1 App. Server 2
Apps Apps
UsuariosUsuarios
GCViewer IBM Support Assistant + Plugins JVisualvm
#GX24
Framework memory usageObservaciones:
- Ambos servidores tienen suficiente memoria para operar.
- No se observa degradación en el uso de la memoria.
- Tiempo máximo de GC FULL fue menor a 1 segundo.
#GX24
+ Herramientas
Existen muchas herramientas para cada tipo de log.
En abstracta estamos desarrollando algunas que están liberadas a la comunidad. El código está disponible en GitHub.
https://github.com/abstracta/
#GX24
Interpretando el Sistema
A corregir
- Corregir la programación para que no lleguen errores HTTP 500 a los usuarios.
- Configurar correctamente el balanceador de carga.
#GX24
Proceso
Proceso de Mejora continua
#GX24
Proceso
Objetivos
Reconocimiento de la
infraestructura
Plan de monitorización
Aplicar la monitorizaci
ón
Análisis de los resultados
Cambios / Correcciones
Bitácora de cambios
Capacitación del
personal
#GX24
Proceso - Objetivos
¿Qué puedo hacer para mejorar los tiempos de respuesta?
¿Qué recurso está saturado?
¿Cuál es el cuello de botella que me va a impedir escalar en el
futuro?
¿Cuántos recursos requiere una aplicación dada determinada
carga en el sistema para responder correctamente?
¿Qué puedo hacer para que consuma menos recursos?
¿Qué puedo hacer para que demore menos?
#GX24
DevOp – Nuevo Rol de IT
Development + Operations + Servicios- Énfasis en la comunicación, colaboración e integración
entre desarrolladores y personal de ambientes o tecnología.
- Objetivos- Analizar resultados de monitorización en conjunto con
tecnología y desarrollo para mejorar la salud de los sistemas
- Desarrollo incorpora conocimiento de infra. a sus decisiones
- Tecnología adquiere conocimiento de las aplicaciones y sus requerimientos para sus decisiones
#GX24
Resumen
Mantenimiento y mejora de la performance de aplicaciones basada en:
• Conocimiento del funcionamiento interno de los componentes utilizados
• Registro / Bitácora de cambios
• Monitorización
#GX24
Temas relacionados
Hacer pruebas de performance para responder algunas preguntas planteadas en los objetivos de monitorización antes de pasar las aplicaciones a producción.
Trabajo en equipo. Son muchos sistemas, son complejos y usan muchas tecnologías / frameworks. Es importante apoyarse en el equipo. Desarrolladores + administradores trabajando juntos.
#GX24
¿Preguntas?