Vedi Pwas al lavoro: 30 minuti guidati su un'applicazione già funzionante. Prenota la demo →
Confronta i prodotti Pwas nel tuo settore Prenota una demo
Pwas-One
ERPShopCRMDoc ManagerAI Agent
Pwas.FrameworkPwas.ClientPwas.OrchestratorPwas.Microservice
Pwas CLIAssessmefyDynamic Registry Builder
Soluzioni Settori Documentazione Partner Richiedi una demo Inizia ora
Italiano English
pwas.it — powered by pooel.it
soluzioni · modernizzazione

Dal codice accumulato alla configurazione dichiarata.

Pwas.Framework legge lo schema del tuo dominio come configurazione — entità, permessi, pipeline — invece che come codice da mantenere a mano. Senza il rilascio unico che nessuno vuole firmare.

il problema

Ogni backend accumula lo stesso boilerplate.

CRUD ripetuto entità per entità, permessi scritti a mano, validazioni duplicate in ogni endpoint: è il costo nascosto di ogni sistema che cresce per anni senza un livello dichiarativo sotto. Modernizzare con Pwas non significa riscrivere tutto — significa portare lo schema del dominio dentro una descrizione dichiarativa e lasciare che il motore generi API, permessi e validazione.

la scelta che conta

Riscrivere, migrare o circondare: tre strade, esiti molto diversi.

Quando un sistema arriva a questo punto, sul tavolo ci sono sempre le stesse tre opzioni, e la scelta determina il destino del progetto più di qualsiasi decisione tecnica successiva.

Riscrivere da zero

È la strada che seduce di più e delude più spesso. Il problema non è tecnico: è che il sistema vecchio contiene anni di regole che nessuno ha mai scritto altrove. Ogni comportamento strano è quasi sempre la traccia di un caso reale gestito nel 2014. Riscrivere significa riscoprirli tutti, uno alla volta, in produzione. E il nuovo sistema deve raggiungere la parità funzionale prima di poter dare qualsiasi valore — un periodo in cui si paga due volte e non si guadagna niente.

Migrare su un prodotto standard

Ha senso quando il vostro processo è davvero standard. Quando non lo è — e se lo fosse probabilmente avreste già migrato — la migrazione diventa una personalizzazione, e la personalizzazione su un prodotto altrui riporta esattamente al problema di partenza: codice aggiuntivo che ogni aggiornamento rischia di rompere, con in più la perdita di controllo sui tempi.

Circondare

È la strada che raccomandiamo quasi sempre, e non per prudenza commerciale. Il sistema legacy resta dov'è e continua a fare ciò che fa bene — tipicamente le funzioni di registrazione, contabilizzazione e calcolo che sono state pagate care e funzionano. Attorno si costruisce un livello dichiarativo che copre i processi che il legacy non descrive, legge e scrive su di lui attraverso le sue interfacce, e diventa il posto dove nascono tutte le cose nuove.

Il vantaggio decisivo è che ogni passo produce valore da solo. Non c'è un momento in cui bisogna spegnere qualcosa e accendere qualcos'altro sperando che funzioni. Se dopo tre mesi decidete di fermarvi, avete comunque un processo in più governato e nessun danno. Col tempo, in alcuni progetti, il perimetro del legacy si restringe fino a diventare sostituibile a basso rischio — ma è una conseguenza, non un obiettivo dichiarato all'inizio.

il confronto

Riscrittura contro modernizzazione incrementale.

Gli stessi mesi di lavoro, distribuiti in modo molto diverso.

Riscrittura completa

Tutto il rischio concentrato alla fine

  • Nessun valore prodotto finché non si raggiunge la parità funzionale.
  • Le regole non scritte si riscoprono in produzione, una alla volta.
  • Per mesi si mantengono due sistemi e si paga due volte.
  • Il momento del passaggio è un evento a rischio che nessuno vuole firmare.
  • Se il progetto si ferma a metà, non resta niente di utilizzabile.
  • La stima iniziale è quasi sempre ottimistica di un fattore due.
Modernizzazione incrementale

Valore a ogni passo, rischio distribuito

  • Ogni processo portato nel livello dichiarativo è utile da subito, da solo.
  • Le regole non scritte emergono in affiancamento, con il vecchio sistema ancora attivo.
  • Non esiste un periodo di doppio esercizio forzato su tutto il perimetro.
  • Non c'è un momento di passaggio: c'è una serie di piccole attivazioni reversibili.
  • Se il progetto si ferma, ciò che è stato fatto resta in esercizio e continua a servire.
  • Le stime riguardano perimetri piccoli, quindi sbagliano di meno e si correggono prima.
il percorso

Un dominio alla volta.

Il Dynamic Registry Builder può partire dalla documentazione esistente — specifiche, modelli dati — per proporre un blueprint iniziale, così la modernizzazione parte da un'ipotesi concreta invece che da zero.

  1. 01

    Inventario onesto di cosa c'è

    Quali funzioni il legacy svolge bene, quali male, quali non svolge affatto. È una distinzione che in azienda spesso nessuno ha mai messo per iscritto, e senza la quale ogni piano di modernizzazione è basato su impressioni.

  2. 02

    Verifica di cosa il legacy espone

    Interfacce applicative, scambi di file, accesso in sola lettura alla base dati. Determina cosa è realisticamente fattibile e va chiarito prima di promettere qualsiasi cosa, perché è il vincolo che condiziona tutto il resto.

  3. 03

    Blueprint del primo dominio

    Si sceglie un perimetro ristretto e se ne descrive il modello: entità, relazioni, permessi, operazioni. Dove esiste documentazione o un modello dati, il Registry Builder propone una prima versione da correggere, invece di partire dal foglio bianco.

  4. 04

    Esercizio in affiancamento

    Il nuovo livello entra in uso su quel perimetro mentre il legacy continua a funzionare. È qui che emergono le regole non scritte, e si formalizzano una alla volta senza che nulla sia a rischio.

  5. 05

    Estensione e riduzione del perimetro legacy

    Si ripete su altri domini. Col tempo il legacy resta responsabile solo di ciò che fa davvero bene, e la decisione se sostituirlo diventa una scelta economica presa con dati reali, non una scommessa iniziale.

come si procede

Il legacy resta acceso, il perimetro nuovo cresce.

Il sistema esistente continua a lavorare e viene letto e scritto attraverso le sue interfacce, mentre i processi nuovi entrano in esercizio uno alla volta.

AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYTpmNzliZWY3My03YzYyLTQwN2EtODNiYi02NGU1OGEyZWY5Y2UAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaDndLGYM/EHcnMUAJpPK6FgAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDo1ODFjZWU4Yy01ZTc5LTRjYjMtODlhMy0xMTQ4YjVmYzdmY2ZscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNoqkH+b/zwooO0klOflQGxbQAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFgg3H5sh+HZ//B3NBI57z/I9BywqIaFxMnPk91Kh18q1/qkZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaM9wDYKbl/nJVcL40HwT3WwAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRMAAAAAAAAAAAAAAAAZGhhc2hYIAOMWO7Z2W22Tp42dCHC92z99XlwAqRh6I8qu01Omrx0ZG5hbWVuanVtYmYgbWFuaWZlc3RqZXhjbHVzaW9uc4GiZXN0YXJ0GQEQZmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOmY3OWJlZjczLTdjNjItNDA3YS04M2JiLTY0ZTU4YTJlZjljZS9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOjI3NzhiNzc3LWYwMGEtNGY2MC1hODNlLWNmMmRhOTY2N2I3YXJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCDcfmyH4dn/8Hc0EjnvP8j0HLCohoXEyc+T3UqHXyrX+qJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFgg+sOR9q44OAbAlioHl9bJiSrI7WI4nAys0oIKP4vTP0KiY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFgg6YLsYS36EGsPTibigPNFMwD0/UoOPmqv3b+SlHLqTjZ0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQHpGD5NUtK/a/90oCDwZQlTosN4oJUXyCFZehmCZF1ZNJHp1v2DWHSD3eH+QeKfcQx5Xf4JuJoPY9GKx1jjO6zA=Modernising without switching everything offThe legacy system keeps running and is reached through its interfaces. New functions are declared on the platform and go live one scope at a time, so the legacy perimeter shrinks progressively while data keeps flowing in both directions.LEGACY STAYS ON WHILE THE NEW SCOPE GROWSLegacy systemSTAYS IN PRODUCTIONIntegration layerREAD AND WRITE BACKDeclared new scopeONE PROCESS AT A TIMEProgressive switchSCOPE BY SCOPERESULTNo big-bang migrationLegacy perimeter shrinksRules finally written downData keeps flowing both ways: no duplicate entry during the transition.
cosa cambia strutturalmente

Le proprietà dell'approccio.

Caratteristiche verificabili in demo, non stime di risparmio.

0
giorni di fermo richiesti

Il livello dichiarativo si affianca al sistema esistente: non c'è un momento di passaggio in cui qualcosa deve essere spento.

0
righe di controller per il CRUD

Ricerca, inserimento, modifica, cancellazione, permessi e API di ogni entità derivano dalla dichiarazione, non da codice scritto entità per entità.

leggibile
la conoscenza del dominio

Le regole escono dal codice ed entrano in un documento strutturato che anche chi non programma può leggere e verificare.

reversibile
ogni singolo passo

Poiché il legacy resta attivo, fermarsi o tornare indietro su un perimetro non comporta un ripristino d'emergenza.

Queste sono proprietà del metodo e della piattaforma, non risultati misurati presso clienti specifici. Tempi ed effort dipendono da cosa il vostro sistema espone e dalla complessità del dominio, e si stimano insieme dopo la verifica di fattibilità.

approfondimento

Le domande che si fa chi deve decidere.

"Il nostro problema è che una persona sola sa come funziona. Questo lo risolve?"

In parte, e vale la pena capire quale parte, perché è la ragione più seria per modernizzare e la meno discussa nelle proposte commerciali.

Il rischio di concentrazione ha due componenti. La prima è la conoscenza tecnica del sistema — come è fatto, dove si mette le mani — e quella si trasferisce, faticosamente, a chiunque abbia le competenze. La seconda è la conoscenza del dominio: perché quel controllo esiste, quale caso reale ha prodotto quell'eccezione, cosa succede il 31 dicembre. Questa è la parte insostituibile, ed è quella che se ne va con la persona.

Il modello dichiarativo non fa magie, ma sposta il secondo tipo di conoscenza dal codice a un documento che una persona di dominio può leggere. Quando la regola "un ordine con pagamento anticipato non può essere spedito senza incasso confermato" è scritta in una condizione leggibile invece che dentro una funzione, chiunque conosca il mestiere può verificarla, discuterla e correggerla, anche senza sapere programmare.

Resta il lavoro di estrazione, che è la fase più difficile del progetto e che nessuno può fare al posto vostro: qualcuno deve sedersi con quella persona e mettere per iscritto ciò che sa. Il valore di quel lavoro, però, non dipende dal fatto che il progetto prosegua.

"Se il legacy non ha interfacce, siamo bloccati?"

Quasi mai bloccati, spesso rallentati. Nella pratica esistono tre vie, in ordine di preferenza.

  • Interfacce applicative, dove esistono: la strada migliore, perché il legacy mantiene il controllo della propria logica e le operazioni sono sincrone e verificabili.
  • Scambio di file strutturati, che è la realtà più diffusa nei sistemi di una certa età: estrazioni periodiche in ingresso e file di ritorno. Funziona bene, a patto di progettare con cura la frequenza, la gestione delle differenze e cosa succede quando due mondi divergono.
  • Lettura diretta della base dati, in sola lettura e concordata con chi mantiene il sistema: praticabile quando le altre due non ci sono, purché ci si limiti alla lettura.

Quello che non facciamo è scrivere direttamente nel database di un sistema legacy aggirando la sua logica applicativa. Sembra la scorciatoia che risolve tutto ed è la causa dei danni peggiori, che si manifestano mesi dopo e in forme difficili da ricondurre alla causa.

"Quanto dura, realisticamente?"

La domanda giusta non è quanto dura la modernizzazione, perché formulata così la risposta onesta è "anni" e non aiuta nessuno a decidere. La domanda utile è: quanto ci mette il primo dominio a essere in esercizio e a produrre valore da solo.

Per un perimetro ristretto e ben definito l'ordine di grandezza è di alcune settimane dalla sessione iniziale, più il tempo dell'integrazione con il legacy — che è la variabile più incerta e dipende interamente da cosa quel sistema espone e da quanto è disponibile chi lo mantiene. È per questo che la verifica di fattibilità è il secondo passo del percorso e non l'ultimo.

Da lì in poi il ritmo dipende da quanti domini volete portare e con quali risorse. La differenza rispetto a una riscrittura è che non esiste una data oltre la quale il progetto o riesce o è stato inutile: ogni dominio completato è valore acquisito, indipendentemente da quello che succede dopo.

"E se poi vogliamo davvero spegnere il vecchio sistema?"

Diventa una decisione molto più semplice di quanto lo sia oggi, per una ragione precisa: nel frattempo il perimetro del legacy si è ristretto e le sue regole sono state scritte.

Il motivo per cui oggi non potete spegnerlo non è che sia tecnicamente impossibile: è che nessuno sa esattamente cosa fa. Dopo che tre o quattro domini sono stati portati fuori e formalizzati, quello che resta dentro è un insieme più piccolo e meglio compreso. La sostituzione, a quel punto, è un progetto di dimensioni note invece di un salto nel buio.

Va però detto con franchezza che in molti casi non conviene comunque. Se il legacy si è ridotto a fare contabilizzazione e calcoli che funzionano da vent'anni senza dare problemi, sostituirlo è spesa senza ritorno. La modernizzazione riuscita non è quella che elimina il vecchio sistema: è quella che smette di esserne prigioniera.

verifica rapida

È il vostro caso?

Probabilmente sì

  • Avete un sistema che funziona ma che non riesce più ad assorbire requisiti nuovi.
  • Ogni modifica costa settimane e passa da poche persone insostituibili.
  • I processi nati negli ultimi anni vivono in fogli e database dipartimentali.
  • Avete valutato una riscrittura e vi siete fermati davanti al rischio, giustamente.
  • Vi serve esporre dati o funzioni verso l'esterno e il sistema attuale non può farlo.
  • Volete ridurre la dipendenza da un fornitore storico senza rivoluzionare tutto.

Probabilmente no

  • Il vostro sistema attuale copre bene anche le esigenze nate di recente.
  • Esiste un prodotto verticale maturo che copre il vostro processo quasi per intero.
  • Il vincolo reale è un cambio di infrastruttura, non di logica applicativa.
  • Non è possibile coinvolgere chi conosce il dominio nella formalizzazione.
domande frequenti

Modernizzazione: le domande specifiche.

Dobbiamo migrare i dati storici?
Di norma no, o solo in parte. Poiché il legacy resta attivo, i dati storici restano dove sono e vengono letti quando servono. Le migrazioni si fanno solo quando un perimetro viene effettivamente spostato, e a quel punto riguardano un insieme circoscritto e ben compreso invece dell'intero archivio. È una delle ragioni principali per cui questo approccio è meno rischioso di una riscrittura.
Cosa succede se due sistemi si disallineano?
È lo scenario da progettare esplicitamente, e va affrontato all'inizio. Il principio che applichiamo è che ogni dato abbia un sistema titolare dichiarato: il legacy è titolare di alcune informazioni, il nuovo livello di altre, e non esistono dati di cui entrambi si considerino proprietari. Dove il disallineamento è comunque possibile — tipicamente con scambi di file periodici — si introducono controlli automatici che lo rilevano e lo segnalano, invece di scoprirlo a fine mese.
Il Registry Builder può leggere la nostra documentazione?
Può partire da documentazione esistente, specifiche funzionali o modelli dati per proporre un blueprint iniziale di entità e relazioni. È una proposta da correggere, non un risultato finale: serve a evitare il foglio bianco e ad accelerare la prima sessione. La qualità dell'esito dipende molto da quanto la documentazione riflette il sistema reale, che nei progetti legacy è spesso meno di quanto ci si aspetti.
Possiamo mantenere tutto in casa?
Sì. L'installazione on-premise è una modalità di distribuzione supportata, e nei progetti di modernizzazione è frequente perché il legacy spesso gira già nella vostra sala server e la vicinanza semplifica le integrazioni. Cloud europeo e configurazioni miste sono altrettanto praticabili e la scelta resta reversibile.
Chi mantiene il nuovo livello, dopo?
Le modifiche ordinarie al dominio — un campo, un permesso, una regola — sono alla portata di personale interno formato, perché la configurazione è un documento strutturato leggibile. Gli interventi su integrazioni e componenti tecnici richiedono un profilo tecnico, che può essere vostro, di un partner o nostro. L'obiettivo esplicito del progetto è che non dipendiate da noi per le modifiche di dominio.
Come si giustifica l'investimento internamente?
Nella nostra esperienza l'argomento che regge meglio non è il risparmio previsto, che è difficile da dimostrare prima, ma la riduzione del rischio: un primo dominio in esercizio in poche settimane, con costo noto e senza fermi, dimostra o smentisce l'ipotesi prima che l'investimento diventi significativo. È anche il motivo per cui suggeriamo sempre di partire piccolo.

Hai un sistema legacy da modernizzare?

Dopo la demo, l'assessment guarda cosa espone il tuo sistema e ti diciamo cosa è realistico fare, con tempi e costi.