Per poter sviluppare un sistema in stile DDD, che sia veramente reattivo, bisogna necessariamente passare per la strada che porta alla gestione degli eventi e che sia “message-driven”, nonché alla gestione dei long running process, al versionamento degli eventi e il loro testing.
Nel workshop DDD in produzione, impareremo con Alberto Acerbis e Alessandro Colla come gestire al meglio lo sviluppo di tale sistema, grazie a un esempio pratico, basato su un caso reale.
Target Audience
Il workshop si rivolge a software developers e tester che hanno una buona conoscenza di Domain-Driven Design e vogliono approfondire i temi CQRS, specification testing e Saga, lavorando hands-on su un caso pratico.
Al momento dell’iscrizione al corso, verrà regalata una copia digitale del libro Cronache di Domain-Driven Design (pubblicato da Avanscoperta).
La lettura della prima parte del libro, è un requisito per poter accedere e partecipare al corso.
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
Le prime due mezze giornate saranno incentrate maggiormente sui problemi di design; nel corso delle rimanenti due mezze giornate lavoreremo in pairing in C# (Visual Studio 2017/2019, Visual Studio Code, Raider, etc.) per realizzare la nostra applicazione.
Agenda
Il workshop prevede l’alternanza continua di spiegazioni, esercizi (di gruppo e individuali) e discussioni. Ciascun giorno si aprirà con un recap del modulo precedente, con ampio spazio a domande e risoluzione di punti in sospeso.
Modulo 1
- Descrizione del core domain e obiettivi del corso
- EventStorming: perché è utile ed esercizi
- Strategic patterns: scrittura codice ed esercizi.
Modulo 2
- Tactical patterns e scrittura aggregati
- Applicazione CQRS al progetto
- Esercizi: scrittura aggregati.
Modulo 3
- Applicazione Event Sourcing ed evoluzione del codice
- Testing degli eventi
- Evolviamo l’applicazione: come cambiano gli eventi al cambiare dei requisiti business?
- Esercizi: come mantenere la compatibità dei vecchi eventi
Modulo 4
- Versioning degli eventi
- Long-running process (saga e process manager)
- Applicazione finale: dove siamo arrivati
- Q&A finale
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.
Perché partecipare
Lo scopo del corso è dimostrare che una cosa che sembra difficile non è poi così difficile. Con Alberto e Alessandro scopriremo perché le tecniche applicate durante il corso non devono fare paura.