Modularization of a Monolith
Creators: name: Belli, Riccardo
Publisher: name: Scuola Universitaria della Svizzera Italiana (SUPSI)
Year: 2024
Subjects: computer science
bank

description: Questa tesi presenta uno studio completo sulla modularizzazione di un sistema monolitico, concentrandosi sul dominio della gestione dei audit logs di DSwiss, un'azienda specializzata in servizi digitali ad alta sicurezza. Le applicazioni chiave di DSwiss, come E-Safe Digital (gestore di file e password) e Secure Postbox, fondamentali per clienti come banche private e compagnie assicurative, erano sostenute da un sistema di backend che si era evoluto in un complesso e ingombrante monolite. Sebbene un'architettura monolitica presenti molti vantaggi, fra i quali la semplicità e la facilità di gestione, nel caso di DSwiss sono emersi diversi svantaggi, tra cui le difficoltà di manutenzione, la limitata flessibilità dello stack tecnologico e la gestione non ottimale di diversi requisiti poco funzionali. In particolare, la funzione dei registri di controllo, che rileva meticolosamente varie azioni, come il caricamento di dati o la rinominazione di file, presenta sfide uniche rispetto ad altri componenti del sistema. Il continuo afflusso di una grande quantità di dati di audit logs contrasta nettamente con il resto del sistema: la tabella degli audit logs è la più grande del database e le sue dimensioni hanno ostacolato in modo significativo le funzionalità del database. In risposta, il progetto ha adottato una strategia di modularizzazione, guidata dai principi del Domain- Driven Design, per decomporre il sistema in moduli più piccoli e gestibili, estraendo il dominio Audit. EM stata condotta un'analisi approfondita del sistema attuale, sono state esplorate alternative architetturali ed è stata proposta una nuova architettura per il dominio Audit. Il risultato principale di questo progetto è stato la creazione di un servizio di audit log titolo documento 2/3 autonomo utilizzando Elasticsearch, migliorando in modo significativo le prestazioni e la scalabilità. Nonostante le sfide incontrate, il progetto ha dimostrato capacità di adattamento. Ha raggiunto la maggior parte degli obiettivi prefissati, soprattutto la concezione e l'implementazione di una strategia di migrazione per i vecchi dati e le prestazioni ottenute nel recupero dei registri di audit. Il successo del progetto nell'ambito dell'Audit è un modello per i futuri sforzi di modularizzazione all'interno dell'organizzazione e offre preziosi insegnamenti per iniziative simili. ____ This thesis presents a comprehensive study of the modularization of a monolithic system, focusing on the audit log management domain of DSwiss, a company specialized in highsecurity digital services. DSwiss's key applications, such as the E-Safe Digital (file and password manager) and the Secure Postbox, crucial to clients like private banks and insurance companies, were underpinned by a backend system that had evolved into a complex and unwieldy monolith. While a monolithic architecture has many advantages, like its simplicity and management ease, in DSwiss's case, the disadvantages, including maintenance challenges, limited technology stack flexibility, and suboptimal handling of diverse non-functional requirements, became evident. In particular, the audit logs feature, which meticulously records various actions, such as data uploads or file renames, presents unique challenges distinct from other system components. The continuous influx of a vast amount of audit log data contrasts sharply with the rest of the system: the audit log table is the largest in the database, and its size has significantly hampered database functionalities. In response, the project adopted a modularization strategy, guided by Domain-Driven Design principles, to decompose the system into smaller, manageable modules by extracting the Audit domain. An in- depth analysis of the current system was conducted, architectural alternatives were explored, and a new architecture for the Audit domain was proposed and implemented as a functioning prototype. The core achievement of this project was creating a standalone audit log service using Elasticsearch, significantly enhancing performance and scalability. Despite encountering challenges, the project demonstrated adaptability. It achieved most prefixed goals, mainly the conception and implementation of a migration strategy for the old data and the performance achieved in the audit log retrieval. The project's success in the Audit domain is a model for future modularization efforts within the organization and offers valuable lessons for similar initiatives.