Leaf — Piattaforma business modulare
Un monolite modulare .NET che fa lavorare insieme i sistemi che una PMI già possiede, senza sostituirne nessuno.
Lavoro su commessa — sorgente non pubblico
- Tipo
- Piattaforma
- Periodo
- 2024 — oggi
- Stato
- In corso
- Ruolo
- Architetto e sviluppatore principale
Il problema
Alle PMI italiane il software non manca. Hanno un gestionale, un CRM, un magazzino — e nessuno di questi parla con gli altri. I buchi li riempiono le persone: qualcuno ridigita il numero di fattura, qualcuno riconcilia due export in un foglio di calcolo, qualcuno si accorge giovedì che l’ordine di martedì non è mai arrivato in produzione.
La risposta commerciale è vendere una suite che sostituisce tutto. Per questo mercato è la risposta sbagliata: i sistemi già in azienda reggono il lavoro, il personale li conosce, e i budget di migrazione non esistono. Quello che manca non è un altro sistema di registrazione — è lo strato in mezzo.
Cosa ho costruito
Leaf è la piattaforma su cui quello strato si costruisce: moduli di business che si innestano in un solo host e un solo deployment, condividendo identità, messaggistica, telemetria e un insieme comune di primitive. Il cliente fa girare tutto su un singolo server modesto, e un modulo nuovo arriva senza riprogettare quello che c’è già.
A tenerla insieme sono due regole. Nessun modulo entra nel dominio di un altro, e qualsiasi modulo si può estrarre più avanti se un giorno esiste una ragione operativa vera. Tutto il resto discende da lì.
A che punto è
Sulla piattaforma girano oggi tre moduli di business, avviati da un solo deployment. Un modulo nuovo parte da uno scheletro definito con i confini già tracciati — che è la differenza tra una piattaforma e una cartella di progetti imparentati.
Cosa ho fatto
- Scritto lo standard architetturale della piattaforma, reso normativo sopra i documenti dei singoli moduli
- Progettato l'host che compone i moduli di business via dependency injection: un deploy, un database
- Costruito quattro componenti di piattaforma pubblicati come pacchetti NuGet: primitive di dominio, identità, event bus e telemetria
- Reso ogni componente opzionale inerte per default, così un modulo che non lo configura gira comunque
- Impostato workflow CI/CD riusabili con versionamento automatico guidato dalle convenzioni sui commit
Impatto
- Un modulo nuovo parte da uno scheletro definito invece che da un foglio bianco
- L'aggiornamento di un componente raggiunge tutti i moduli attraverso un range di versione, non un copia-incolla
Stack
- .NET 10
- PostgreSQL
- Docker
- RabbitMQ
- OpenTelemetry
- GitHub Actions
- Modular monolith
- DDD
I numeri
- 4
- Componenti di piattaforma
- 3
- Moduli business sopra
- 1
- Unità di deploy