Skip to main content

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

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNPSE,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.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Notes

  1. 1.

    More information is found at the tool’s website – https://fluxicon.com/disco/.

  2. 2.

    MonoBreaker is freely available at https://github.com/tiagoCMatias/monoBreaker.

  3. 3.

    See https://github.com/jazzband/django-silk for more information.

  4. 4.

    Connectivity-based clustering algorithm, such as Girvam-Newman, are based on the idea that nodes have more affinity to nearby nodes than to those farther way.

  5. 5.

    Throughout this section, we’ll use this notation to represent the answers of the three team members to a questionnaire item using a five-level Likert scale.

  6. 6.

    Gephi is a tool for graph analysis and visualization – https://gephi.org.

  7. 7.

    This was possible by synthesizing a part of the inputs that it requires – namely, the ERM – and omitting the remaining inputs, which we were unable to create without resourcing to software developers – namely, the User Representations and the Coupling Criteria.

References

  1. Fowler, M.: Monolith first. Martin Fowler’s Bliki (2015). https://martinfowler.com/bliki/MonolithFirst.html. Accessed 27 Nov 2019

  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_15

    Chapter  Google Scholar 

  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. 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. 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_10

    Chapter  Google Scholar 

  6. Newman, S.: Building Microservices: Designing Fine-Grained Systems, 1st edn. O’Reilly Media, Sebastopol (2015)

    Google Scholar 

  7. Newman, S.: Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith, 1st edn. O’Reilly Media, Sebastopol (2019)

    Google Scholar 

  8. Richardson, C.: Microservices Patterns: With examples in Java. Manning, Shelter Island (2018)

    Google Scholar 

  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_4

    Chapter  Google Scholar 

  10. Martin, R.C.: Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Prentice Hall, Upper Saddle River (2017)

    Google Scholar 

  11. Evans, E.: Domain-Driven Design. Addison-Wesley Professional, Boston (2003)

    Google Scholar 

  12. Millett, S., Tune, N.: Patterns, Principles, and Practices of Domain-driven Design. Wiley, Hoboken (2015)

    Google Scholar 

  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_3

    Chapter  Google Scholar 

  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. Kälbener, L., Gysel, M.: Service cutter: a structured way to service decomposition. https://servicecutter.github.io/

  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_12

    Chapter  Google Scholar 

  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. 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. 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. Likert, R.: A technique for measurement of attitudes. Arch. Psychol. 22, 5–55 (1932)

    Google Scholar 

  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 

Download references

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.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Filipe F. Correia .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2020 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Matias, T., Correia, F.F., Fritzsch, J., Bogner, J., Ferreira, H.S., Restivo, A. (2020). Determining Microservice Boundaries: A Case Study Using Static and Dynamic Software Analysis. In: Jansen, A., Malavolta, I., Muccini, H., Ozkaya, I., Zimmermann, O. (eds) Software Architecture. ECSA 2020. Lecture Notes in Computer Science(), vol 12292. Springer, Cham. https://doi.org/10.1007/978-3-030-58923-3_21

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-58923-3_21

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-58922-6

  • Online ISBN: 978-3-030-58923-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics