Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

19
Desarrollo de aplicaciones en la nube con Scrum y XP Leo Antoli - Iván Zaera

Transcript of Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Page 1: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Desarrollo de aplicaciones en la nube con Scrum y XP

Leo Antoli - Iván Zaera

Page 2: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Agenda

Introducción a la charlaIntroducción a cloud computingTemas de metodologias ágiles sobre cloud computingTemas complementarios / QA

Page 3: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Introducción - Cloud computing

Page 4: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Introducción - Capas

SaaSPaaSIaaS

FacturónGoogle Docs

Google App EngineMicrosoft Azure

Amazon EC2

Page 5: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Introducción - Precio

Page 6: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Introducción - Mantenimiento

Page 7: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - Introducción

Desarrollo en nubes IaaSComo un hosting avanzado Desarrollo tradicional

Desarrollo en nubes PaaSAlta escalabilidad y distribuciónHosting escalable como commodity

Google App Engine: a favor y en contra

"Cambios" en Scrum

Page 8: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - Limitaciones

Peticiones limitadas a 30 segundos de tiempo realSe solucionan con cron y cola de tareas

Alta distribución en la ejecución de peticionesPeticiones de la misma sesión pueden ser ejecutadas en distintas máquinas

La sesión tiene que ser serializable y no puede ser stickySe persiste en la cache de GAE

White list del API de Java

La base de datos es no-SQL (DataStore)

Page 9: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - Rendimiento

Cola de tareas: API experimentalSe crean tareas desde las peticiones de clientesSe implementan como cualquier otra petición HTTPTodavía limitado a 30 segundos, pero lo van a cambiar

Servicio memcache

Cacheo agresivo de datos distribuidoCon timeouts y control de recursosImplementa el API JSR 107 pero también hay otro de bajo nivelControl concurrente similar a ConcurrentHashMap

Page 10: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - SQL vs No-SQL

Dense scan indexRange scanEntity groups & ancestorsMerge joins!=, IN, AND, 3 reglas, MVPjoins, OR unset, nonindexed properties GAE Business

Ryan Barrett - Google I/O 2008

Page 11: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - Manejo de la sesión

Tiene que ser serializable y no hay sticky sessionSe esta evaluando la posibilidad de sticky

Cuanto menos estado tengamos en sesión mejor

Dificultad en desplegar frameworks centricos en servidorJSF, Vaadin, ZK, ...Mejor usar Struts, WS, REST o servlets RPC

Mejor usar frameworks centricos en cliente

GWT, jQuery

Page 12: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - Pruebas en servidor

http://code.google.com/p/kotori/wiki/KotoriWebJUnitRunner

Mike Cohn

Page 13: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Ejecución complicada por depender del navegadorSoporte JUnit para GWT: pero lento, muy lentoSe propone usar el patron MVP

P

Metodología - Pruebas en cliente

M V1

C V2SERVIDOR

CLIENTE

TESTABLE NO TESTABLE

Page 14: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - TDD / ATDD

http://wellington.pm.org/archive/200606/tdd/slide10.html

Page 15: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - Seguridad

Google -Bélgica

Page 16: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - Autenticación y autorización

Page 17: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Metodología - Versionado

GAE permite tener accesibles varias versiones de la misma aplicación

Existe una privilegiada: la versión por defectoSe puede usar como entornos: dev, pre, pro, ...Se puede usar como entornos de clienteSe puede usar como versiones funcionales: 1.0, 2.0, ...

Permite realizar experimentos de UI

Hay que tener cuidado con la sesión: se puede serializar en una versión anterior y despertar en la nueva

Page 18: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Preguntas habituales

1. ¿Hay que hacer algún cambio fundamental (y cuáles) en Scrum para que se adapte bien a proyectos hechos para entornos de cloud computing?

2. ¿Cómo hacer TDD, pruebas automáticas, integración continua y demás prácticas de XP en estos entornos? ¿Hay buenas prácticas para estos entornos que no sean aplicables a entornos más tradicionales?

3. ¿Cómo afecta al diseño emergente el que se usen bases de datos no relacionales?

4. La aplicación se acopla a la plataforma elegida y después es muy difícil cambiarlo.

5. No tengo control sobre la infraestructura, rendimiento, etc.6. Son tecnologías nuevas, mi gente no sabe de ellas, etc.7. Hay que hacer pruebas de rendimiento, carga, etc., aunque el entorno

utilizado supuestamente se encargue automáticamente de escalar.8. Las aplicaciones y datos en la nube no son seguras, no se que pasa con

ellas.

Page 19: Cas2010 desarrollo-de-aplicaciones-en-la-nube-con-scrum-y-xp

Temas complementarios