Vai al contenuto
Torna ai lavori

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

Riconosci uno di questi problemi?

Se qualcosa di tutto ciò somiglia al sistema con cui convivi, di solito è un buon punto da cui partire.