L'evoluzione dell'approccio alla creazione delle applicazioni negli ultimi anni è dovuta ad un nuovo modo di concepire il software. Scopriamo di cosa si tratta.
I primi applicativi erano costruiti in maniera monolitica, ossia c'era un'unica base di codice che racchiudeva tutte le funzionalità del caso. Il vantaggio di questo approccio sta nella semplicità di implementazione, a patto che si tratti di un'app di dimensioni piuttosto modeste. Ma se la nostra app diventasse più complessa e pesante, questo sistema genererebbe non pochi problemi: sarebbe difficile identificare i bug data la dimensione estesa, in caso di ingresso nel team di un nuovo sviluppatore egli dovrebbe studiare tutte le funzionalità dell'app (anche quelle che non andrà a sviluppare), e per scalare questo applicativo bisognerebbe farne una copia su un altro server, il che aumenterebbe i tempi e i costi.
Per supplire ad alcuni di questi svantaggi, si è poi passato allo sviluppo multi-strato, che consiste nel suddividere il blocco monolitico in più parti, ognuna con uno specifico scopo. Ad esempio abbiamo la parte di storage dei dati, quella di gestione e utilizzo degli stessi e la parte lato utente. Anche questa architettura però presenta dei problemi simili alla precedente: nel caso in cui essa diventasse più complessa, lo strato relativo alla gestione dei dati diventerebbe anch'esso molto complesso, andando a ricreare il monolite che avevamo descritto in precedenza.
Nonostante lo sviluppo multi-strato non abbia portato grandi miglioramenti, grazie ad esso ha iniziato a diffondersi una nuova mentalità, quella della scomposizione delle applicazioni. Bisognava soltanto trovare il criterio giusto con cui suddividerle: si abbandona quindi la suddivisione a livello di stack tipica del multi-strato e si passa a una ripartizione in base alle funzionalità. L'app diventa quindi un insieme di piccoli servizi che vanno a creare qualcosa di più complesso.
Da qui nasce il modello architetturale microservices, nel quale l'app è un sistema distribuito formato da piccoli servizi indipendenti che comunicano tra loro tramite API. La modifica di un microservizio non può quindi impattare sugli altri.
Ma quindi quali sono, concretamente, i vantaggi che l'adozione di questa modalità di scrittura delle applicazioni può apportare agli sviluppatori e, di conseguenza, anche a te come cliente?
Qui a DevInterface ci stiamo muovendo sempre più verso l'utilizzo dell'architettura a microservizi perché si sposa molto bene con la metodologia Agile permettendo di velocizzare i tempi di rilascio del software e reagire in modo istantaneo alle tue richieste. Inoltre possiamo godere dell'estrema resilienza del sistema: quando una componente non funziona, non è detto che non funzioni tutta l'applicazione, quindi è possibile isolare facilmente la piccola porzione di codice malfunzionante e correggerla. Si ha poi un elevato livello di scalabilità che permette di far crescere le dimensioni dell'app in modo dinamico e smart. Un altro grande punto di forza risiede nella componibilità: uno stesso microservizio può essere riutilizzato per applicazioni diverse. Per concludere abbiamo la sostituibilità: il costo e l'impiego di risorse per sostituire un servizio con uno più performante o per eliminarne uno divenuto inutile è molto basso.
I microservizi presentano anche delle criticità, che possono essere comunque superate scrivendo un codice di alta qualità.
Ad esempio è richiesto un alto livello di automazione dei servizi, e ciò è utile per gestire i numerosi flussi di distribuzione e per eseguire test su tutto il sistema (è semplice testare il singolo servizio ma può diventare complicato il test dell'app completa). Inoltre, siccome i diversi servizi comunicano tra loro attraverso la rete, possono verificarsi latenze o fallimenti che vanno ad impattare negativamente sulla user experience.
Nonostante ciò, a DevInterface pensiamo che questa sia la modalità più performante di sviluppo del software. Tu che ne pensi? Secondo te lo sviluppo di app con questa architettura potrebbe portarti ulteriori vantaggi o svantaggi come nostro cliente?
Faccelo sapere nei commenti!
Grazie per aver letto l'articolo.
Per maggiori informazioni contattaci quioppure su Facebook o Twitter, dove potrai anche seguirci per rimanere aggiornato sui nostri articoli.