VSANYWHERE.COM @VS_ANYWHERE
Validando la escalabilidad y rendimiento de
la arquitectura
Luis Fraile – MVP Visual Studio ALM
VSANYWHERE.COM @VS_ANYWHEREVSANYWHERE.COM @VS_ANYWHERE
lfraile@lfraile.net
MVP Visual Studio ALM
@lfraile
Luis Fraile
VSANYWHERE.COM @VS_ANYWHERE
Hoy hemos visto
VSANYWHERE.COM @VS_ANYWHERE
¿pero va a funcionar?
VSANYWHERE.COM @VS_ANYWHERE
Volvemos al principio
VSANYWHERE.COM @VS_ANYWHERE
Que vamos a necesitar
VSANYWHERE.COM @VS_ANYWHERE
VSANYWHERE.COM @VS_ANYWHERE
Un experimento
Microsoft y Google experimentaron a introducir delays
artificialmente
Cambios:
Menor
satisfacción de
usuario (1%
aprox.)
Menor volumen
de uso de
servicios
Cuando
volvieron al
rendimiento
habitual:
El volumen de
uso de servicios
no volvió al
anterior
VSANYWHERE.COM @VS_ANYWHERE
¿Qué son las pruebas de carga?
Carga:
¿como responderá mi
aplicación ante la carga
esperada?
Rendimiento:
¿cómo de rápida
funcionará mi
aplicación?
Stress :
¿cuál es el punto de
rotura de mi aplicación
en carga de usuarios?
Capacidad:
¿podremos escalar hasta
la carga futura?
VSANYWHERE.COM @VS_ANYWHERE
Pruebas de rendimiento Visual Studio
Web Test //
Test unitarios
Load Test
Entorno de
pruebas
VSANYWHERE.COM @VS_ANYWHERE
Web Test y Load Test
Web Test
Capa HTTP
Lista de las solicitudes y
recopilación de datos de tiempo
No ejecuta script
Generación de carga en un
servidor
No se interacciona con
navegador
Load Tests
Tests a ejecutar
Patrón carga de usuarios
Mezcla de usuarios y tests
Simulación de red
Simulación user-agents
Configuración de ejecución
Contadores rendimiento
VSANYWHERE.COM @VS_ANYWHERE
Planificación
Preparación
Ejecución
Estrategia Pruebas
Instalación
Herramientas
Entorno Pruebas +
Datos
Diseño Casos de
Prueba
Estrategia Pruebas
Configuración
Monitores
Scripting
Smoke Test
Línea Base
Soak Test Pruebas Carga Otros
Stress
Informe Final
Pruebas de
Rendimiento
Análisis+Cambios+
Informes
•Establecer expectativas
•Planificación del proyecto
•Descripción del entorno
•Identificación responsables
•Descripción de los
escenarios de pruebas
•Descripción de los casos de
prueba
•Descripción de los
monitores
•Documento “vivo”
Entorno Pruebas + Datos
•Configuración Entono de
pruebas (pre-prod)
•Carga de datos
Instalación Herramientas
•Herramientas de pruebas
de carga
•Herramientas de
monitorización de sistemas
•Otras herramientas
(reporting...)
Diseño Casos de Prueba
•Transacciones
•Validaciones de imágenes
y texto
•Juegos de datos
Configuración Monitores
•Selección de las métricas
“potencialmente
interesantes”
•Selección de métricas
avanzadas
Scripting
•Convertir los casos de
prueba en scripts
automatizados
•La complejidad varia en
función de la herramienta
seleccionada
Smoke Test
•Verificar las fases
anteriores
•No aporta valor al
proyecto continuar si esta
fase no se completa
correctamente
Línea Base
•Establecer un estándar de
comparación inicial
•Si el rendimiento no es
bueno, no se debe
continuar con otros tipos
de pruebas
Pruebas de Rendimiento
•Proceso iterativo
•Mínimo 2 iteraciones
SOAK Test
Pruebas Carga
Otros
Stress
•Prueba opcional
•Solo si todas las pruebas
anteriores son satisfactorias
Informe Final
•Sumario de las pruebas
ejecutadas, problemas
encontrados y soluciones
aportadas
•Detallar en exceso cada
escenario de pruebas
ejecutado no aporta valor
•Se mantienen y ejecutan
durante toda la vida de la
aplicación
VSANYWHERE.COM @VS_ANYWHERE
Despliegue de
agentes
Instalación hardware
Aprovisionamiento de
equipos
Si bien puede ser:
Infraestructura de load testing on-premises




En muchas ocasiones es lo que necesitamos …
VSANYWHERE.COM @VS_ANYWHERE
Sólo pagamos por la
infraestructura
cuando la usamos
(recursos)
No necesitamos
infraestructura
propia
Los proyectos de
Load Testing On-
Prem son
compatibles
Mucha mayor
escalabilidad
Beneficios Cloud Load Testing
VSANYWHERE.COM @VS_ANYWHERE
Load Testing +
Cloud
DEMO
VSANYWHERE.COM @VS_ANYWHERE
¿Qué necesito?
Visual Studio Ultimate y cuenta en Visual Studio Online
Aplicación accesible desde internet
Se puede usar IP Range para aplicaciones detrás de firewall
15,000 minutos-usuario por mes
http://blogs.msdn.com/b/vsoservice/
VSANYWHERE.COM @VS_ANYWHERE
Monitorizar
Define
Desarrolla MonitorizarImplementar
Ciclos acortados
VSANYWHERE.COM @VS_ANYWHERE
La importancia de monitorizar
Validar el entorno ante los cambios
Funcionales
Carga de usuarios
Responder a problemas
Anticipar problemas
No sólo problemas
Investigar tendencias de usuarios
Toma de decisiones en inversión en aplicaciones
VSANYWHERE.COM @VS_ANYWHERE
Application insights
Paneles de estado
Personalizables con la
información que necesitamos
Usage Dashboards
Patrones de uso de los
usuarios de las aplicaciones
Notifications
Alertas vía email
VSANYWHERE.COM @VS_ANYWHERE
Integración con pruebas de carga
VSANYWHERE.COM @VS_ANYWHERE
Dificultades con Application Insights
Dos versiones
Visual Studio Online
Azure (Ibiza)
Aún en preview
Diferencias de funcionalidades entre las dos
No disponible para todos los servicios con toda las funcionalidades
VSANYWHERE.COM @VS_ANYWHERE
New Relic
Totalmente integrada en Azure
Disponibilidad para casi todo tipo de servicios
Es de pago
Pero
Carece de integraciones como Load Testing
Sin integración en Visual Studio
Más compleja (y más completa eso sí)
VSANYWHERE.COM @VS_ANYWHERE
Application Insights +
Load Testing
DEMO
VSANYWHERE.COM @VS_ANYWHERE
Conclusiones
La arquitectura es la base de la evolución del software, pero hay que
validarla en:
Capacidad
Escalabilidad
Punto de rotura
Las pruebas de carga se ejecutan durante toda la vida del software
Hay que evolucionarlas y hacerlas robustas
Tanto en su ejecución como en la vida: monitorización
VSANYWHERE.COM @VS_ANYWHERE
Preguntas
!!! Gracias !!!
lfraile@lfraile.net
TWITTER
@lfraile
https://www.desarrollaconmicrosoft.com/dotnetspain2015

Validando la escalabilidad de la arquitectura

Notas del editor

  • #18 [Entra Luis Fraile] Modern application development boils down to two key concepts: continuously deliver value to customers and users and rapidly respond to changes. Delivering at the pace your customers expect is all about cycle time and feedback loops. Application lifecycle management will help coordinate software development efforts from initial idea to delivery and allows you to respond to customer or user feedback in each phase. This isn’t a new story. ALM has been the norm for software development for the last 10 years. But let’s take a closer look at some emerging trends in the software development industry.