Most Active Speaker

Alberto Acerbis

Alberto Acerbis

Passionate dev, Microsoft MVP, author, learner

Passionate dev, Microsoft MVP, author, learner

Brescia, Italy

Actions

I am a lifelong learner, driven by the endless nature of technology. While I primarily define myself as a backend developer, I’m not afraid to explore the frontend when needed. For me, software development is about solving business problems and delivering value to customers, where Domain-Driven Design (DDD) patterns play a crucial role. I work as a software engineer at Intré, a company that shares this philosophy. As an introvert, stepping into the spotlight doesn’t come naturally to me, but I’m passionate about stepping outside my comfort zone to share what I’ve learned and continuously grow. I’m active in the tech community, contributing where I can, and co-founded the DDD Open and Polenta and Deploy communities. I’m also an active member of Blazor Developer Italiani and other groups. Additionally, I am an Microsoft MVP, a Azure Solution Architect and Azure IoT Developer.

Sono fondamentalmente un eterno studente, perchè la materia di studio è infinita. Mi sono sempre definito uno sviluppatore backend, ma non disdegno di curiosare anche dall'altra parte del codice. Mi piace pensare che 'scrivere' software significhi soprattutto risolvere problemi di business e fornire valore al cliente, e in questo trovo che i pattern DDD siano di grande aiuto. Lavoro come software engineer presso Intré, un'azienda che sposa questa ideologia; da buon introverso, trovo difficile uscire allo scoperto, ma mi piace uscire dalla mia comfort zone per condividere con gli altri le cose che ho imparato, in modo da trovare ogni volta gli stimoli giusti per continuare a migliorare. Mi piace frequentare il mondo della comunità, contribuendo, quando posso, con proposte attive. Sono co-fondatore delle comunità DDD Open e Polenta e Deploy, e membro attivo di altre comunità come Blazor Developer Italiani.
Sono un MVP Microsoft, un Azure Solution Architect e Azure IoT Developer.

Awards

  • Most Active Speaker 2023

Area of Expertise

  • Consumer Goods & Services
  • Finance & Banking
  • Information & Communications Technology
  • Manufacturing & Industrial Materials
  • Real Estate & Architecture

Babbo Natale teme il Chaos e vuole Monitorare le sue Applicazioni

Babbo Natale sa che deve tenere sotto controllo i suoi sistemi se viole essere certo di poter consegnare tutti i regali in tempo. Per questo motivo ha chiesto agli Elfi di aggiornarli e di trovare il modo di renderli più robusti. I poveri Elfi hanno trovato prima una soluzione abbastanza articolata, ma funzionante, ma poi hanno scoperto che il Team di .NET ha trovato la soluzione facile per loro ... anche se hanno già un'applicazione funzionante e deployata! Quale? Beh, è una sorpresa

DDD e CQRS in salsa .NET 20 anni dopo

Sono passati vent'anni dall'uscita dalla nascita di Domain-Driven Design, un approccio domain-centrico al problema dello sviluppo del software. Nel suo iconico libro E. Evans parla di pattern strategici e pattern tattici.
I primi sono fondamentali per impostare adeguatamente l'architettura della nostra applicazione, i secondi per realizzarla.
A corollario del lavoro di Evans, pochi anni dopo l'uscita del libro, Greg Young ha introdotto un pattern destinato a cambiare il modo di sviluppare le nostre applicazioni, almeno alcune di esse, CQRS.
Attorno a questo pattern sono nate alcune convinzioni non esattamente veritiere, come ad esempio "Non posso applicare CQRS senza EventSourcing", siete sicuri?
Domain-Driven Design può convivere con CQRS, ma può farne a meno.
CQRS può convivere con EventSourcing, ma può farne a meno.
Vediamo come con esempi in .NET

Data Mesh: aka DDD in the data world

Siamo tutti affamati di dati. Ne abbiamo bisogno per alimentare i nostri modelli di ML, per mantenere dashboard e per fornire statististiche sempre più accurate. L'attuale gestione di questi dati però scricchiola, è in affanno, serve un nuovo approccio. I Datawarehouse, con le rigide regole di accesso, ci impediscono di scalare facilmente e velocemente come vorremmo. Come risolviamo il problema?
Possiamo aspettarci un contributo da DDD?
Data Mesh è un paradigma sociotecnico decentralizzato che tratta i dati come un prodotto, considera i domini come una preoccupazione primaria, applica il pensiero della piattaforma per creare un'infrastruttura di dati self-service e introduce un modello computazionale federato di governance dei dati.

Sei sicuro di conoscere Azure ServiceBus?

Lo sviluppo di sistemi distribuiti implica necessariamente la comunicazione fra i diversi componenti della nostra architettura.
Azure ServiceBus è sicuramente uno strumento potente, ma sappiamo sfruttare al meglio una coda? Ed un topic?
Dobbiamo creare code e topic manualmente, o possiamo delegare il compito alla nostra applicazione?
Come possiamo essere certi che il nostro codice non invii un evento su una coda ed un comando su un topic?
Un Muflone ci aiuterà nell'arduo compito!

Dimostrami che usi Azure ServiceBus senza dirmi che usi Azure ServiceBus

Lo sviluppo di sistemi distribuiti implica necessariamente la comunicazione fra i diversi componenti della nostra architettura. Abbiamo bisogno di conoscere diversi broker, il loro funzionamento e la loro configurazione; dobbiamo sapere che differenza c'è fra una queue ed un topic, cosa spedire su una queue e cosa pubblicare su un topic, ad esempio. Soprattutto dobbiamo essere sicuri di non inviare messaggi su una coda, quando andrebbero inviati su un topic, e viceversa.
Ed infine, abbiamo bisogno di passare da un broker in locale, per test e sviluppo, ad un broker in cloud per la produzione ... come sopravviviamo? Astraendo ovviamente!

Who fear the saga?

Saga: a long story of heroic achievement.
This is why sagas are often perceived like a complicate piece of software.
How does it works? How many types we can choose from? How much business logic it is allowed inside?
In this workshop we will discover that it is not that complicated to create one, we will build one from scratch and discover how we can apply specification by example to test its behaviors.

Bounded Context is not Enough!

When we consider to create a distributed system, frequently we use Bounded Contexts to handle specific business functions within clearly defined boundaries.
But is this enough? What about the static dependencies that each microservice has with the database or the servicebus or even with the frontend?
In this workshop we will explore the concept of Architectural Quantum (an independently deployable component with high functional cohesion) and how it can help us to create a distributed system with a clear separation of concerns.
Join us to discover a way to implement this architectural solution.

Tackling Chaos, Resilence & Metrics in the heart of your Application

Con la diffusione dei microservizi e delle architetture cloud distribuite, il web è diventato sempre più complesso. Tutti noi dipendiamo da questi sistemi più che mai, eppure i bug sono diventati molto più difficili da prevedere.
Il Chaos Engineering è un approccio disciplinato per identificare i bug prima che diventino vere e proprie interuzioni di servizio. Ma come si testa la risposta di un sistema sotto stress per identificare, e prevenire, le debolezze? Recentemente .NET ha messo a disposizione, direttamente nel framework, tutto il necessario per implementare esperimenti di Chaos nel codice. Vediamo come.

Tackling Chaos, Resilence & Metrics in the heart of your Application

In a world made of distributed services, where communication among them is a fundamental part of our application's functioning, it is crucial to increase the resilience of our applications. Distributed systems are inherently more complex than monolithic ones. It's difficult to predict all the ways they might fail, just think about the "eight fallacies of distributed systems". Chaos Engineering is a practice that aims to help us improve our systems, teaching us new things about their functioning under pressure conditions. There are several tools that support us in this area, but finally, we have everything available directly in the .NET framework. Let's see how to leverage it.
In this workshop we will get our hands dirty creating an API we will go querying injecting Chaos in the system to see how to insert resilience in our applications

Design Patterns for Distributed Systems

Distribuire applicazioni tramite Azure comporta un radicale cambiamento nell'approccio della progettazione. Tool come Aspire, o Dapr, ci facilitano certamente la vita, ma nel Cloud è importante sapersi muovere in autonomia. Le sfide principali da affrontare sono il Data Management, il Design and Implementation e ovviamente il Messaging. Il data Management rappresenta una delle chiavi fondamentali in un'applicazione cloud, in quanto i nostri dati saranno distribuiti su più fonti. Questo comporta una progettazione ed un'implementazione che deve affrontare sfide come coerenza e consistenza, il tutto passando dalle code di Azure per garantire basso accoppiamento fra i servizi. Facciamo il punto e vediamo come implementare un sistema simile

Una Saga salverà il Natale?

Come ogni anno il Babbo più famoso della storia è alle prese con i regali di Natale.
Deve orchestrare tutte le operazioni necessarie affinchè nessun bambino sia escluso.
Catalogare le letterine, raggrupparle, verificare la bontà dei bambini che le hanno inviate, caricare la slitta e preparare le renne per la consegna.
Riuscirà la nostra Saga ad aiutarlo ad orchestrare il tutto e salvare il Natale?

Eventually oppure Prima o Poi?

Nei Sistemi Distribuiti è frequente implementare la Eventually Consistent, ossia una persistenza dei dati certa, ma non in tempo reale. La paura principale in questi casi è "siamo sicuri che il dato si aggiornerà?". Il timore arriva un pò dal termine "Eventually", male interpretato da molti di noi. Vediamo in dettaglio cosa significa veramente Eventually Consistent e come possiamo implementare un sistema distribuito che sfrutta questo tipo di consistenza. Quali sono i vantaggi e, ovviamente, gli svantaggi.

Bounded Context is not Enough!

When we consider to create a distributed system, frequently we use Bounded Contexts to handle specific business functions within clearly defined boundaries.
But is this enough? What about the static dependencies that each microservice has with the database or the servicebus or even with the frontend?
In this workshop we will explore the concept of Architectural Quantum (an independently deployable component with high functional cohesion) and how it can help us to create a distributed system with a clear separation of concerns.
Join us to discover a way to implement this architectural solution.

Blazor in Distributed Systems

Quando lavoriamo su sistemi distribuiti basati su eventi uno dei problemi che ci troviamo ad affrontare è l'aggiornamento della UI quando nel nostro backend riceviamo un evento. Una soluzione definitiva, ovviamente, non esiste, dobbiamo sempre valutare tutti i possibili trade-off prima di prendere una decisione, ma signalR è una buona soluzione, semplice da utilizzare se la comunicazione passa attraverso un Hub, un pò meno se devo comunicare con i client al di fuori dell'Hub stesso. Vediamo come possiamo sfruttare signalR per queste situazioni.

Blazor e i Long Running Process

Una delle scelte che siamo chiamati a fare quando lavoriamo su sistemi distribuiti, sia che si tratti di una soluzione a moduli, sia che si tratti di una soluzione a microservizi, è la gestione dei workflow. La scelta definitiva, ovviamente, non esiste, dobbiamo sempre valutare tutti i possibili trade-off prima di prendere una soluzione. Per esempio, come gestiamo la nostra UI in Blazor durante una Saga? Come avvisiamo gli utenti di ciò che sta succedendo?

Bounded Context is not Enough!

Correva l'anno 2003 ed E.Evans ci presentò il suo iconico blue-book. Uno dei pattern più citati, soprattutto per la realizzazione delle architetture a microservizi, è il Bounded Context. Nel 1986 un altro articolo scosse il mondo, Fred Brooks pubblicò No Silver Bullet. Cos'hanno a che fare queste due pubblicazioni così distanti fra loro? E perchè ne parliamo ora, nel 2023? Venite alla mia sessione e ve lo spiegherò.

Evolutionary Architectures con .NET e Azure

Ci troviamo spesso davanti a progetti che nascono piccoli e crescono velocemente.
All’inizio di un nuovo progetto, spesso ci chiediamo: la metafora fra l'architettura software e l'architettura di un edificio è ancora valida? Siamo sicuri che l'architettura non possa evolvere così come evolvono le specifiche di un’applicazione?
Evolutionary Architectures è rivolto a coloro che si sono trovati a dover dare una direzione ai propri progetti e si sono posti queste domande.
Vedremo infatti che è possibile creare una architettura pronta ad evolversi, con esempi pratici che verrano poi rilasciati su Kubernetes (AKS) attraverso Azure Dev Ops, Helm e Github.

Modular Architectures con .NET

Per scrivere codice pulito, con responsabilità isolate, dobbiamo necessariamente implementare un'archietettura a microservizi? Dobbiamo portarci a casa tutta una serie di complessità sin dall'inizio del progetto? Esiste un'alternativa che ci permetta di scalare a progetto avviato?
Modular Architecture ha radici ben più profonde di quanto si possa immaginare, ed unisce il meglio delle due soluzioni alternative, monolite e microservizi.
Vediamo com'è possibile realizzare una soluzione simile in .NET

Using .NET Core to build and deploy microservices architecture

We have released our beautiful monolith on the server in the customer's cellar, but now we need to scale up.
First of all we have to design our monolith in a right way, so will be easy to split it.
Now new features come to implement and more traffic to handle. How do we solve the problem? Our monolith needs to be broken into many microservices that K8s is ready to host. But how will all these microservices talk to each other now? How we can introduce event communication in our microservice's architecture? Let's find out together

Tutti gli eventi sono testabili!

È davvero così difficile testare un dominio basato sugli eventi?
In questa sessione impareremo a scrivere test che convalidino il comportamento del dominio, andando oltre il classico approccio TDD. Ci concentreremo sulla validazione del cambiamento di stato del dominio durante il suo ciclo di vita.
Affronteremo il problema utilizzando specification testing e vedremo come questo supporta pienamente lo sviluppo di un dominio complesso ed in continua evoluzione.

BDD in Blazor using SpecFlow

Given-When-Then è uno stile di rappresentazione dei test o, come direbbero i suoi sostenitori, di specificazione del comportamento di un sistema usando SpecificationByExample.
Daniel Terhorst-North e Chris Matts lo hanno sviluppato come parte del Behavior-Driven Development. Dopo averlo adottato per il backend, mi sono chiesto se potesse essere utile anche per il frontend. Curiosi di sapere com'è andata? Scopriamolo insieme

DDD incontra i Dati (aka Data Mesh)

Siamo tutti affamati di dati. Ne abbiamo bisogno per alimentare i nostri modelli di ML, per mantenere dashboard e per fornire statististiche sempre più accurate. L'attuale gestione di questi dati però scricchiola, è in affanno, serve un nuovo approccio. I Datawarehouse, con le rigide regole di accesso, ci impediscono di scalare facilmente e velocemente come vorremmo. Come risolviamo il problema?
Possiamo aspettarci un contributo da DDD?
Data Mesh è un paradigma sociotecnico decentralizzato che tratta i dati come un prodotto, considera i domini come una preoccupazione primaria, applica il pensiero della piattaforma per creare un'infrastruttura di dati self-service e introduce un modello computazionale federato di governance dei dati.

Affoghiamo i microservizi nella birra

Partendo da uno scenario di un birrificio piccolino e con pochi ordini, mostreremo come la soluzione monolite è in grado di consegnare valore. Dopodiché dimostreremo come un monolite rilasciato sul server in cantina, se fatto bene, può scalare in maniera agile in una architettura a microservizi su kubernetes con helm.

Using .NET and Azure to build and deploy microservices architecture

Si parla tanto di microservizi, anche quando non sono strettamente necessari. Sono l'unica alternativa possibile per scrivere codice pulito, a componenti indipendenti e facilmente divisibile? E se costruissimo una soluzione a moduli? Attenzione, ogni modulo deve essere indipendente, dalla business logic ai dati, ma il tutto in un'unica soluzione. Molto più facili da testare, rispetto ai microservizi; meno infrastruttura da gestire, ma allo stesso tempo, pronti a scalare.
Scopriamolo insieme come .NET Core ci permette di creare soluzioni simili e come Azure sia pronta ad ospitarle

All events are testable!

Is it really that difficult to test an event-based domain?
In this session we will write tests that validate domain behavior, going beyond the classic TDD approach.
We will try to address the problem through specification testing and we will see how this fully supports the development of a complex and evolving domain.

Testiamo gli eventi

Vi è mai capitato di dover testare un sistema ad eventi? In questo caso il classico approccio TDD può essere utile? Oppure servirebbe uno strumento di testing diverso, più appropriato? Scopriamo insieme, con tanti esempi e tanto codice, ed una libreria open source, come preparare un adeguato ambiente di test adatto a questo tipo di soluzione.

Test non convenzionale nello sviluppo di microservizi con CQRS ed Event-Sourcing

Lo scopo è quello di realizzare un'applicazione composta da due microservizi che sottoscrivono gli stessi eventi. Utilizzeremo CQRS ed Event Sourcing e vedremo in particolare come testiamo gli eventi tralasciando il classico unit testing in favore dell'event specification testing.
Ovvero test più espressivi, che riprendano i termini utilizzati nell'Event Storming, quindi che utilizzano l'Ubiquitous Language e siano comprensibili anche ai Business Expert.

Perchè WebAssembly

WebAssembly non è più una tecnologia emergente, è una tecnologia presente nei nostri framework. Con .NET7 abbiamo assistito all'introduzione di molte novità provenienti proprio da Wasm, codice C# eseguito in JavaScript e codice JavaScript eseguito in C#, tanto per cominciare. Vediamo insieme cos'altro ci dobbiamo aspettare

DDD in salsa Cloud con Blazor e MinimalAPI

Delle MinimalApi si è detto di tutto e di più, ma forse possiamo ancora parlarne. Blazor è il framework per SPA che sta spopolando fra gli sviluppatori .NET. DDD è l'eterna promessa che stenta a diventare realtà ... oppure è l'ingrediente necessario per applicazioni veramente scalabili? Lo scopriremo insieme analizzando un'applicazione Blazor a microfrontend che utilizza le MinimalApi come backend a microservizi

DDD in pratica: i pattern per passare dal monolite ai micro servizi

Partendo da un event storming, che faremo insieme, vedremo una via per spaccare il monolite in micro servizi utilizzando domain drive design, cqrs ed event sourcing. Lo faremo tramite esercizi da svolgere insieme ed in gruppi e vedremo quali pattern del DDD si prestano per tale compito

DDD anche nei Dati?

Siamo a un punto di svolta nel settore dei dati, in cui le nostre soluzioni di gestione dei dati non sono più all'altezza della complessità delle organizzazioni, della proliferazione delle fonti di dati e della portata delle nostre aspirazioni di ottenere valore dai dati con l'intelligenza artificiale e l'analisi.
Data Mesh è un paradigma sociotecnico decentralizzato chetratta i dati come un prodotto, considera i domini come una preoccupazione primaria, applica il pensiero della piattaforma per creare un'infrastruttura di dati self-service e introduce un modello computazionale federato di governance dei dati.
Ma il contributo di DDD? Lo scopriremo insieme.

Babbo Natale e le letterine scritte in linguaggi diversi

Come ogni anno Babbo Natale è alle prese con migliaia di letterine scritte in linguaggi diversi, ognuna delle quali necessita di un traduttore, o di un compilatore, diverso, per essere interpretata.
Il rischio è quello di non essere in grado di leggerle tutte, di tralasciare quelle scritte in linguaggi non interpretabili dai suoi moderni strumenti di ricezione.
Per sua fortuna la soluzione è arrivata giusto in tempo. A lui basta prendere tutte le letterine e passarle al setaccio tramite WebAssembly.
Sarà vero che finalmente abbiamo trovato l'esperanto dei linguaggi? Scopriamolo insieme e vediamo di capire cos'è e cosa fa WebAssembly.

XmasDev 2024 Sessionize Event Upcoming

December 2024 Rome, Italy

WPC 2024 Sessionize Event

November 2024 Assago, Italy

Data Saturday Parma 2024 Sessionize Event

November 2024 Parma, Italy

KanDDDinsky 2024 Sessionize Event

October 2024 Berlin, Germany

Azure Day Torino 2024 Sessionize Event

October 2024 Turin, Italy

XE One Day - Rethink application Sessionize Event

May 2024 Mestre, Italy

ABP Dotnet Conference 2024 Sessionize Event

May 2024

Global Azure Torino 2024 Sessionize Event

April 2024 Turin, Italy

BlazorConf 2024 Sessionize Event

April 2024 Rome, Italy

Explore DDD 2024 Sessionize Event

March 2024 Denver, Colorado, United States

Codegen 2024 Sessionize Event

February 2024 Verona, Italy

.NET Conf 2023 1nn0va Sessionize Event

January 2024 Pordenone, Italy

XmasDev 2023 Sessionize Event

December 2023 Rome, Italy

DevOpsHeroes 2023 Sessionize Event

October 2023 Parma, Italy

Azure Day Torino 2023 Sessionize Event

October 2023 Turin, Italy

1nn0va Saturday 2023 Sessionize Event

September 2023 Pordenone, Italy

WeAreDevelopers World Congress 2023 Sessionize Event

July 2023 Berlin, Germany

Working Software 2023 Sessionize Event

June 2023 Milan, Italy

Agile Venture Pordenone 2023 Sessionize Event

June 2023 Pordenone, Italy

Domain-Driven Design Europe 2023 Sessionize Event

June 2023 Amsterdam, The Netherlands

BlazorConf 2023 User group Sessionize Event

May 2023 Milan, Italy

Global Azure Torino 2023 Sessionize Event

May 2023 Turin, Italy

datasaturdays.com Pordenone 2023 Sessionize Event

February 2023 Pordenone, Italy

Codegen 2023 Sessionize Event

February 2023 Verona, Italy

.NET Conf 2022 1nn0va Sessionize Event

January 2023 Pordenone, Italy

XmasDev 2022 Sessionize Event

December 2022 Rome, Italy

Italian Agile Days 2022 Sessionize Event

October 2022 Brescia, Italy

1nn0va Saturday 2022 Sessionize Event

September 2022 Pordenone, Italy

Working Software Sessionize Event

July 2019 Milan, Italy

Alberto Acerbis

Passionate dev, Microsoft MVP, author, learner

Brescia, Italy

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top