Aplicación web de gestión de bases de datos
NoSQL a través de Apache Gora, en ExtJS y
servicios REST en Spring
Alfonso Nishikawa Muñumer
Director: Miguel Rodríguez Penabad
Grado en Ingeniería Informática Mención en Ingeniería del Software
Proyecto clásico de Ingeniería Facultad de Informática
• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos • Conclusiones
2 / 42
Motivación
BD NoSQL
BD NoSQL Aplicación desarrollada
• Inexistencia de aplicaciones de acceso genérico a datos NoSQL
• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos • Conclusiones
4 / 42
• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos • Conclusiones
6 / 42
• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos • Conclusiones
Metodología (Scrum)
• Historias de Usuario • Requisitos • Product Backlog • Scrum 8 / 42• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos • Conclusiones
Historias de usuario
• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos • Conclusiones
Plan de entregas
• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos • Conclusiones
Ejemplo de sprint (I)
• Sprint Planning, sprint 3
Ejemplo de sprint (II)
Ejemplo de sprint (III)
• Daily Scrum
• Actualización de avance • Gráfica de burn-down
Ejemplo de sprint (IV)
Ejemplo de sprint (V)
• Desarrollo
Ejemplo de sprint (VI)
Ejemplo de sprint (VII)
• Sprint Review
• Lista de vídeos: https://youtu.be/TTtoRh5aaDI
Ejemplo de sprint (VIII)
• Sprint Retrospective
• Personas, procesos, relaciones y herramientas • ¿Qué se hizo bien?
• ¿Qué se hizo mal?
• ¿Qué se puede hacer para mejorar?
Ejemplo de sprint (IX)
• Daily Scrum sprint 2
• Gráfica de burn-down no siempre perfecta
Ejemplo de sprint (X)
Ejemplo de sprint (XI)
• Sprint Review: estimación del plan de entregas
Ejemplo de sprint (XII)
Ejemplo de sprint (XIII)
• Sprint Review: estimación del plan de entregas
Ejemplo de sprint (XIV)
Ejemplo de sprint (XV)
• Sprint Review: estimación del plan de entregas
Ejemplo de sprint (y XVI)
• Sprint Retrospective
• Deuda técnica • Documentación
• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos
• Conclusiones
30 / 42
Arquitectura (II)
Arquitectura (IV)
Componentes técnicos (I)
• Jerarquía de clases que define un esquema y mapeo
Componentes técnicos (II)
Componentes técnicos (y III)
• Patrón Estado para el asistente
• Motivación
• Product Vision Box • Demo • Desarrollo • Metodología (Scrum) • Historias de Usuario • Plan de entregas • Ejemplo de sprint
• Arquitectura y componentes técnicos • Conclusiones
Conclusiones
• Desarrollado una aplicación web y servidor durante 9 sprints: En ExtJS y servicios REST en Spring. Licencia efectiva GPLv3
• Funcionalidades: • Gestión de datos.
• Gestión de esquemas y mapeos.
• Instalación fácil mediante un único .war
• Integración parcial para acceso a datos en Hadoop. • Solución de bugs e issues de proyectos de software
libre: GORA-109/421/510/511/530, NUTCH-1741, Ext JS
Conclusiones: Lecciones aprendidas
• Spring (MVC, REST, Security, Data JPA) , JPA, Ext JS, Swagger, Flyway, Siesta, Gettext, patrón MVVM,
historias de usuario, SCSS, CORS, Amazon EC2, JsDuck, SQLite,…
• Puesta en práctica de Scrum.
• Estimar las historias de usuario como puntos de dificultad.
• Verificar los Requisitos No Funcionales sprint a sprint. • Errores cometidos en el proyecto:
• Expectativas irrealistas.
Conclusiones: Trabajo Futuro
• Historias de usuario pendientes para
desarrolladores, administradores y managers. • Soporte para más almacenes de datos
• Adaptación a dispositivos móviles • Sobre Apache Gora:
• Implementación del API JPA: definir entidades mediante anotaciones
• Optimizaciones de serialización y compresión
• Mayor flexibilidad de mapeo del módulo de HBase • Nuevos conectores