Microservices are quickly becoming the industry standard as the paradigm chosen for the development and deployment of vast service-oriented web applications. Providing a suitable decomposition of a monolithic architecture to obtain microservices can prove to be a particularly hard practice, even for experts of the system, as it requires balancing a suitable level of decoupling with a satisfactory number of services, with the need of keeping a consistent state for critical data and coherently functioning distributed transactions, which requires communication between the services that naturally increases the more distributed the architecture becomes. Several patterns and best practices have been developed to mitigate the inherent weaknesses associated to distributed systems, but having a high quality decomposition immediately helps in reducing the latency associated to cross-service communication. For this purpose we designed a tool called Cromlech which starting from an high level description of the endpoints of the service oriented architecture and the data they access, can feed such data to a Linear Programming algorithm to produce a decomposition that balances decoupling between the services (and high internal cohesion) and low crossservice communication. The description of the system is provided through a YAML file, and our algorithm allows to choose a maximum number of services for the final decomposition and a weighted objective function for the LP model allowing the user to modulate the tradeoff between internal cohesion/decoupling and cross-service communication. The testing was performed on two architectures: a commercial one of medium size and a theoretical benchmarking one of large size. We compared our decomposition with the ones obtained through two other decomposition tools, and the results show that Cromlech is a competitive system that could help experts of the system in providing a valuable and functional decomposition of their architectures.

Le architetture a microservizi si stanno velocemente affermando come lo standard per la realizzazione di ampie architetture orientate ai servizi. Ottenere una decomposizione valida di un’architettura monolitica può rivelarsi una pratica particolarmente ardua, persino per esperti dell’architettura, poichè richiede di bilanciare il disaccoppiamento fra un numero ragionevole di servizi con la necessità di mantenere uno stato consistente per i dati, che ha a sua volta bisogno di comunicazione tra servizi la quale aumenta naturalmente a seconda di quanto l’architettura è distribuita. Diversi pattern son stati sviluppati per mitigare le debolezze associate ai sistemi distribuiti, ma avere una decomposizione di buona qualità aiuta da subito nella riduzione della latenza associata alla comunicazione tra servizi. Per questo scopo abbiamo realizzato uno strumento chiamato Cromlech, il quale partendo da una descrizione ad alto livello delle operazioni dell’architettura orientata a servizi, fornisce questi dati ad un algoritmo di Programmazione Lineare, che restituisce una decomposizione che bilancia disaccoppiamento tra i servizi (e un’alta coesione al loro interno) e ridotta comunicazione tra i servizi. La descrizione del sistema è fornita con un file YAML, e il nostro algoritmo permette di scegliere un numero massimo di servizi, e una funzione obiettivo pesata permette di modulare il tradeoff tra disaccoppiamento e comunicazione tra servizi. Abbiamo testato l’algoritmo su due architetture: una commerciale di dimensione media e un benchmark teorico di dimensione ampia. Le decomposizioni ottenute son state comparate con quelle fornite da altri due strumenti, e i risultati mostrano che Cromlech è un algoritmo competitivo che può aiutare gli esperti del sistema nella realizzazione di una decomposizione funzionale e utile delle loro architetture

Cromlech : a tool for semi-automatic monolith decomposition into microservices

COCCO, DAVIDE
2020/2021

Abstract

Microservices are quickly becoming the industry standard as the paradigm chosen for the development and deployment of vast service-oriented web applications. Providing a suitable decomposition of a monolithic architecture to obtain microservices can prove to be a particularly hard practice, even for experts of the system, as it requires balancing a suitable level of decoupling with a satisfactory number of services, with the need of keeping a consistent state for critical data and coherently functioning distributed transactions, which requires communication between the services that naturally increases the more distributed the architecture becomes. Several patterns and best practices have been developed to mitigate the inherent weaknesses associated to distributed systems, but having a high quality decomposition immediately helps in reducing the latency associated to cross-service communication. For this purpose we designed a tool called Cromlech which starting from an high level description of the endpoints of the service oriented architecture and the data they access, can feed such data to a Linear Programming algorithm to produce a decomposition that balances decoupling between the services (and high internal cohesion) and low crossservice communication. The description of the system is provided through a YAML file, and our algorithm allows to choose a maximum number of services for the final decomposition and a weighted objective function for the LP model allowing the user to modulate the tradeoff between internal cohesion/decoupling and cross-service communication. The testing was performed on two architectures: a commercial one of medium size and a theoretical benchmarking one of large size. We compared our decomposition with the ones obtained through two other decomposition tools, and the results show that Cromlech is a competitive system that could help experts of the system in providing a valuable and functional decomposition of their architectures.
CUGOLA, GIANPAOLO
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-apr-2022
2020/2021
Le architetture a microservizi si stanno velocemente affermando come lo standard per la realizzazione di ampie architetture orientate ai servizi. Ottenere una decomposizione valida di un’architettura monolitica può rivelarsi una pratica particolarmente ardua, persino per esperti dell’architettura, poichè richiede di bilanciare il disaccoppiamento fra un numero ragionevole di servizi con la necessità di mantenere uno stato consistente per i dati, che ha a sua volta bisogno di comunicazione tra servizi la quale aumenta naturalmente a seconda di quanto l’architettura è distribuita. Diversi pattern son stati sviluppati per mitigare le debolezze associate ai sistemi distribuiti, ma avere una decomposizione di buona qualità aiuta da subito nella riduzione della latenza associata alla comunicazione tra servizi. Per questo scopo abbiamo realizzato uno strumento chiamato Cromlech, il quale partendo da una descrizione ad alto livello delle operazioni dell’architettura orientata a servizi, fornisce questi dati ad un algoritmo di Programmazione Lineare, che restituisce una decomposizione che bilancia disaccoppiamento tra i servizi (e un’alta coesione al loro interno) e ridotta comunicazione tra i servizi. La descrizione del sistema è fornita con un file YAML, e il nostro algoritmo permette di scegliere un numero massimo di servizi, e una funzione obiettivo pesata permette di modulare il tradeoff tra disaccoppiamento e comunicazione tra servizi. Abbiamo testato l’algoritmo su due architetture: una commerciale di dimensione media e un benchmark teorico di dimensione ampia. Le decomposizioni ottenute son state comparate con quelle fornite da altri due strumenti, e i risultati mostrano che Cromlech è un algoritmo competitivo che può aiutare gli esperti del sistema nella realizzazione di una decomposizione funzionale e utile delle loro architetture
File allegati
File Dimensione Formato  
Cromlech a tool for semi-automatic monolith decomposition into microservices.pdf

accessibile in internet per tutti

Dimensione 4.91 MB
Formato Adobe PDF
4.91 MB 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/187821