Distributed Architecture Reconstruction of Polyglot and Multi-Repository Microservice Projects
Questo articolo presenta un nuovo framework per la ricostruzione distribuita dell'architettura statica che supera le limitazioni esistenti utilizzando estrattori modulari e specifici per tecnologia per unificare i dati e generare documentazione accurata per progetti di microservizi poliglotti e multi-repository.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Immagina di avere una città enorme e frenetica composta da centinaia di piccoli quartieri indipendenti. Ogni quartiere (un microservizio) è costruito da un team diverso, utilizzando materiali diversi (linguaggi di programmazione) e seguendo il proprio stile unico. Alcuni sono fatti di mattoni (Java), altri di legno (Python) e altri di vetro (Go).
Il problema? Nessuno possiede una mappa completa della città. Le planimetrie originali sono andate perdute, sono obsolete o sono scritte in una lingua che solo i costruttori originali comprendono. Poiché questi quartieri cambiano molto velocemente e vengono costruiti separatamente, cercare di disegnare una singola mappa gigante dell'intera città è un incubo. Se provi a guardare l'intera città tutta insieme, rimani bloccato nel traffico, e se un quartiere cambia, devi ridisegnare l'intera mappa.
Questo articolo presenta un nuovo strumento chiamato ModARO per risolvere questo problema. Ecco come funziona, usando analogie semplici:
1. Gli "Esploratori Specializzati" (Estrattori)
Invece di assumere un unico robot gigante e super intelligente capace di capire ogni tipo di materiale da costruzione della città, gli autori hanno creato un team di esploratori specializzati chiamati Estrattori.
- Come funzionano: Ogni esploratore è un esperto di una sola cosa. Un esploratore sa solo leggere le planimetrie "Java". Un altro conosce solo i contenitori "Docker". Un altro ancora conosce solo i file di configurazione "YAML".
- La Magia: Non c'è bisogno di insegnare all'esploratore Java come leggere il Python. Basta inviare l'esploratore Java nel quartiere Java. Loro osservano l'ambiente, trovano i dettagli importanti e li scrivono su un taccuino standardizzato.
- Senza Memoria: Questi esploratori sono "amnesici". Non ricordano ciò che hanno visto nel quartiere precedente. Guardano solo l'edificio specifico davanti a loro in quel momento. Questo li mantiene veloci ed evita che si confondano.
2. Il "Taccuino Universale" (Il Modello)
Quando un esploratore finisce il suo lavoro, non tiene i suoi appunti per sé. Scrive le scoperte su un Taccuino Universale (un modello JSON).
- Questo taccuino ha un formato specifico su cui tutti sono d'accordo.
- Se l'esploratore Java trova una "porta" (un endpoint API), la annota. Se l'esploratore Python trova una "finestra" (una connessione al database), annota anche quella.
- Poiché tutti usano lo stesso formato del taccuino, le informazioni del quartiere Java e del quartiere Python possono essere infine combinate.
3. L' "Orchestratore" (L'Algoritmo)
C'è un direttore d'orchestra (l'Algoritmo di Ricostruzione) che gestisce gli esploratori.
- Il direttore dice: "Bene, guardiamo questo edificio".
- L'esploratore Java controlla l'edificio e aggiunge le note.
- Il direttore vede che sono state aggiunte nuove note e dice: "Oh, ora che sappiamo che qui c'è un file Java, chiamiamo l'esploratore Docker per vedere se c'è anche un contenitore".
- Questo avviene in un ciclo finché non viene trovata nuova informazione. Il direttore assicura che se due esploratori tentano di scrivere cose contraddittorie sulla stessa riga, il sistema si fermi e sollevi un segnale di avviso (un errore), in modo che gli esseri umani possano sistemarlo, invece di lasciare che la mappa diventi disordinata.
4. La "Mappa Distribuita" (Ricostruzione Multi-Repo)
Questo è la più grande innovazione dell'articolo. Nei tempi passati, per disegnare una mappa, dovevi riunire ogni singola planimetria di ogni singolo quartiere in una stanza gigante e guardarle tutte insieme. Questo è lento e rompe lo "spirito indipendente" della città.
Il nuovo approccio è Distribuito:
- Lavoro Indipendente: Ogni quartiere disegna la propria mini-mappa mentre sta costruendo o aggiornando le proprie case. Non devono aspettare che gli altri quartieri abbiano finito.
- L'Assemblaggio: In seguito, queste mini-mappe vengono portate insieme e incastrate come pezzi LEGO.
- Le "Connessioni Fantasma": A volte un quartiere dice: "Invio posta a un posto chiamato 'Test-Service'". Non conoscono ancora l'indirizzo esatto o l'ID di quel posto perché si trova in un altro quartiere. Il sistema permette loro di scrivere: "Invia posta a chiunque si chiami 'Test-Service'". Una volta che tutte le mini-mappe sono state incastrate, il sistema collega automaticamente i puntini, facendo corrispondere il mittente "Test-Service" con il destinatario "Test-Service".
Perché è meglio?
- Niente "Taglia Unica": Non serve un sistema complesso e fragile che cerchi di capire tutti i linguaggi di programmazione contemporaneamente. Basta aggiungere un nuovo esploratore (estrattore) ogni volta che appare un nuovo linguaggio.
- Velocità: Poiché ogni quartiere lavora sulla propria mappa, puoi aggiornare la mappa di un servizio senza fermare l'intera città.
- Flessibilità: Puoi utilizzare strumenti esistenti. Se hai già uno strumento che analizza il codice Java, ti basta avvolgerlo in una "tuta da esploratore" e può unirsi al team.
In breve, questo articolo costruisce un sistema in cui piccoli team specializzati possono documentare indipendentemente le proprie parti di un sistema complesso e poi cucire automaticamente quei pezzi insieme per ottenere un'immagine completa e accurata dell'intera architettura, senza la necessità di sapere tutto riguardo le altre parti mentre lavorano.
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.