Si sente sempre più spesso parlare del pattern CQRS+ES (Command Query Responsibility Segregation con Event Sourcing), ovvero la separazione tra scrittura e lettura con l’ausilio di Comandi ed Eventi all’interno dell’applicazione, dei vantaggi e flessibilità che offre per poter scalare facilmente, e di microservizi con cui condire il tutto.
Ma quello che veramente manca è un esempio pratico, basato su un caso reale, di come crearli rispettando i buoni paradigmi del codice scritto bene, tra cui necessariamente la scrittura dei test degli eventi.
Per poter sviluppare un sistema che sia veramente reattivo bisogna necessariamente passare per la strada che porta alla gestione degli eventi e che sia “message driven”, nonché la gestione dei long running process, il versionamento degli eventi e il loro testing.
Nel workshop “Practical Event sourcing and Testing”, che si svolgerà online e in diretta, impareremo come gestire al meglio lo sviluppo di tale sistema.
Target Audience
Il workshop si rivolge a persone che hanno almeno una base di Domain-Driven Design e vogliono approfondire i temi CQRS, specification testing e Saga, lavorando hands-on su un caso pratico.
- Developer
- Software tester
Argomenti
- Domain-Driven Design: Approfondiremo insieme concetti importanti quali entity, value objects, aggregate e bounded context.
- EventStorming: Effettueremo l’analisi dell’applicativo che realizzeremo usando questo strumento estremamente potente e che deve far parte della cassetta degli attrezzi di ogni sviluppatore.
- CQRS+ES: vedremo come è strutturato un sistema a comandi ed eventi e su quali principi si basa.
- Realizzare un’applicazione: realizzeremo un sistema composto da microservizi che utilizzeranno un service bus per comunicare tra loro.
- Esercizi di testing: scriveremo insieme gli specification test per testare gli eventi dell’applicazione e di conseguenza garantire il corretto comportamento del nostro dominio.
- Long running process: realizzeremo un servizio che per operare deve attendere il verificarsi di più eventi distribuiti nel tempo;
- Versioning degli eventi: vedremo come gestire eventi che evolvono nel tempo all’interno della nostra applicazione.
Programma
Il workshop online e in diretta si svolgerà in quattro mezze giornate.
Le prime due mezze giornate saranno incentrate maggiormente sul lavoro di gruppo e affronteremo problemi di design.
Nel corso delle rimanenti due mezze giornate lavoreremo in pairing con gli strumenti per lavorare in C# (Visual Studio 2017/2019, Visual Studio Code, Raider, etc.), che sarà il linguaggio che useremo per realizzare la nostra applicazione.
Agenda
Modulo 1
- Presentazione workshop e Condivisione dizionario dei termini DDD
- Sessione di EventStorming
- Q&A
- Presentazione Muflone ed esplorazione delle parti salienti del codice,
- Intro a CQRS, Event sourcing ed Event store
- Q&A.
Modulo 2
- Esplorazione dell’infrastruttura dell’applicazione che i partecipanti hanno ricevuto prima che iniziasse il corso
- Trasformiamo i post-it in codice: scrittura di comandi ed eventi
- Q&A
- Sessioni di Mob Programming con pomodoro
- Q&A.
Modulo 3
- Recap e Q&A
- Versioning degli eventi
- Scrittura di un long running process: Cos’è e come funziona
- Scrittura di un long running process: Scrittura del codice in gruppi
- Q&A.
Modulo 4
- Scrittura di un long running process: continued
- Mob Programming con pomodoro: i partecipanti scrivono codice da zero usa
- Q&A.
Cosa impareremo
- Trasformeremo alcune delle user story che emergeranno nella sessione di EventStorming in codice funzionante.
- Svilupperemo due microservizi basati su CQRS ed Event Sourcing.
- Impareremo a testare il dominio tramite l’applicazione dello specification testing.
- Realizzazione di un long running process.
- Gestione del versionamento di eventi che inevitabilmente evolvono nel sistema.
Come si svolge
Il corso si svolgerà online e in diretta per un massimo di 16 persone: i docenti e tutti i partecipanti saranno in video conferenza e avranno a disposizione una serie di strumenti digitali per interagire tra di loro e lavorare hands-on.
Nonostante la modalità online, il corso mantiene il suo approccio interattivo e partecipativo.
Per questo motivo, è richiesto che tutti i partecipanti abbiano la telecamera accesa per tutta la durata del workshop per una migliore fruizione e comunicazione.
Non sarà un corso passivo, fatto solo di slide e video pre-registrati.
Applicheremo alcuni principi del metodo Training from the back of the room, con prevalenza di attività su lectures.
Alle poche definizioni teoriche si affiancano numerosi esercizi ed attività pratiche.
La condivisione tra i partecipanti ed il supporto dei trainer completano il quadro formativo.