Upload
agile-spain
View
621
Download
0
Embed Size (px)
Citation preview
Desarrollo de aplicaciones en la nube con Scrum y XP
Leo Antoli - Iván Zaera
Agenda
Introducción a la charlaIntroducción a cloud computingTemas de metodologias ágiles sobre cloud computingTemas complementarios / QA
Introducción - Cloud computing
Introducción - Capas
SaaSPaaSIaaS
FacturónGoogle Docs
Google App EngineMicrosoft Azure
Amazon EC2
Introducción - Precio
Introducción - Mantenimiento
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
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)
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
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
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
Metodología - Pruebas en servidor
http://code.google.com/p/kotori/wiki/KotoriWebJUnitRunner
Mike Cohn
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
Metodología - TDD / ATDD
http://wellington.pm.org/archive/200606/tdd/slide10.html
Metodología - Seguridad
Google -Bélgica
Metodología - Autenticación y autorización
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
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.
Temas complementarios