Litcius/Paper detail

Microservice Decomposition via Static and Dynamic Analysis of the Monolith

Alexander Krause, Christian Zirkelbach, Wilhelm Hasselbring, Stephan Lenga, Dan Kröger

202054 citationsDOI

Abstract

Migrating monolithic software systems into microservices requires the application of decomposition techniques to find and select appropriate service boundaries. These techniques are often based on domain knowledge, static code analysis, and non-functional requirements such as maintainability. In this paper, we present our experience with an approach that extends static analysis with dynamic analysis of a legacy software system's runtime behavior, including the live trace visualization to support the decomposition into microservices. Overall, our approach combines established analysis techniques for microservice decomposition, such as the bounded context pattern of domain-driven design, and enriches the collected information via dynamic software visualization to identify appropriate microservice boundaries. In collaboration with the German IT service provider adesso SE, we applied our approach to their real-word, legacy lottery application in|FOCUS to identify good microservice decompositions for this layered monolithic Enterprise Java system.

Topics & Concepts

MicroservicesComputer scienceStatic analysisSoftware engineeringJavaStatic program analysisDistributed computingTRACE (psycholinguistics)TracingMaintainabilitySoftwareVisualizationCall graphProgramming languageCloud computingSoftware developmentOperating systemData miningPhilosophyLinguisticsSoftware System Performance and ReliabilityAdvanced Software Engineering MethodologiesService-Oriented Architecture and Web Services