  In migrating production workloads to cloud, enterprises often face the
daunting task of evolving monolithic applications toward a microservice
architecture. At IBM, we developed a tool called Mono2Micro to assist with this
challenging task. Mono2Micro performs spatio-temporal decomposition, leveraging
well-defined business use cases and runtime call relations to create
functionally cohesive partitioning of application classes. Our preliminary
evaluation of Mono2Micro showed promising results. How well does Mono2Micro
perform against other decomposition techniques, and how do practitioners
perceive the tool? This paper describes the technical foundations of Mono2Micro
and presents results to answer these two questions. To answer the first
question, we evaluated Mono2Micro against four existing techniques on a set of
open-source and proprietary Java applications and using different metrics to
assess the quality of decomposition and tool's efficiency. Our results show
that Mono2Micro significantly outperforms state-of-the-art baselines in
specific metrics well-defined for the problem domain. To answer the second
question, we conducted a survey of twenty-one practitioners in various industry
roles who have used Mono2Micro. This study highlights several benefits of the
tool, interesting practitioner perceptions, and scope for further improvements.
Overall, these results show that Mono2Micro can provide a valuable aid to
practitioners in creating functionally cohesive and explainable microservice
decompositions.
