Advertisement

Determining Microservice Boundaries: A Case Study Using Static and Dynamic Software Analysis

Conference paper
  • 462 Downloads
Part of the Lecture Notes in Computer Science book series (LNCS, volume 12292)

Abstract

A number of approaches have been proposed to identify service boundaries when decomposing a monolith to microservices. However, only a few use systematic methods and have been demonstrated with replicable empirical studies. We describe a systematic approach for refactoring systems to microservice architectures that uses static analysis to determine the system’s structure and dynamic analysis to understand its actual behavior. A prototype of a tool was built using this approach (MonoBreaker) and was used to conduct a case study on a real-world software project. The goal was to assess the feasibility and benefits of a systematic approach to decomposition that combines static and dynamic analysis. The three study participants regarded as positive the decomposition proposed by our tool, and considered that it showed improvements over approaches that rely only on static analysis.

Keywords

Microservices Refactoring Software architecture 

Notes

Acknowledgment

João Paiva Pinto and Isabel Azevedo discussed different forms of this work with us. We thank them for all the precious feedback.

This work is financed by National Funds through the Portuguese funding agency, FCT - Fundação para a Ciência e a Tecnologia within project UIDB/50014/2020.

References

  1. 1.
    Fowler, M.: Monolith first. Martin Fowler’s Bliki (2015). https://martinfowler.com/bliki/MonolithFirst.html. Accessed 27 Nov 2019
  2. 2.
    Balalaie, A., Heydarnoori, A., Jamshidi, P.: Migrating to cloud-native architectures using microservices: an experience report. In: Celesti, A., Leitner, P. (eds.) ESOCC Workshops 2015. CCIS, vol. 567, pp. 201–215. Springer, Cham (2016).  https://doi.org/10.1007/978-3-319-33313-7_15CrossRefGoogle Scholar
  3. 3.
    Fritzsch, J., Bogner, J., Wagner, S., Zimmermann, A.: Microservices migration in industry: intentions, strategies, and challenges. In: 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 481–490 (2019)Google Scholar
  4. 4.
    Ponce, F., Márquez, G., Astudillo, H.: Migrating from monolithic architecture to microservices: a rapid review. In: Proceedings of 38th International Conference of the Chilean Computer Science Society (SCCC 2019), Chile (2019)Google Scholar
  5. 5.
    Fritzsch, J., Bogner, J., Zimmermann, A., Wagner, S.: From monolith to microservices: a classification of refactoring approaches. In: Bruel, J.-M., Mazzara, M., Meyer, B. (eds.) DEVOPS 2018. LNCS, vol. 11350, pp. 128–141. Springer, Cham (2019).  https://doi.org/10.1007/978-3-030-06019-0_10CrossRefGoogle Scholar
  6. 6.
    Newman, S.: Building Microservices: Designing Fine-Grained Systems, 1st edn. O’Reilly Media, Sebastopol (2015)Google Scholar
  7. 7.
    Newman, S.: Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith, 1st edn. O’Reilly Media, Sebastopol (2019)Google Scholar
  8. 8.
    Richardson, C.: Microservices Patterns: With examples in Java. Manning, Shelter Island (2018)Google Scholar
  9. 9.
    Tyszberowicz, S., Heinrich, R., Liu, B., Liu, Z.: Identifying microservices using functional decomposition. In: Feng, X., Müller-Olm, M., Yang, Z. (eds.) SETTA 2018. LNCS, vol. 10998, pp. 50–65. Springer, Cham (2018).  https://doi.org/10.1007/978-3-319-99933-3_4CrossRefGoogle Scholar
  10. 10.
    Martin, R.C.: Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Prentice Hall, Upper Saddle River (2017)Google Scholar
  11. 11.
    Evans, E.: Domain-Driven Design. Addison-Wesley Professional, Boston (2003)Google Scholar
  12. 12.
    Millett, S., Tune, N.: Patterns, Principles, and Practices of Domain-driven Design. Wiley, Hoboken (2015)Google Scholar
  13. 13.
    Nunes, L., Santos, N., Rito Silva, A.: From a monolith to a microservices architecture: an approach based on transactional contexts. In: Bures, T., Duchien, L., Inverardi, P. (eds.) ECSA 2019. LNCS, vol. 11681, pp. 37–52. Springer, Cham (2019).  https://doi.org/10.1007/978-3-030-29983-5_3CrossRefGoogle Scholar
  14. 14.
    Chen, R., Li, S., Li, Z.: From monolith to microservices: a dataflow-driven approach. In: Proceedings of the 24th Asia-Pacific Software Engineering Conference – APSEC 2017, pp. 466–475. IEEE (2018)Google Scholar
  15. 15.
    Kälbener, L., Gysel, M.: Service cutter: a structured way to service decomposition. https://servicecutter.github.io/
  16. 16.
    Gysel, M., Kölbener, L., Giersche, W., Zimmermann, O.: Service cutter: a systematic approach to service decomposition. In: Aiello, M., Johnsen, E.B., Dustdar, S., Georgievski, I. (eds.) ESOCC 2016. LNCS, vol. 9846, pp. 185–200. Springer, Cham (2016).  https://doi.org/10.1007/978-3-319-44482-6_12CrossRefGoogle Scholar
  17. 17.
    Ren, Z., et al.: Migrating web applications from monolithic structure to microservices architecture. In: Proceedings of the Tenth Asia-Pacific Symposium on Internetware, series ICPS, Internetware 2018. ACM, New York (2018)Google Scholar
  18. 18.
    Taibi, D., Systä, K.: From monolithic systems to microservices: a decomposition framework based on process mining. In: Proceedings of the 9th International Conference on Cloud Computing and Services Science—CLOSER 2019 (2019)Google Scholar
  19. 19.
    Newman, M.E.J., Girvan, M.: Finding and evaluating community structure in networks. Phys. Rev. E 69(2) (2004). https://journals.aps.org/pre/abstract/10.1103/PhysRevE.69.026113
  20. 20.
    Likert, R.: A technique for measurement of attitudes. Arch. Psychol. 22, 5–55 (1932)Google Scholar
  21. 21.
    Bogner, J., Wagner, S., Zimmermann, A.: Automatically measuring the maintainability of service- and microservice-based systems: a literature review. In: Proceedings of the 27th International Workshop on Software Measurement and 12th International Conference on Software Process and Product Measurement, series ICPS, IWSM Mensura 2017, pp. 107–115. ACM, New York (2017)Google Scholar

Copyright information

© Springer Nature Switzerland AG 2020

Authors and Affiliations

  1. 1.Faculty of EngineeringUniversity of PortoPortoPortugal
  2. 2.INESC TEC, FEUP CampusPortoPortugal
  3. 3.LIACC, FEUP CampusPortoPortugal
  4. 4.Institute of Software TechnologyUniversity of StuttgartStuttgartGermany
  5. 5.University of Applied Sciences ReutlingenReutlingenGermany

Personalised recommendations