Il corso
Esploriamo i pattern di DDD e CQRS costruendo da zero un’applicazione a microservizi.

Nel mondo dello sviluppo software, il Domain Driven Design offre una chiave di lettura che ben si adatta alla crescente complessità che le aziende sono chiamate ad affrontare.
In questo corso ti porti a casa una chiara comprensione di questo approccio e delle sue potenzialità a livello organizzativo e architetturale. Ma questo è solo l’inizio.
A differenza di altri corsi, dove la teoria non ha poi un riscontro pratico, in questo corso lavorerai con i docenti allo sviluppo di una applicazione completa e funzionante. Questo ti permetterà di vedere concretamente come implementare i pattern di questo approccio, offrendoti una solida base di partenza per introdurre gli stessi concetti nelle tue applicazioni.
Il Domain Driven Design (DDD) è un approccio allo sviluppo che consente di tenere sotto controllo la complessità delle soluzioni software moderne. DDD offre strumenti concreti per suddividere le applicazioni in unità indipendenti, creando modelli comprensibili sia dagli sviluppatori che dagli esperti di dominio.
Ecco alcuni motivi per cui il DDD risulta utile nello sviluppo software:
Il DDD incoraggia gli esperti del dominio a lavorare a stretto contatto con gli sviluppatori, per comprendere a fondo il contesto del problema. Questa comprensione migliora la comunicazione tra gli sviluppatori e gli stakeholder del dominio, riducendo la possibilità di fraintendimenti.
DDD promuove l’uso di un “linguaggio ubiquo” condiviso tra sviluppatori e stakeholder del dominio. Ciò rende la comunicazione più semplice e fruttuosa, consentendo una rappresentazione più accurata del dominio nel codice.
Il DDD enfatizza la creazione di modelli mentali atti a catturare la comprensione del problema. Questi modelli si rivelano uno strumento fondamentale per
accelerare la definizione di possibili soluzioni e la loro conseguente implementazione.
DDD utilizza gli Aggregati per definire unità di consistenza transazionale. Questo approccio aiuta a gestire con precisione le regole di business all’interno del sistema.
Un modello di dominio ben progettato contribuisce alla creazione di un sistema scalabile e manutenibile. La struttura modulare e la chiarezza nel design semplificano l’evoluzione del software nel tempo.
Il DDD favorisce l’adozione di numerose altre buone pratiche di sviluppo, come ad esempio il Behavior-Driven Development (BDD) e lo sviluppo guidato dai test.
DDD integra ed esalta le pratiche dell’agilità. La focalizzazione sulla collaborazione, la comunicazione continua e la flessibilità nell’adattare il modello alle esigenze emergenti rende DDD un forte promotore dello sviluppo agile.
Una comprensione approfondita del dominio e la corrispondente modellazione riducono i rischi di implementazioni inadeguate, tardive, fallaci. La flessibilità delle implementazioni contribuisce a evitare costosi refactoring in fasi avanzate dello sviluppo, e consente repentini cambi di rotta quando il business lo richiede.
In sintesi, l’adozione del Domain-Driven Design consente la creazione di software robusti, adattabili e orientati ai bisogni di mercato e utilizzatori finali.
Questo si traduce in vantaggio competitivo per il business.
Realizzeremo un sistema composto da microservizi in grado di comunicare tra loro attraverso un service bus. Scriveremo insieme gli specification test per testare gli eventi dell’applicazione e di conseguenza garantire il corretto comportamento del nostro dominio. Vedremo come sia possibile gestire i “Long running process” e il pattern Saga. Ci occuperemo infine di versioning degli eventi: vedremo come gestire eventi che mutano nel tempo all’interno della nostra applicazione.
Una più estesa e approfondita trattazione di questi ultimi temi (CQRS, Event Sourcing, Long Running Processes) è affrontata nel corso “Event Sourcing e Testing del Dominio”, naturale completamento di questo percorso.
Il corso si svolge online. Sono previste 6 sessioni da 4h, pause comprese.
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 (ad es. Delle board virtuali su Miro).
L’approccio è interattivo: niente lezioni frontali, ma confronto, discussioni e sviluppo collaborativo. Per questo motivo, è richiesto che tutti i partecipanti abbiano la telecamera accesa per tutta la durata del workshop per una più efficace comunicazione.
Perché DDD
Strategic Patterns
Strategic Patterns
Tactical Patterns Introduction
Implementazione ed esercizi sui Tactical Patterns
Down to the code
Down to the code
Questi ultimi argomenti sono molto vasti e articolati. Una loro trattazione approfondita è oggetto del corso “Event Sourcing e Testing del Dominio”
Alberto è sviluppatore, architetto e formatore. Lavora principalmente con tecnologie Microsoft, ma ama spaziare in diverse tecnologie. Per lui scrivere software significa risolvere problemi di business e fornire valore al cliente. Trova che i pattern del DDD siano di grande aiuto per raggiungere lo scopo.
Alberto frequenta numerose community, condividendo le sue esperienze. È co-founder della community “DDD-Open” e membro attivo di altre community come la “Blazor Community Italia”. Collabora con Intré e Agile Reloaded.
Come molti della sua generazione, si è avvicinato alla programmazione quando gli regalarono un Commodore64: da lì, il passaggio dal giocare a cercare di fare un gioco fu breve ed iniziò ad appassionarsi ai linguaggi. A 16 anni passò ad un 8086 per poi seguire tutte le evoluzioni hardware, dei sistemi operativi e dei linguaggi di programmazione. Nel corso di ormai trent’anni passati nel settore IT, Alessandro ha sviluppato verticalizzazioni per gestionali, da zero per i più disparati ambiti e aiutato team nella loro formazione. È anche co-autore del libro “Cronache di Domain-Driven Design”, co-founder di “DDD Open” e di “Polenta and Deploy”.
I docenti apprezzano le domande!
Durante le giornate ci saranno diversi momenti dedicati alle domande, in modo che ogni partecipante possa chiarire i suoi dubbi e ottenere spunti per le particolari sfide che sta affrontando.
Se hai delle domande sugli argomenti che verranno trattati, dubbi o altre domande che vorresti fare ai docenti prima del corso, ti invitiamo a scorrere la pagina nel prossimo blocco “domande utili” e se non trovi ciò che fa al caso tuo, le puoi anticipare fin da subito compilando questo form.
Il corso si rivolge a sviluppatori software, team leader, architetti software, engineering managers, CTO e chiunque voglia vedere il Domain Driven Design in azione.
Ci sono alcuni prerequisiti per poter lavorare agli esempi di codice.
Serve una installazione funzionante del framework .NET Core (.NET Framework 7.0 o superiore), un IDE per scrivere codice in C# (Visual Studio, JetBrains Rider o VSCode). Useremo inoltre Git e Docker.
Qualche giorno prima del corso riceverete comunque una mail con tutte le istruzioni per arrivare preparati.
Gli esempi saranno in .NET e C#. La conoscenza del linguaggio è un vantaggio, ma non è fondamentale per la comprensione dei concetti.
Se possiedi un computer, una rete stabile (almeno 20 Mbps in download e 10 Mbps in upload), cuffie, microfono e videocamera, allora puoi iscriverti al corso senza problemi. Consigliamo ad ogni partecipante di seguire il corso dalla sua postazione: è preferibile non condividere il computer e la stanza con altre persone e colleghi per una migliore esperienza da remoto.
Sviluppare software è un’attività sempre più complessa. Le tecnologie da padroneggiare sono sempre di più, e i problemi da risolvere sempre più sfidanti. Un’azienda, un team, uno sviluppatore che non si dota di strumenti efficaci per gestire questa complessità si espone a innumerevoli rischi, in grado di minare la soddisfazione personale e il successo dell’azienda.
Questo corso farà di te un professionista più sicuro e competente nel creare soluzioni software sofisticate. Sarai in grado di applicare i principi del DDD per affrontare le sfide complesse del tuo dominio specifico e costruire soluzioni di alta qualità che si adattano alle esigenze in continua evoluzione del tuo progetto.
Il modo migliore per prepararsi è leggere qualche articolo introduttivo al Domain Driven Design, in modo da consentire ai docenti di accelerare l’introduzione dei concetti base e riservare maggiore spazio alle parti pratiche e di confronto. Una base di partenza potrebbe essere la “Domain-Driven Design Reference” di Eric Evans, ideatore di questo approccio.
Il corso si svolgerà online. Sono previste 6 mezze giornate (sessioni da 4h, pause comprese) distribuite nell’arco di 2 settimane.
No.
No, ma riceverete un attestato di partecipazione firmato e brandizzato Agile Reloaded.
Non trovi il corso che fa al caso tuo?
Vuoi partecipare al corso insieme al tuo team?
Vuoi portare il corso in azienda?