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

Post on 01-Jun-2015

620 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related