Skip to content

Instantly share code, notes, and snippets.

@luque
Last active October 25, 2017 13:08
Show Gist options
  • Save luque/dafc1851b599f39ba0070ceab8ff47c6 to your computer and use it in GitHub Desktop.
Save luque/dafc1851b599f39ba0070ceab8ff47c6 to your computer and use it in GitHub Desktop.
ES y CQRS desde las trincheras - Nota preparatorias
* Descripción
Event sourcing es una aproximación distinta de la tradicional (salvo en algunos sectores) al concepto de persistencia
de una aplicación, que aunque ni mucho menos nueva, está empezando a considerarse cada vez con más frecuencia como una
opción interesante en algunos contextos.
Tanto event sourcing como CQRS (Command-Query Responsibility Segregation) constituyen un potente paradigma de arquitectura
del que se puede sacar un gran partido, pero que como todo, no está exento de trampas a evitar y detalles a tener en cuenta
si se quiere aplicar con éxito.
En OSOCO hemos aplicado en profundidad la arquitectura ES/CQRS en nuestro último proyecto y hemos tenido la ocasión de
aprender en nuestras propias carnes algunas lecciones valiosas cometiendo numerosos errores por el camino.
El objetivo de esta charla es sintetizar nuestra experiencia durante estos últimos meses en forma de errores a evitar,
detalles importantes que debes tener presentes y recomendaciones que te pueden salvar el pellejo, empleando para ello
ejemplos prácticos basados en un caso real.
* Idioma: Español.
* Duración: 45 min.
* Nivel: Intermedio.
* Autores:
- José San Leandro
- Víctor del Valle
- Rafael Luque
- Julio Ripoll
- José Canfrán
* Características fundamentales de la charla:
- Tono "desde las trincheras", es decir, charla de desarrolladores para desarrolladores. El objetivo no es presentar una
solución perfecta ni una "bala de plata", sino desde la humildad tratar de identificar los principales errores en nuestro
acercamiento a la arquitectura CQRS/ES y plantear soluciones que sean de utilidad para otros desarrolladores.
- Donde sea posible emplear casos extraidos de nuestra experiencia en proyectos reales y código, incluso código funcionando,
para ilustrar y apoyar nuestra argumentación, evitando caer en divagaciones demasiado teóricas.
- No enamorarnos de nuestra solución ni del paradigma. Ser capaces de presentar conclusiones objetivas sobre las ventajas
e inconvenientes de su uso.
- Involucrar a la audiencia recabando su feedback en determinadas ocasiones. Incluso en función de este feedback se podrían
plantear diferentes itinerarios ligeramente distintos. Por ejemplo, describiendo en mayor o menor profundidad en qué
consiste ES y CQRS.
* Objetivos perseguidos:
- La preparación de la charla debe cambiarnos (mejorándonos) a los ponentes y preparadores. Servirá de catalizador de
cambios y mejoras en la arquitectura, o al menos de un análisis más detallado de la misma, sus bondades e inconvenientes.
- La charla también debe "mejorar" a sus receptores. Perseguimos:
- Que obtengan una idea clara de los conceptos de ES y CQRS.
- Que tengan claro que no es la panacea.
- En un sentido más práctico que comprendan:
- Escenarios más indicados y menos para su aplicación.
- Ventajas.
- Inconvenientes.
- Detalles a tener en cuenta para evitar algunos de los errores que nosotros hemos cometido.
* Agenda:
1. Presentación.
2. Objetivos de la charla.
3. Intro a CQRS y ES.
4. Descripción del caso de estudio (BATS/Contestia?):
- Descripción de la aplicación.
- Descripción del equipo.
- Descripción del contexto.
5. "Uhmm, un proyecto greenfield... ¿probamos CQRS/ES?"
- ¿Por qué decidimos usar CQRS/ES en este caso?
- Nuestras lecciones aprendidas sobre en qué escenarios conviene más CQRS/ES:
- Pros/Cons
- CQRS vs...
6. "Tips, Tricks and Gotchas" o "La letra con sangre entra" (ie. nuestra selección de errores y lecciones aprendidas)
6.1. TBD
6.2. TBD
6.3. TBD
...
6.10 TBD
7. Conclusiones
8. Recursos
9. Feedback form
10. Q&A
* Formato del material de presentación:
- TBD
* Puesta en escena:
- TBD
* Referencias:
- Sagas:
-- http://microservices.io/patterns/data/saga.html
-- https://www.youtube.com/watch?v=YPbGW3Fnmbc
- Versioning of events in Event Sourced systems:
-- https://www.infoq.com/news/2017/07/versioning-event-sourcing
-- https://leanpub.com/esversioning
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment