Avanscoperta
Practical Event Sourcing and Testing Workshop

Practical Event Sourcing and Testing Workshop

Realizzare microservizi CQRS con event sourcing e testing degli eventi

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
  • Chill-out session (opzionale).

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
  • Chill-out session (opzionale).

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
  • Chill-out session (opzionale).

Modulo 4

  • Scrittura di un long running process: continued
  • Mob Programming con pomodoro: i partecipanti scrivono codice da zero usa
  • Q&A
  • Chill-out session (opzionale).

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.

F.A.Q.

Sono previsti requisiti minimi per poter partecipare a questo corso?
È richiesta una base di conoscenza di Domain-Driven Design.

Quale linguaggio verrà usato per gli esercizi durante il corso?
C#. La conoscenza del linguaggio C# è un vantaggio, ma non è fondamentale per la comprensione dei concetti che verranno illustrati durante il workshop.

Cosa bisogna fare prima del corso?
Avere installato Event Store, RabbitMQ e MongoDB. Forniremo anticipatamente, per email, tutte le istruzioni per arrivare preparati e non perdere tempo con le installazioni durante il corso.

Cosa devo assolutamente avere per potermi iscrivere a questo corso online?
Se possiedi un computer/tablet, una rete stabile (almeno 20 Mbps in download e 10 Mbps in upload), cuffie, microfono e videocamera, allora puoi iscriverti al corso senza problemi. Un paio di settimane prima del corso ti invieremo tutte le informazioni sugli strumenti che useremo e come accedervi.
Per la rete, prova a fare uno Speed Test.
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.

N.B.

Il workshop verrà confermato al raggiungimento dei numeri minimi di partecipanti utili alla sua attivazione. Invieremo comunicazione agli iscritti due settimane prima del workshop al più tardi.

Info pratiche sul workshop

Lingua: italiano.
Data e Orari: verranno comunicati a breve.
Numero massimo di partecipanti: 16.
Strumenti e postazione: il corso si svolgerà online e in diretta, attraverso l’uso di alcuni strumenti digitali. A iscrizione avvenuta, riceverai tutti i dettagli su come accedere al corso e interagire con il docente e gli altri partecipanti, e su come prepararti al meglio.

Vuoi saperne di più sui nostri biglietti?

Biglietti

Under_Cover_LearnerSCONTO 20%

Se ti stai iscrivendo al corso a titolo personale e non hai la Partita IVA, c’è una tariffa speciale per te: uno sconto del 20% sul prezzo corrente del biglietto, che potrai ottenere inserendo il codice Under_Cover_Learner su Eventbrite qui sopra, dove trovi "Enter promo code" (prima di premere il tasto "checkout").

N.B.: Il codice non può essere utilizzato con nessun’altra offerta, ed è valido su tutti i tipi di biglietto.

Testimonials…

Esperienza favolosa! Prima sperimenti come trovare la soluzione al problemi, poi ti viene mostrata una possibile via e alla fine lo implementi a modo tuo. :-)Gianni Bombelli

Alberto Acerbis

Alberto è socio fondatore di 4Solid S.r.L., una società di sviluppo e consulenza software che cerca di abbracciare la filosofia Agile, dove si occupa di sviluppo e saltuariamente di formazione.

Alessandro Colla

Alessandro è CTO di Evoluzione Telematica. Appassionato sviluppatore software da oltre 20 anni, costantemente alla "ricerca della verità" da quando ha iniziato a interessarsi alle pratiche Agile e al Domain-Driven Design.

APPROFONDIMENTI

Come testare il comportamento del dominio: il video del remote meetup con Alberto Acerbis e Alessandro Colla.

Chi siamo, in breve :)

Avanscoperta è un ecosistema in espansione fatto di professionisti con una grande passione per l’apprendimento: ci piace imparare cose nuove e scambiare esperienze e idee, esplorando territori finora inesplorati in ambito software, nella sua accezione più ampia possibile.

Selezioniamo con attenzione gli argomenti più rilevanti e i migliori docenti da tutto il mondo, e diamo particolare importanza alle tecniche di insegnamento, preferendo approcci pratici e coinvolgenti.
Unisciti a noi! 🙂

Ti interessa questo corso?

Se hai delle domande specifiche, o vuoi ricevere maggiori informazioni, scrivici. Saremo felici di risponderti!







NEWSLETTER

Vuoi ricevere una volta a settimana i nostri contenuti esclusivi su tecnologia, sviluppo software, business e design?

ISCRIVITI ALLA NEWSLETTER :-)

Iscriviti alla newsletter!