

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à.

# Bilanciamento dell'autonomia con l'allineamento
<a name="balance-autonomy-alignment"></a>

Le architetture micro-frontend sono fortemente orientate all'autonomia del team. Tuttavia, è importante distinguere tra aree che possono supportare flessibilità e approcci diversi per risolvere i problemi e aree in cui la standardizzazione è necessaria per raggiungere l'allineamento. I dirigenti e gli architetti senior devono identificare tempestivamente queste aree e dare priorità agli investimenti per bilanciare sicurezza, prestazioni, eccellenza operativa e affidabilità dei microfrontend. Il raggiungimento di questo equilibrio implica quanto segue: creazione, test, rilascio e registrazione di microfrontend, monitoraggio e invio di avvisi.

## Creazione di micro-frontend
<a name="create"></a>

Idealmente, tutti i team sono fortemente allineati per massimizzare i vantaggi in termini di prestazioni per l'utente finale. In pratica, questo può essere difficile e potrebbe richiedere uno sforzo maggiore. Ti consigliamo di iniziare con alcune linee guida scritte a cui più team possono contribuire attraverso un dibattito aperto e trasparente. I team possono quindi adottare gradualmente il modello software Cookiecutter, che supporta la creazione di strumenti che forniscono un modo unificato per strutturare un progetto.

Utilizzando questo approccio, è possibile incorporare opinioni e vincoli. Il rovescio della medaglia è che questi strumenti richiedono investimenti significativi per la creazione e la manutenzione e per garantire che i blocchi vengano risolti rapidamente senza influire sulla produttività degli sviluppatori.

## End-to-end test per micro-frontend
<a name="testing"></a>

I test unitari possono essere lasciati ai proprietari. Consigliamo di implementare fin dall'inizio una strategia per testare in modo incrociato i microfrontend eseguiti su una shell unica. La strategia include la capacità di testare le applicazioni prima e dopo un rilascio di produzione. Consigliamo di sviluppare processi e documentazione per personale tecnico e non tecnico per testare manualmente le funzionalità critiche.

È importante assicurarsi che le modifiche non compromettano l'esperienza del cliente funzionale o non funzionale. Una strategia ideale consiste nell'investire gradualmente in test automatizzati, sia per le funzionalità chiave che per le caratteristiche dell'architettura come sicurezza e prestazioni.

## Rilascio di micro-frontend
<a name="release"></a>

Ogni team potrebbe avere il proprio modo di distribuire il proprio codice, elaborare opinioni e la propria infrastruttura. Il costo della complessità legato alla manutenzione di tali sistemi è in genere un deterrente. Consigliamo invece di investire tempestivamente per implementare una strategia condivisa che possa essere applicata mediante strumenti condivisi. 

Sviluppa modelli con la piattaforma CI/CD preferita. I team possono quindi utilizzare i modelli preapprovati e l'infrastruttura condivisa per apportare modifiche alla produzione. È possibile iniziare a investire in questo lavoro di sviluppo sin dall'inizio, perché questi sistemi raramente necessitano di aggiornamenti significativi dopo un periodo iniziale di test e consolidamento.

## Registrazione di log e monitoraggio
<a name="logging"></a>

Ogni team può avere metriche aziendali e di sistema diverse che desidera monitorare per scopi operativi o di analisi. Il modello software Cookiecutter può essere applicato anche qui. L'erogazione degli eventi può essere riassunta e resa disponibile come libreria utilizzabile da più micro-frontend. Per bilanciare la flessibilità e garantire l'autonomia, sviluppate strumenti per la registrazione di metriche personalizzate e la creazione di dashboard o report personalizzati. Il reporting promuove una stretta collaborazione con i proprietari dei prodotti e riduce il ciclo di feedback dei clienti finali.

Standardizzando la distribuzione, più team possono collaborare per tenere traccia delle metriche. Ad esempio, un sito di e-commerce può tracciare il percorso dell'utente dal microfrontend «Dettagli del prodotto» al microfrontend «Cart», al microfrontend «Purchase» per misurare il coinvolgimento, il tasso di abbandono e i problemi. Se ogni microfrontend registra gli eventi utilizzando un'unica libreria, puoi utilizzare questi dati nel loro insieme, esplorarli in modo olistico e identificare tendenze approfondite.

## Avviso
<a name="alerting"></a>

Analogamente alla registrazione e al monitoraggio, gli avvisi traggono vantaggio dalla standardizzazione con spazio per un certo grado di flessibilità. Team diversi potrebbero reagire in modo diverso agli avvisi funzionali e non funzionali. Tuttavia, se tutti i team dispongono di un metodo consolidato per avviare avvisi basato su metriche raccolte e analizzate su una piattaforma condivisa, l'azienda può identificare i problemi tra i team. Questa funzionalità è utile durante gli eventi di gestione degli incidenti. Ad esempio, gli avvisi possono essere avviati nel modo seguente:
+ Numero elevato di eccezioni JavaScript lato client in una particolare versione del browser
+ Tempo di rendering notevolmente ridotto oltre una determinata soglia
+ Numero elevato di codici di stato 5xx quando si utilizza una particolare API

A seconda della maturità del sistema, è possibile bilanciare gli sforzi su diverse parti dell'infrastruttura, come illustrato nella tabella seguente.


| **Adozione** | **Ricerca e sviluppo** | **Salita** | **Maturità** | 
| --- | --- | --- | --- | 
| Crea micro-frontend. | Sperimenta, documenta e condividi quanto appreso. | Investi in strumenti per costruire nuovi micro-frontend. Evangelizza l'adozione. | Consolida gli utensili per ponteggi. Spingi per l'adozione. | 
| Prova i micro-frontend dall'inizio alla fine. | Implementa meccanismi per testare manualmente tutti i micro-frontend correlati. | Investi in strumenti per test automatizzati di sicurezza e prestazioni. Esamina i segnali di funzionalità e l'individuazione dei servizi. | Consolida gli strumenti per l'individuazione dei servizi, i test in produzione e i test automatizzati. end-to-end | 
| Rilascia i micro-frontend. | Investite in un'infrastruttura CI/CD condivisa e in versioni automatizzate in più ambienti. Evangelizza l'adozione. | Consolida gli strumenti per l'infrastruttura CI/CD Implementa meccanismi di rollback manuali. Spingi per l'adozione. | Crea meccanismi per avviare rollback automatici in aggiunta alle metriche e agli avvisi di sistema e aziendali. | 
| Osserva le prestazioni dei microfrontend. | Investite in un'infrastruttura e una libreria di monitoraggio condivise per la registrazione coerente degli eventi di sistema e aziendali. | Consolida gli strumenti per il monitoraggio e gli avvisi. Implementa dashboard interteam per monitorare lo stato generale e migliorare la gestione degli incidenti. | Standardizza gli schemi di registrazione. Ottimizza i costi. Implementa gli avvisi basati su metriche aziendali complesse. | 