Introduzione ai Micro Frontend

Esattamente come il termine Microservices Architecture indica l’approccio allo sviluppo di una singola applicazione come insieme di piccoli servizi indipendenti, così il termine Micro Frontend indica il modo di pensare ad una applicazione web come alla composizione di funzionalità raggruppate in componenti separati. In pratica, i Micro Frontend estendono i concetti dei microservizi al mondo del frontend web.

Se, da un lato, ci sono poche controversie quando parliamo di progettazione di servizi di backend (grazie anche alla molteplice letteratura che è possibile trovare online) dall’altro le cose si complicano quando dobbiamo utilizzare i microservizi come elementi costitutivi per una soluzione di frontend.

Questo perché agli utenti finali non interessa quanto siamo bravi a dividere il nostro backend in microservizi, ma quello che conta è quanto siamo bravi a integrarli in modo trasparente nel browser, per creare un’applicazione omogenea ed accattivante dal punto di vista della UserExperience (UX).

Quindi la domanda a cui proviamo a rispondere in questo articolo è: come è possibile creare un sito web coerente o una app mobile utilizzando decine di microservizi differenti?

Per rispondere a questa domanda è necessario ricordare quali sono gli approcci più comuni quando si sviluppa il frontend di un’applicazione web.

L’approccio “monolitico”

L’approccio “monolitico” rappresenta il modo più semplice per realizzare un’applicazione web ed è caratterizzato dallo sviluppo di un’applicazione intesa come una singola entità.

Un solo team di sviluppatori crea e gestisce un’intera applicazione e ha il compito di scrivere e manutenere tutto il codice: dal database fino al frontend.

Queste applicazioni monolitiche sono facili da implementare, poiché hanno una sola base di codice, e sono tipicamente raccolte in un unico progetto, ma hanno lo svantaggio di non essere scalabili. 

Infatti questo tipo di architettura si presta bene per applicazioni piccole o comunque poco soggette a cambiamenti, ma il discorso cambia quando ci troviamo a sviluppare applicazioni complesse che evolvono rapidamente.

In una grande azienda, con molti team di sviluppo, il singolo team di frontend potrebbe diventare il collo di bottiglia per lo sviluppo. Oltre a questo, può facilmente accadere che le applicazioni monolitiche crescano in modo imprevedibile e esponenziale sia in dimensioni che in complessità, il che rende difficile muoversi rapidamente sia in fase di sviluppo che in quella di test.

Un eventuale nuovo sviluppatore che entra nel team, ha bisogno di imparare il funzionamento dell’intera applicazione, indipendentemente da quello che deve sviluppare; inoltre ogni piccola modifica deve passare attraverso un test completo dell’intera applicazione prima di poter essere distribuita in produzione.

Per ultimo, ma per questo non meno importante, l’unico modo per poter scalare un’applicazione monolitica è quello di replicare l’intera applicazione con il conseguente aumento dei costi e delle risorse necessarie. 

Pagina successiva: l’approccio “multi-tier”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *