viernes, 18 de febrero de 2011

Segundo día en el Spring I/O 2011

#springio



Hoy he estado en la segunda jornada del Spring I/O 2011, asistiendo a las charlas del Track 2 (siguiendo con temas de Spring). Sólo he estado hasta el mediodía, así que he me he perdido las dos charlas de por la tarde.
Os comento mis conclusiones sobre las cuatro charlas a las que he asistido (las fotos de arriba son de ayer, hoy no he tirado):

In search of the grail of developer productivity - A Grails roadmap update (Graeme Rocher)
Charla del que es la cabeza visible del desarrollo en Grails para SpringSource. La verdad es que no he programado en Grails por lo que me he perdido un par de veces en la charla. Me ha gustado la pequeña demo de Spring Insight para monitorizar los beans del contexto de Spring.
En la charla se ha hablado sobre el futuro de Grails (Grails 2.0 está previsto para diciembre de este año).


Aplicaciones web ultraescalables con Redis (Alberto Gimeno)
Me ha encantado esta charla, la mejor con diferencia. He aprendido el uso básico de Redis de la mano de Alberto, que se ha pegado con esta base de datos NOSQL que permite hacer 100.000 operaciones en un segundo sin pestañear. Se trata de una base de datos basada en pares clave-valor al más puro estilo tablas hash. La principal ventaja es que es super rápida y escala hasta el infinito. Las desventajas: que como desarrollador tienes que implementar toda la lógica (hasta la de búsqueda), y que no es óptima para operaciones del estilo "LIKE" de SQL (ni por supuesto para Full Text Search).
Muy interesante la futura aparición de Redis Cluster, que va a permitir crear/eliminar nodos en caliente. Por ahora hay que conformarse con Redis Sharding, que nos obliga a hacerlo en frío con el servidor tirado.
Me ha encantado la arquitectura minimalista de esta base de datos, que por defecto guarda todo en RAM (aunque existe DiskStore para gestionar lo que se almacena en disco y/o en memoria).
Sus tres recomendaciones para cuándo usar Redis:
  1. Como caché de memoria (al estilo memcache, pero aprovechando que se tiene persistencia, soporte para expiración y estructuras de datos).
  2. Como Base de Datos auxiliar para cuando se necesita mucha velocidad
  3. Como Base de Datos principal (aquí creo que la decisión depende mucho del proyecto, en aplicaciones de gestión como las que hacemos en la Comunidad de Madrid, en las que hay búsquedas por la mayoría de los campos - al estilo LIKE - no lo veo viable).

Spring Mobile y Spring Android: Spring y el desarrollo para móviles (Daniel Jiménez Pérez)
Aunque Dani ha empezado algo nervioso, luego la charla ha ido rodada.
Se han expuesto las razones por las que uno debería plantearse una versión especial de su website para móviles:
  • Por el tamaño reducido de la pantalla - no se puede asumir que el cliente tiene una gran resolución.
  • Por la diferencia del dispositivo de apuntado (ratón vs dedo) - no hay que poner las cosas muy juntas.
  • Por el límite de ancho de banda de algunos dispositivos móviles - no hay que poner imágenes, html o css que pesen mucho.
Luego se ha hablado sobre la eterna duda: ¿Detectar el dispositivo en cliente o en servidor? Parece que Daniel tenía claro que es mejor utilizar, cuando se pueda, la detección en servidor.
Luego se ha hablado sobre Spring Mobile y Spring Android, por ahora están un poco verdes y ofrecen funcionalidad bastante limitada (en idealista todavía no lo usan en producción, están haciendo pruebas).


Spring Web Services: REST vs. SOAP (Sam Brannen)
Sam Brannen (que por cierto hablaba rapidísimo en inglés, a veces me he perdido), ha empezado contando los principios de los servicios web, y las dos aproximaciones (Contract Last o Contract First). Luego ha estado explicando cómo pueden hacerse servicios web con Spring+REST y Spring+SOAP, y ha mostrado un ejemplo con REST (no le ha dado tiempo a mostrar el de SOAP).
Parece que bastante gente utiliza servicios web con Spring. En la Comunidad de Madrid no utilizamos actualmente Spring MVC, para servicios web (tanto la parte cliente como la servidor) utilizamos Axis2. Me ha gustado la configuración con anotaciones (tanto con REST como con SOAP).

Esto ha sido todo, la verdad es que han sido dos días muy productivos. Espero poder asistir de nuevo el año que viene.

2 comentarios:

David Sabalete dijo...

Gracias por compartir tus conclusiones. Para la gente como yo, que le hubiera gustado estar y no pudo, son de agradecer.

Manuel Pereira dijo...

De nada David, gracias a ti por comentar, se siente uno más acompañado :-)
Un saludo.