Schema ramo per astrazione - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Schema ramo per astrazione

Lo schema dei fichi strangolatori funziona bene quando è possibile intercettare le chiamate sul perimetro del monolite. Tuttavia, se si desidera modernizzare i componenti che si trovano più a fondo nello stack di applicazioni legacy e hanno dipendenze iniziali, si consiglia il modello ramo per astrazione. Questo modello consente di apportare modifiche alla base di codice esistente per consentire alla versione modernizzata di coesistere in sicurezza con la versione precedente senza causare interruzioni.

Per utilizzare correttamente il modello ramo per astrazione, segui questa procedura:

  1. Identifica i componenti monolitici che hanno dipendenze a monte.

  2. Crea un livello di astrazione che rappresenti le interazioni tra il codice da modernizzare e i suoi client.

  3. Quando l'astrazione è in atto, modifica i client esistenti per utilizzare la nuova astrazione.

  4. Crea una nuova implementazione dell'astrazione con la funzionalità rielaborata all'esterno del monolite.

  5. Passa l'astrazione alla nuova implementazione quando sei pronto.

  6. Quando la nuova implementazione fornisce tutte le funzionalità necessarie agli utenti e il monolito non è più in uso, ripulisci l'implementazione precedente.

Il modello ramificazione per astrazione viene spesso confuso con gli interruttori delle funzionalità, che consentono anche di apportare modifiche al sistema in modo incrementale. La differenza è che gli interruttori delle funzionalità hanno lo scopo di consentire lo sviluppo di nuove funzionalità e mantenerle invisibili agli utenti quando il sistema è in esecuzione. Gli interruttori delle funzionalità vengono quindi utilizzati in fase di distribuzione o in fase di esecuzione per scegliere se una particolare funzionalità o set di funzionalità è visibile nell'applicazione. Branch by abstraction è una tecnica di sviluppo e può essere combinata con gli interruttori delle funzionalità per passare dalla vecchia alla nuova implementazione.

La tabella seguente spiega i vantaggi e gli svantaggi dell'utilizzo del modello ramo per astrazione.

Vantaggi Svantaggi
  • Consente modifiche incrementali reversibili nel caso in cui qualcosa vada storto (compatibile con le versioni precedenti).

  • Consente di estrarre le funzionalità che si trovano nelle profondità del monolito quando non è possibile intercettare le chiamate verso il bordo del monolite.

  • Consente la coesistenza di più implementazioni nel sistema software.

  • Fornisce un modo semplice per implementare un meccanismo di fallback utilizzando una fase di verifica intermedia per richiamare funzionalità nuove e vecchie.

  • Supporta la distribuzione continua, perché il codice funziona sempre durante la fase di ristrutturazione.

  • Non è adatto se è coinvolta la coerenza dei dati.

  • Richiede modifiche al sistema esistente.

  • Potrebbe aggiungere ulteriori costi al processo di sviluppo, soprattutto se la base di codice è mal strutturata. (In molti casi, il vantaggio vale lo sforzo supplementare e più ampia è la ristrutturazione, più è importante considerare l'utilizzo del modello ramo per astrazione.)

La figura seguente mostra il modello ramo per astrazione di un componente di notifica nel monolite assicurativo. Inizia creando un abstract o un'interfaccia per la funzionalità di notifica. In piccoli incrementi, i client esistenti vengono modificati per utilizzare la nuova astrazione. Ciò potrebbe richiedere la ricerca nella base di codice per le chiamate alle API relative al componente Notifica. Create la nuova implementazione della funzionalità di notifica come microservizio all'esterno del vostro monolite e la ospitate nell'architettura modernizzata. All'interno del monolite, l'interfaccia di astrazione appena creata funge da broker e richiama la nuova implementazione. In piccoli incrementi, trasferisci la funzionalità di notifica alla nuova implementazione, che rimane inattiva fino a quando non è completamente testata e pronta. Quando la nuova implementazione è pronta, si passa all'astrazione per utilizzarla. È consigliabile utilizzare un meccanismo di commutazione che possa essere capovolto facilmente (ad esempio un pulsante di attivazione delle funzionalità) in modo da poter tornare facilmente alla vecchia funzionalità in caso di problemi. Quando la nuova implementazione inizia a fornire tutte le funzionalità di notifica agli utenti e il monolito non è più in uso, puoi ripulire l'implementazione precedente e rimuovere qualsiasi indicatore di funzionalità di commutazione che potresti aver implementato.

Scomposizione dei monoliti in microservizi utilizzando il modello ramo per astrazione