Event-Driven Decomposition Strategies for Migrating Monolithic Enterprise Platforms to Resilient Microservice Architectures
Main Article Content
Abstract
Enterprise platforms are often operated in large monoliths. They are moved to microservices by teams to achieve scale, quicker releases and isolation of failures. Most of these moves do not provide resilience since services make long synchronous chains among themselves. The paper suggests an event-based decomposition plan to such migrations. There are five phases of the strategy. They consist of domain mapping, cut scoring, event contract design, strangler extraction and fault injection testing. The work is directed by two scores. A cut score is measured to assess the effectiveness of a service in retaining its calls and data within the boundary of the service. An event conversion ratio calculates the number of cross service interactions that consume events as compared to direct call. Design decisions are related to resilience through a path availability equation and an event lag equation. The test is carried out on a virtual order management system with 1.4 million code lines and 236 database tables. The site is divided into two services into eight parts. One of them is synchronous calls. The remaining uses the suggested strategy. The foundation of a monolith is the basis. The event driven version supports 1,000 orders/minute with a p95 latency of 360 milliseconds compared to 655 milliseconds in the synchronous version. The one service outage completes 91 percent against 47 percent of orders. The recovery time decreases from 22 to 9 minutes. The variations also decrease from 3.9 to 1.6 per 10,000 orders. After release, one of eight service boundaries had to change. The event driven version takes 38 person months compared to 31. The cuts should be influenced by event design.
Article Details

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
References
[1] N. Dragoni et al., “Microservices: Yesterday, Today, and Tomorrow,” in Present and Ulterior Software Engineering, M. Mazzara and B. Meyer, Eds., Cham: Springer International Publishing, 2017, pp. 195–216. doi: 10.1007/978-3-319-67425-4_12.
[2] D. Taibi, V. Lenarduzzi, and C. Pahl, “Microservices Anti-patterns: A Taxonomy,” in Microservices: Science and Engineering, A. Bucchiarone, N. Dragoni, S. Dustdar, P. Lago, M. Mazzara, V. Rivera, and A. Sadovykh, Eds., Cham: Springer International Publishing, 2020, pp. 111–128. doi: 10.1007/978-3-030-31646-4_5.
[3] X. Zhou et al., “Fault Analysis and Debugging of Microservice Systems: Industrial Survey, Benchmark System, and Empirical Study,” IEEE Trans. Softw. Eng., vol. 47, no. 2, pp. 243–260, 2021, doi: 10.1109/TSE.2018.2887384.
[4] A. Balalaie, A. Heydarnoori, and P. Jamshidi, “Microservices Architecture Enables DevOps: Migration to a Cloud-Native Architecture,” IEEE Softw., vol. 33, no. 3, pp. 42–52, 2016, doi: 10.1109/MS.2016.64.
[5] H. Knoche and W. Hasselbring, “Using Microservices for Legacy Software Modernization,” IEEE Softw., vol. 35, no. 3, pp. 44–49, 2018, doi: 10.1109/MS.2018.2141035.
[6] W. Hasselbring and G. Steinacker, “Microservice Architectures for Scalability, Agility and Reliability in E-Commerce,” in 2017 IEEE International Conference on Software Architecture Workshops (ICSAW), 2017, pp. 243–246. doi: 10.1109/ICSAW.2017.11.
[7] P. Di Francesco, P. Lago, and I. Malavolta, “Migrating Towards Microservice Architectures: An Industrial Survey,” in 2018 IEEE International Conference on Software Architecture (ICSA), 2018, pp. 29–2909. doi: 10.1109/ICSA.2018.00012.
[8] D. Taibi, V. Lenarduzzi, and C. Pahl, “Processes, motivations, and issues for migrating to microservices architectures: An empirical investigation,” IEEE Cloud Comput., vol. 4, no. 5, pp. 22–32, 2017, doi: 10.1109/MCC.2017.4250931.
[9] J. Fritzsch, J. Bogner, S. Wagner, and A. Zimmermann, “Microservices migration in industry: Intentions, strategies, and challenges,” in 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME), IEEE, 2019, pp. 481–490. doi: 10.1109/ICSME.2019.00081.
[10] G. Mazlami, J. Cito, and P. Leitner, “Extraction of Microservices from Monolithic Software Architectures,” in 2017 IEEE International Conference on Web Services (ICWS), 2017, pp. 524–531. doi: 10.1109/ICWS.2017.61.
[11] M. Gysel, L. Kölbener, W. Giersche, and O. Zimmermann, “Service Cutter: A Systematic Approach to Service Decomposition,” in Service-Oriented and Cloud Computing, M. Aiello, E. B. Johnsen, S. Dustdar, and I. Georgievski, Eds., Cham: Springer International Publishing, 2016, pp. 185–200. doi: https://doi.org/10.1007/978-3-319-44482-6_12.
[12] W. Jin, T. Liu, Y. Cai, R. Kazman, R. Mo, and Q. Zheng, “Service Candidate Identification from Monolithic Systems Based on Execution Traces,” IEEE Trans. Softw. Eng., vol. 47, no. 5, pp. 987–1007, 2021, doi: 10.1109/TSE.2019.2910531.
[13] R. Chen, S. Li, and Z. Li, “From Monolith to Microservices: A Dataflow-Driven Approach,” in 2017 24th Asia-Pacific Software Engineering Conference (APSEC), 2017, pp. 466–475. doi: 10.1109/APSEC.2017.53.
[14] L. Baresi, M. Garriga, and A. De Renzis, “Microservices Identification Through Interface Analysis,” in Service-Oriented and Cloud Computing, F. De Paoli, S. Schulte, and E. Broch Johnsen, Eds., Cham: Springer International Publishing, 2017, pp. 19–33. doi: https://doi.org/10.1007/978-3-319-67262-5_2.
[15] A. Bucchiarone, N. Dragoni, S. Dustdar, S. T. Larsen, and M. Mazzara, “From Monolithic to Microservices: An Experience Report from the Banking Domain,” IEEE Softw., vol. 35, no. 3, pp. 50–55, 2018, doi: 10.1109/MS.2018.2141026.
[16] M. Overeem, M. Spoor, and S. Jansen, “The dark side of event sourcing: Managing data conversion,” in 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), 2017, pp. 193–204. doi: 10.1109/SANER.2017.7884621.
[17] V. Heorhiadi, S. Rajagopalan, H. Jamjoom, M. K. Reiter, and V. Sekar, “Gremlin: Systematic Resilience Testing of Microservices,” in 2016 IEEE 36th International Conference on Distributed Computing Systems (ICDCS), 2016, pp. 57–66. doi: 10.1109/ICDCS.2016.11.
[18] A. Basiri et al., “Chaos Engineering,” IEEE Softw., vol. 33, no. 3, pp. 35–41, 2016, doi: 10.1109/MS.2016.60.
[19] P. Jamshidi, C. Pahl, N. C. Mendonça, J. Lewis, and S. Tilkov, “Microservices: The Journey So Far and Challenges Ahead,” IEEE Softw., vol. 35, no. 3, pp. 24–35, 2018, doi: 10.1109/MS.2018.2141039.