Caratteristiche, funzionamento e vantaggi dell’Architettura Monolitica in informatica

Caratteristiche, funzionamento e vantaggi dell’Architettura Monolitica in informatica

Architettura Monolitica

Quando si sviluppa un’applicazione, se questa è composta da funzionalità contenute in un unico blocco (detto “monolite”), si parla di architettura monolitica. Essendo presente sin dai primi programmi su mainframe, nell’informatica l’architettura monolitica è quella tradizionale ed è inoltre anche la più semplice.
Quando tutte le funzionalità del sistema sono racchiuse in un’unica entità si parla di applicazione con architettura monolitica. Un software monolitico è progettato per essere autonomo.

L’architettura monolitica si presta bene alla realizzazione di piccole applicazioni o comunque applicazioni poco soggette a cambiamenti, questa applicazioni sono facili da implementare poichè tipicamente sono raccolte in un unico progetto. Le cose si fanno un pochettino diverse se ci troviamo a sviluppare applicazioni complesse e che evolvono rapidamente. In queste situazioni, infatti, le applicazioni monolitiche possono facilmente diventare di grandi dimensioni e aumentare ancor di più di complessità, il che rende difficile muoversi rapidamente in fase di sviluppo, test e implementazione. In un applicazione monolitica, un nuovo sviluppatore che entra nel team ha bisogno di imparare il funzionamento dell’intera applicazione indipendentemente da quello che lui deve sviluppare, inoltre ogni piccola modifica deve passare attraverso un test completo dell’intera applicazione prima di essere distribuita in produzione. Per quanto riguarda la scalabilità in un’applicazione monolitica, l’unico modo è quello di replicare l’intera applicazione con conseguente aumento di costi e risorse necessarie.

Caratteristiche, funzionamento e vantaggi dell'Architettura Monolitica in informatica

Vantaggi

Le applicazioni sviluppate in questo modo, se di dimensioni estremamente ridotte, risultano molto semplici da sviluppare. Le applicazioni monolitiche, sono anche semplici da implementare, infatti è sufficiente distribuire il file WAR (o la gerarchia di directory) sul runtime appropriato. Un altro vantaggio sta nel fatto che è semplice da scalare; basta eseguire più copie ed eseguire simultaneamente. Quindi è utile utilizzare l’architettura monolitica quando l’applicazione è di dimensioni ridotte e questo da il vantaggio di fare uso di un’unica tecnologia per sviluppare tutte le funzionalità richieste dai requisiti. Di particolare rilievo è il fatto che si possono eseguire test di funzionamento dell’intera applicazione in un singolo passaggio, proprio grazie al fatto che è monolitica. L’installazione e la distribuzione di un’applicazione monolitica, vengono effettuate semplicemente con operazioni di copia/trasferimento ed esecuzione dei file.

Svantaggi

Quando un’applicazione monolitica aumenta di dimensioni, per esempio migliorando ed estendendo le varie funzionalità, aggiungendo nuovi moduli o rispettando ulteriori e nuovi requisiti richiesti da chi la utilizza, ci accorgiamo che l’utilizzo dell’architettura monolitica porta a numerosi svantaggi. L’applicazione è implementata con l’uso di un’unica tecnologia che nel tempo può diventare obsoleta e meno efficiente, inoltre col passare degli anni nuovi sviluppatori, che per ipotesi entrano a far parte del team di sviluppo, potrebbero conoscere poco o non conoscere affatto la tecnologia e il linguaggio di programmazione utilizzato nella prima versione. Questo svantaggio, comporta spreco di tempo per apprendere le nozioni necessarie per poter iniziare le modifiche e quindi maggior tempo di aggiornamento. Un altro degli svantaggi è che la modifica di una singola parte o di un modulo comporta la ridistribuzione dell’intera applicazione, aumentando i tempi in cui non è disponibile in produzione. Per quanto riguarda la scalabilità, diversi moduli potrebbero avere requisiti hardware diversi e a volte in contrasto tra loro, portando lo svantaggio di dover limitare le risorse come compromesso per poter distribuire l’applicazione. In fine, ma non meno importante, c’è il fatto che nel momento in cui l’applicazione diventa molto complessa, anche solo capire il codice diventa un’impresa molto ardua e qualsiasi modifica, ad esempio la correzione di un bug, può portare ad azioni che complicano ancora di più la situazione.

Col passare degli anni, la grande evoluzione della Rete ha fatto si che tantissime organizzazioni come Netflix, Uber, Amazon, Ebay, ecc. passassero dall’organizzazione interna basata su un’architettura monolotica ai microservizi. Tra le più importanti, come già citato, troviamo Netflix che ha avuto un ruolo importante nello sviluppo di architetture a microservizi, esso è riuscito a costruire un sistema distribuito estremamente funzionale per la gestione del traffico di rete. Netflix ha deciso di rilasciare, col progetto Netflix OSS nel 2012, il codice sorgente, consentendo così a tutti di utilizzare le proprie librerie per lo sviluppo di architetture a microservizi basate su cloud. Il passaggio da architettura monolitica ai microservizi è avvenuto progressivamente col succedersi di svariate innovazioni tecnologiche. Per ovviare ad alcuni svantaggi del monolite, si era passati allo sviluppo multi-strato che praticamente consiste nel suddividere il blocco monolitico in più parti, ognuna con uno specifico scopo. Questa tecnica è però stata quasi subito abbandonata, perchè presentava problemi simili alla precedente e nel caso di particolare complessità andava a ricreare il blocco monolite.

Precedente Testing software: Differenza tra error, bug, fault, defect e failure in informatica Successivo Caratteristiche, funzionamento e vantaggi dell'Architettura SOA in informatica

Lascia un commento