Linea di pesatura industriale automatizzata in un impianto luminoso e contemporaneo

Il peso è certoRendiamo altrettanto sicura l'architettura che lo governa

La vostra prossima generazione di macchine dovrà pesare corretto per vent'anni. L'architettura dati che lo garantisce si valida adesso, sul codice reale, prima che concorrenza, volumi e omologazione trasformino una scelta in un rifacimento.

15-20 anniOrizzonte del software omologato
fino a 200 pezzi/minSulle linee automatiche
~10 sviluppatoriDue reparti, una sola base dati
SCORRI

Non state scegliendo un ORM.

State decidendo cosa reggerà concorrenza, più device sullo stesso dato e query sotto carico, e dovrà restare vero per vent'anni

Come ci siamo arrivati

L'evoluzione dell'accesso ai dati, in due minuti

01 / Lo scenario

Ogni settimana di codice in più rende il ripensamento più costoso

Avete già una base solida: .NET 10, MariaDB, Entity Framework, e un'architettura dati comune alle macchine automatiche e non automatiche. Il lavoro è partito bene. Il punto è cosa non si vede ancora: una base dati funziona a macchina ferma e a volumi bassi, ma le domande difficili arrivano dopo, tutte insieme, quando il sistema entra in linea.

  • Concorrenza

    Più terminali e più bilance leggono e scrivono lo stesso dato. Chi arriva prima? Cosa succede al secondo? Uno scenario che oggi non impatta, ma che tornerà.

  • Sincronizzazione

    PC, PLC, scheda bilancia e stampante devono allinearsi a inizio lavorazione nel minor tempo possibile. Ogni millisecondo di lettura in più rallenta la linea.

  • Query sotto carico

    Dal LINQ che scrivete alla query SQL che viene generata: quando i volumi diventano reali, la differenza si sente tutta.

  • Migrazioni e omologazione

    Ogni macchina sul mercato da dicembre 2027 passa da test e fascicoli tecnici. Le scelte di oggi verranno lette allora.

Nessuno di questi è un errore. Sono le domande che ogni sistema industriale serio incontra. La differenza la fa il momento in cui trovi le risposte: adesso costano una decisione, dopo costano un rifacimento.

02 / Due mondi, una sola base dati

Una sola architettura per due carichi opposti

Un unico impianto luminoso: in primo piano un terminale di pesatura statica, sullo sfondo una linea automatizzata ad alta velocità
  • Non automaticaUn terminale collegato a una pesa: il camion con container. Ritmo umano, schema semplice, spesso dieci tabelle con tre o quattro usate di frequente.
  • AutomaticaUn impianto in linea fino a 200 pezzi al minuto. Non si può bloccare: la query dev'essere veloce, ottimizzata, asincrona. Conta la stabilità.
  • La sfidaUna sola architettura che serve entrambi. Semplice dove basta, robusta dove il carico non perdona.
03 / Immaginate tra sei mesi

Sei mesi da oggi: la base regge sotto carico e non avete rifatto niente

  • La direzione è confermata. Validata nero su bianco, mentre cambiarla costa ancora poco.
  • La concorrenza non fa più paura. È chiaro cosa succede quando due device toccano lo stesso dato.
  • Le query reggono i volumi veri. Con gli strumenti per leggere il SQL generato e migliorarlo dove serve.
  • Il team decide da solo. Le competenze restano in casa, non se ne vanno con la consulenza.
  • Il Direttore Tecnico ha in mano il documento. Ogni scelta motivata e tracciata, pronta per l'omologazione.

È esattamente lì che questo percorso vi porta. Ecco come.

04 / Come funziona

Un metodo in sei fasi, ognuna con un deliverable verificabile

Sempre sul vostro codice, mai su esempi da manuale. Nessuna fase si chiude con una chiacchierata: si chiude con un documento che resta.

Tavolo di lavoro tecnico luminoso durante una revisione architetturale: schemi, laptop, calibro e un componente di precisione
  1. 01

    Rilievo dell'architettura

    Analisi del codice reale: modello dati, ciclo di vita del DbContext, transazioni, concorrenza e il SQL che Entity Framework genera davvero.

    Deliverable · fotografia tecnica dello stato attuale
  2. 02

    Diagnosi

    Vincoli e decisioni architetturali messi nero su bianco, con la motivazione tecnica. Cosa regge resta, cosa va rivisto viene isolato.

    Deliverable · punti critici prioritizzati
  3. 03

    Misura

    Benchmark sui percorsi critici: sincronizzazione delle quattro entità e letture sotto carico. Numeri, non impressioni.

    Deliverable · baseline di performance misurata
  4. 04

    Correzione mirata

    Entity Framework dove è la scelta corretta, Dapper o ADO.NET dove il carico lo impone. Nessuna riscrittura inutile.

    Deliverable · interventi verificati sul codice
  5. 05

    Trasferimento dei criteri

    I criteri di decisione passano al team, applicati sul vostro codice. Alla fine si decide senza di noi.

    Deliverable · team autonomo sulle scelte dati
  6. 06

    Documentazione

    Registro delle decisioni e matrice dei rischi, in un formato pronto per l'omologazione e per il Direttore Tecnico.

    Deliverable · dossier tecnico difendibile
05 / Cosa resta in mano vostra

Non consulenza che svanisce, ma un documento che il Direttore Tecnico porta in riunione

  1. Assessment dell'architettura dati

    Lo stato reale della base comune alle macchine automatiche e non automatiche.

  2. Mappa dei flussi e dei confini di responsabilità

    Chi scrive, chi legge, dove passano i dati tra PC, PLC, bilancia e stampante.

  3. Revisione del modello e del ciclo di vita del DbContext

    Il punto dove nasce la maggior parte dei problemi di concorrenza.

  4. Analisi di concorrenza e gestione dei conflitti

    Più terminali sullo stesso dato: chi arriva prima, cosa succede, come si risolve.

  5. Revisione delle query e del SQL generato

    Dal LINQ alla query reale, con gli strumenti per vederlo e ottimizzarlo.

  6. Criteri: dove Entity Framework, dove valutare alternative

    Una regola difendibile, non una preferenza personale.

  7. Registro delle decisioni architetturali

    Ogni scelta motivata e datata: la responsabilità diventa tracciabile.

  8. Matrice dei rischi prioritizzati e piano d'azione

    Cosa affrontare prima, cosa può aspettare, con quali tempi.

Dossier tecnico rilegato aperto su una scrivania luminosa, accanto a un componente di pesatura industriale lavorato con precisione
06 / AI, revisione e responsabilità

L'AI accelera la bozza, la revisione firma la decisione

Usate Codex e strumenti simili come si usava una volta la ricerca: per andare più veloci. È il modo giusto. Il valore che aggiungiamo è a valle: una decisione architetturale merita una revisione con esperienza e contesto prima di entrare in un sistema omologato.

Su un software che dovrà durare vent'anni, ciò che conta è la revisione, la tracciabilità e la responsabilità di ogni scelta. Il percorso vi dà un punto di validazione esterno: le decisioni le prendete voi, ma non le prendete da soli.

Velocità AI+Revisione umana=Responsabilità documentata
Ingegnere software che confronta con serenità una bozza sul laptop con documentazione e un componente reale di una macchina di pesatura
07 / Chi è Matteo Migliore

Entity Framework in produzione dal 2010, su dati che non perdonano

Matteo Migliore, fondatore di Sviluppatore Migliore

Fondatore di Sviluppatore Migliore. Ventisei anni su .NET e architetture software, con Entity Framework in produzione dal 2010. Ha fondato tre software house: l'ultima, un gestionale per studi legali dove EF Core gestiva milioni di documenti sotto carico reale, è sul mercato da quindici anni.

  • Ottimizzazione del data layer su applicazioni con milioni di record, dove il dato non può sbagliare.
  • Quindici mesi su una bilancia usata da 15.000 ricercatori in ambito farmaceutico, con certificazione FDA e ambienti separati fino alla produzione.
  • Si lavora sul codice reale, con un principio: la soluzione più semplice che soddisfa i vincoli.
  • I percorsi one-to-one li segue personalmente. In una realtà come la vostra è troppo delicato per delegarli.
08 / Cosa dicono

Chi ha seguito il percorso, con parole sue

La cosa che mi è piaciuta di più è la nuova gestione della struttura del progetto: la suddivisione dell'interfaccia grafica dalla progettazione, non scrivere il codice direttamente nella UI.
Claudio Sofonio
Claudio SofonioEsperto di Business Intelligence, Cotonella S.p.a.Percorso Entity Framework
Una cosa nuova che non avevo mai provato e che abbiamo visto insieme nel corso è stato l'utilizzo degli unit test. Sarà sicuramente molto utile nel mio lavoro, e consiglio Matteo perché si può parlare con lui di come sta andando e aggiustare il tiro.
Jessica Filippi
Jessica FilippiSviluppatrice .NET, Cotonella S.p.a.Percorso Entity Framework
Una differenza che noto rispetto ad altri corsi è una grande passione nella formazione. Oltre agli argomenti specifici del corso, trovo suggerimenti su argomenti molto trasversali: progettazione, controllo del software, testing.
Luca Affini
Luca AffiniAnalista Software, WakiwiPercorso Entity Framework
09 / Il programma completo su Entity Framework

Otto moduli, dal DbContext alla concorrenza sotto carico

Il trasferimento di competenze non è generico. È il programma che affronta i temi critici del vostro progetto, sempre applicato al vostro codice e non a esempi da manuale.

01DbContext e mapping esplicito

Il DbContext è il contratto tra il codice e il database. Configurato a metà, dopo sei mesi produce uno schema che non corrisponde al dominio e migrazioni che nessuno vuole più toccare.

Cosa impari
  • Ciclo di vita del DbContext e context pooling per abbattere il costo di allocazione sotto carico
  • Fluent API e IEntityTypeConfiguration: mapping pulito, classi di dominio senza annotazioni sparse
  • Strategie di ereditarietà TPH, TPT, TPC e cosa generano davvero a livello di schema SQL

A cosa ti serve: una base leggibile e manutenibile dal primo giorno, che regge quando il progetto cresce.

02Perché il database va piano (e non è colpa del server)

L'app è lenta, il DBA dice che le query sono a posto, gli sviluppatori pure. In mezzo c'è EF che genera SQL che nessuno ha mai letto, spesso decine di query dove ne bastava una.

Cosa impari
  • Leggere il SQL realmente generato: la prima verifica che quasi nessuno fa
  • Proiezioni con Select e IQueryable vs IEnumerable: la riga che decide se il filtro va nel database o in memoria
  • Query compilate e split query dove servono davvero

A cosa ti serve: letture rapide dove la linea non può aspettare, come la sincronizzazione delle quattro entità a inizio lavorazione.

03Il problema N+1, il killer silenzioso

Funziona in sviluppo, funziona in staging. In produzione, con dati reali, l'applicazione fa 500 query invece di una. Il bug di performance più comune e più difficile da vedere.

Cosa impari
  • Riconoscerlo e diagnosticarlo prima del primo carico reale
  • Include e ThenInclude contro lazy loading: quando l'uno, quando l'altro
  • Interceptor che segnalano dai log le query lente prima che se ne accorgano gli utenti

A cosa ti serve: performance prevedibili quando i volumi diventano quelli veri, non solo a macchina ferma.

04Migrazioni che non rompono la produzione

Le migrazioni sono lo strumento giusto per versionare il database. In un team con branch paralleli diventano una fonte di conflitti, fino al rollback di emergenza il sabato sera.

Cosa impari
  • Una strategia di migrazione che regge con un team di dieci persone e branch paralleli
  • Migrazioni idempotenti e migration bundle per un deploy automatizzato
  • Gestione controllata di ambienti multipli, da staging alla produzione

A cosa ti serve: aggiornare lo schema di macchine già installate senza sorprese, requisito su un prodotto omologato.

05Repository pattern: la risposta con il codice

Pochi temi dividono i developer .NET quanto il Repository pattern con EF. La risposta non è un'opinione: dipende dal contesto, con conseguenze misurabili.

Cosa impari
  • Quando il Repository aggiunge valore reale e quando è solo un wrapper che ripete l'API di EF
  • Il Unit of Work già incluso nel DbContext, e perché reimplementarlo introduce bug sottili
  • Specification e CQRS per separare un modello di lettura da uno di scrittura

A cosa ti serve: scegliere l'architettura con criteri difendibili, e saperlo motivare in fase di omologazione.

06Concorrenza gestita senza paura

Due utenti aprono lo stesso record, lo modificano, salvano. Chi vince? Chi perde senza saperlo? Il bug più difficile da riprodurre in sviluppo e il più costoso in produzione.

Cosa impari
  • Concorrenza ottimistica con RowVersion: EF solleva un'eccezione invece di sovrascrivere in silenzio
  • Politiche di risoluzione dei conflitti decise a monte, non lasciate al caso
  • Livelli di isolamento, pattern Outbox e idempotenza per i retry

A cosa ti serve: esattamente il vostro scenario, più terminali e più bilance sullo stesso dato, senza perdite invisibili.

07Testare il codice che tocca il database

Testare il data layer è il punto in cui molti team si arrendono. Ma testare senza un database reale porta a test che non rilevano i bug veri.

Cosa impari
  • Cosa verifica davvero il provider InMemory e cosa invece ti sfugge fino alla produzione
  • SQLite in memoria e TestContainers: un database reale e usa e getta per i test di integrazione
  • Test di integrazione con WebApplicationFactory e test di performance sulle query critiche

A cosa ti serve: la rete di sicurezza che serve prima dell'omologazione, con ambienti separati fino alla produzione.

08Quando EF Core non basta

EF è lo strumento giusto per il 90% dei casi. Per il restante 10%, bulk, query complesse, stored procedure legacy, servono strumenti diversi, senza smontare l'architettura.

Cosa impari
  • SQL scritto a mano con FromSql ed ExecuteSql, mantenendo change tracker e type safety
  • Inserimenti e aggiornamenti massivi: 10.000 record in un paio di secondi
  • Interceptor per audit trail e soft delete automatico, senza toccare il codice applicativo

A cosa ti serve: sapere quando uscire da EF e come farlo, la competenza che serve sulle linee automatiche ad alta velocità.

10 / Le due offerte

Si parte in sicurezza, si prosegue solo se il valore è evidente

Due modi di lavorare insieme. Il primo per avere subito una risposta netta. Il secondo, quello che raccomandiamo per Coop Bilanciai, per arrivare fino in fondo con il team autonomo.

Primo passo

Architecture Sprint

In poche settimane, una risposta netta: la direzione regge o si corregge adesso. Senza fermare una riga di sviluppo.

  • Assessment dell'architettura dati sul codice reale
  • Revisione di DbContext, concorrenza e SQL generato
  • Registro delle decisioni e matrice dei rischi
  • Piano d'azione prioritizzato per il team

Uscite con: una risposta chiara sulla direzione e un documento da portare in riunione.

Partiamo dallo Sprint

Modalità costruita sulla vostra: uno sprint iniziale, poi sessioni remote ogni due settimane, senza fermare l'operatività. Investimento e durata li definiamo insieme nella proposta, sul contenuto che serve davvero.

11 / Il confronto giusto

Non è un costo. È l'assicurazione più economica che possiate stipulare

Immaginate di scoprirlo all'ottavo mese.

Il codice è ormai ovunque. Le prime macchine sono in assemblaggio. Il fascicolo tecnico per l'omologazione è già in scrittura. E proprio lì vi accorgete che un modo di leggere i dati sotto carico, deciso mesi prima quasi senza pensarci, non regge quando la linea va davvero a 200 pezzi al minuto.

A quel punto non cambiate una riga. Smontate un pezzo di fondazione mentre il palazzo è già in piedi. Dieci persone si fermano e rimettono mano a quello che credevano finito. Le macchine già montate vanno riviste. Quello che era certificato va ricontrollato. E ogni settimana che passa, quel debito costa un po' di più, perché nel frattempo ci avete costruito sopra.

Oggi è una riga da cambiare. Tra otto mesi è un cantiere da riaprire.

Ecco perché il paragone con un corso non regge. Un corso è una spesa. Questo è il contrario: è ciò che vi evita la spesa vera, quella che non si preventiva perché arriva quando non ve lo aspettate. Validare adesso significa investire una frazione di quel rischio, mentre correggere è ancora una decisione e non un intervento a macchine ferme.

Un sistema pensato per durare vent'anni merita di partire da fondamenta verificate. Il numero esatto lo calcolate voi, con i vostri costi. Ma il vero termine di paragone, ormai, lo conoscete.

Macro luminosa di un componente di pesatura industriale di alta precisione perfettamente installato

Il prossimo passo è concreto

Partiamo dall'Architecture Sprint e vediamo dove regge

Una sessione operativa per fissare perimetro, accessi e primo sprint sulla vostra architettura. Gli argomenti sono già chiari: resta da decidere modalità e durata.