Hai mosso i primi passi in Domain-Driven Design e ti sei perso tra pattern, libri e concetti teorici?
Cerchi un posto in cui fare pratica per poi procedere senza indugio?
Vuoi modellare un’applicazione vera seguendo i principi del DDD?
Sei nel posto giusto!
Il workshop Domain Driven Design Made Simple con Luca Giovenzana e Gabriele Toselli è pensato per chi vuole capire Domain-Driven Design, partendo dai problemi quotidiani di chi sviluppa software.
I docenti ti guideranno passo dopo passo lungo un percorso chiaro e progressivo, che collega teoria e pratica, modellazione e codice, design e business.
Vedremo insieme implementazioni diverse degli stessi pattern, ne analizzeremo i pro e i contro, e ti forniremo gli strumenti per scegliere consapevolmente.
Docenti
Luca Giovenzana e Gabriele Toselli, rispettivamente CTO di Golee e Senior Backend Engineer in Serenis.
Luca e Gabriele hanno unito tutta la loro conoscenza di DDD e la loro esperienza su domini reali per creare il workshop che mancava: il corso Domain-Driven Design che loro stessi avrebbero voluto seguire quando hanno iniziato.
Cosa impareremo
Al termine di questo workshop, sarai in grado di:
- Modellare un dominio complesso e tradurlo in un codice pulito, leggibile e manutenibile, allineato alle esigenze reali del business.
- Sperimentare EventStorming come strumento di modellazione collaborativa che facilita la comunicazione con gli stakeholder, trasformando la comprensione del dominio in codice.
- Implementare i pattern tattici DDD come Aggregate, Entity, Value Object e Repository.
- Progettare architetture backend che applicano i principi del DDD, dell’Architettura Esagonale e della separazione Command/Query, scegliendo pragmaticamente l’approccio più adatto in base al contesto.
- Scomporre domini complessi in Bounded Contexts chiari, favorendo alta coesione e basso accoppiamento tra le diverse aree del sistema.
Target Audience
Questo workshop è pensato per:
- Sviluppatori che cercano un’introduzione pratica al Domain-Driven Design, immediatamente spendibile nello sviluppo di tutti i giorni
- CTO di Startup che vogliono modellare software con i principi DDD, evitando complessità inutili
- Chiunque desideri vedere un esempio concreto e “production ready” di applicazione backend che segue i principi DDD, implementata in TypeScript.
Argomenti
- Esperti di dominio per creare modelli di dominio
- Sviluppo iterativo e incrementale di requisiti
- Pattern tattici DDD: Aggregate, Entity, Value Object , Repository
- Da EventStorming a codice e viceversa
- Bounded Context: separare e modellare concetti sovrapposti
- Domini: organizzare il problemi di business in aree distinte
- Approcci al test unitario, di integrazione e di componente
- Hexagonal Architecture (port & adapters)
- Message bus: approcci diversi alla comunicazione tra bounded context
- CQS / CQRS: compromessi diversi per implementare una separazione tra comandi / query, write model / read model.
Agenda
Creiamo un modello di dominio
- Esperti e modelli di dominio
- Modellazione di un dominio con test e logica pura
- Stesso nome, significati diversi
- Identificare Bounded Context e domini usando EventStorming.
Costruiamo un’applicazione reale
- Persistenza di un modello di dominio
- Architettura di un’applicazione backend
- Individuare comandi, aggregati e invarianti
- Policy e comunicazione tra bounded context
- Separare i modelli di scrittura da quelli di lettura.
Come si svolge
Questo è un workshop di 1 giornata in presenza completamente hands-on.
Lavorerai in coppia sviluppando in Typescript (non servono conoscenze pregresse, gli esercizi sono molto semplici e guidati).
Potrai modellare il dominio, fare design e costruire un’applicazione web completa.
FAQ
Sono previsti requisiti minimi per poter partecipare a questo corso?
Il corso è introduttivo tuttavia per poter comprendere a pieno i concetti e i pattern tecnici è necessario avere le basi di programmazione.
Sono necessarie conoscenze pregresse di Domain-Driven Design?
No, il corso introduce in modo graduale tutte le conoscenze necessarie per partecipare attivamente e completare con successo tutti gli esercizi durante il corso.
Devo installare qualcosa sul mio laptop?
Sì, un ambiente per lo sviluppo Node.js.