The recent increase in popularity of cloud computing systems has created new issues of scalability, flexibility, and code dimensions for traditional monolithic architecture softwares. Currently, the microservice architecture offers a solution to these problems, so, many important global companies are migrating their legacy systems to this new architecture. The microservice approach has gained a lot of popularity, yet, it presents many challenges, with the biggest being the migration of legacy applications to this new architecture. The migration process can be divided in extraction of services from the preexistent code base and implementation of the microservices. While many models for the decomposition of legacy applications exist, it is still mostly regarded as an art the system architect has to learn, and no general approach has emerged. Most of the techniques proposed in recent studies have issues connected either with code coverage or with the recognition of business processes of the legacy application, and usually sacrifice one in favor of the other. With this thesis we aim to find a new methodology for the decomposition of legacy code bases into microservice candidates that tries to solve the recognized issues. Specifically, we defined a model that requires to analyse the application both statically, with the generation of a static call graph and a class diagram, and dynamically, with the extraction from the application’s logs of a dynamic call graph. All these artifacts are then merged into an application graph, representing all of the system and its connections. The arcs of the application graph are assigned different values connected to the importance the architect wants to give to each aspect of the decomposition. Lastly, the application graph is clustered to produce the microservice candidates, after a check from the application’s architect. We evaluated the proposed methodology by testing it on a real-world application. The obtained results are promising compared to some key aspects of the architecture, specifically high internal cohesion and low external coupling.

Il recente aumento di popolarità dei sistemi di cloud computing ha creato nuovi problemi di scalabilità, flessibilità e dimensioni del codice per i tradizionali software con architettura monolitica. Attualmente, l’architettura a microservizi offre una soluzione a questi problemi, quindi, molte importanti aziende globali stanno migrando i loro sistemi legacy ad essa. L’approccio a microservizi ha guadagnato molta popolarità, ma presenta molte sfide, di cui la più grande è la migrazione delle applicazioni legacy alla nuova architettura. Il processo di migrazione può essere diviso in estrazione di servizi dal codice di base preesistente e implementazione dei microservizi. Anche se esistono molti modelli per la scomposizione delle applicazioni legacy, essa è ancora considerata per lo più un’arte che l’architetto di sistema deve imparare, e non è emerso alcun approccio generale. Molte delle tecniche proposte negli studi recenti presentano problemi legati o alla copertura del codice o al riconoscimento dei processi di business dell’applicazione, e di solito sacrificano uno a favore dell’altro. Con questa tesi ci proponiamo di trovare una nuova metodologia per la scomposizione di basi di codice legacy in microservizi che cerca di risolvere i problemi riconosciuti. Nello specifico, abbiamo definito un modello che richiede di analizzare l’applicazione sia staticamente, con la generazione di un call graph statico e un diagramma delle classi, sia dinamicamente, con l’estrazione dai log dell’applicazione di un call graph dinamico. Questi artefatti vengono poi uniti in un grafo dell’applicazione, che rappresenta tutto il sistema e le sue connessioni. Agli archi del grafo vengono assegnati diversi valori collegati all’importanza che l’architetto vuole dare ad ogni aspetto della scomposizione. Infine, il grafo dell’applicazione viene raggruppato per produrre i candidati a microservizi, dopo un controllo da parte dell’architetto dell’applicazione. Abbiamo valutato la metodologia proposta testandola su un’applicazione reale. I risultati ottenuti sono promettenti rispetto ad alcuni aspetti chiave dell’architettura.

A methodology for microservice decomposition of monolithic systems

CRESCI, PAOLA
2020/2021

Abstract

The recent increase in popularity of cloud computing systems has created new issues of scalability, flexibility, and code dimensions for traditional monolithic architecture softwares. Currently, the microservice architecture offers a solution to these problems, so, many important global companies are migrating their legacy systems to this new architecture. The microservice approach has gained a lot of popularity, yet, it presents many challenges, with the biggest being the migration of legacy applications to this new architecture. The migration process can be divided in extraction of services from the preexistent code base and implementation of the microservices. While many models for the decomposition of legacy applications exist, it is still mostly regarded as an art the system architect has to learn, and no general approach has emerged. Most of the techniques proposed in recent studies have issues connected either with code coverage or with the recognition of business processes of the legacy application, and usually sacrifice one in favor of the other. With this thesis we aim to find a new methodology for the decomposition of legacy code bases into microservice candidates that tries to solve the recognized issues. Specifically, we defined a model that requires to analyse the application both statically, with the generation of a static call graph and a class diagram, and dynamically, with the extraction from the application’s logs of a dynamic call graph. All these artifacts are then merged into an application graph, representing all of the system and its connections. The arcs of the application graph are assigned different values connected to the importance the architect wants to give to each aspect of the decomposition. Lastly, the application graph is clustered to produce the microservice candidates, after a check from the application’s architect. We evaluated the proposed methodology by testing it on a real-world application. The obtained results are promising compared to some key aspects of the architecture, specifically high internal cohesion and low external coupling.
RAVANELLI , PAOLO
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-apr-2022
2020/2021
Il recente aumento di popolarità dei sistemi di cloud computing ha creato nuovi problemi di scalabilità, flessibilità e dimensioni del codice per i tradizionali software con architettura monolitica. Attualmente, l’architettura a microservizi offre una soluzione a questi problemi, quindi, molte importanti aziende globali stanno migrando i loro sistemi legacy ad essa. L’approccio a microservizi ha guadagnato molta popolarità, ma presenta molte sfide, di cui la più grande è la migrazione delle applicazioni legacy alla nuova architettura. Il processo di migrazione può essere diviso in estrazione di servizi dal codice di base preesistente e implementazione dei microservizi. Anche se esistono molti modelli per la scomposizione delle applicazioni legacy, essa è ancora considerata per lo più un’arte che l’architetto di sistema deve imparare, e non è emerso alcun approccio generale. Molte delle tecniche proposte negli studi recenti presentano problemi legati o alla copertura del codice o al riconoscimento dei processi di business dell’applicazione, e di solito sacrificano uno a favore dell’altro. Con questa tesi ci proponiamo di trovare una nuova metodologia per la scomposizione di basi di codice legacy in microservizi che cerca di risolvere i problemi riconosciuti. Nello specifico, abbiamo definito un modello che richiede di analizzare l’applicazione sia staticamente, con la generazione di un call graph statico e un diagramma delle classi, sia dinamicamente, con l’estrazione dai log dell’applicazione di un call graph dinamico. Questi artefatti vengono poi uniti in un grafo dell’applicazione, che rappresenta tutto il sistema e le sue connessioni. Agli archi del grafo vengono assegnati diversi valori collegati all’importanza che l’architetto vuole dare ad ogni aspetto della scomposizione. Infine, il grafo dell’applicazione viene raggruppato per produrre i candidati a microservizi, dopo un controllo da parte dell’architetto dell’applicazione. Abbiamo valutato la metodologia proposta testandola su un’applicazione reale. I risultati ottenuti sono promettenti rispetto ad alcuni aspetti chiave dell’architettura.
File allegati
File Dimensione Formato  
2022_4_Cresci_01.pdf

non accessibile

Descrizione: Tesi
Dimensione 3.85 MB
Formato Adobe PDF
3.85 MB Adobe PDF   Visualizza/Apri
2022_4_Cresci_02.pdf

non accessibile

Descrizione: Executive summary
Dimensione 493.37 kB
Formato Adobe PDF
493.37 kB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/186148