Skip to main content

Identifying Microservices Using Functional Decomposition

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 10998))

Abstract

The microservices architectural style is rising fast, and many companies use this style to structure their systems. A big challenge in designing this architecture is to find an appropriate partition of the system into microservices. Microservices are usually designed intuitively, based on the experience of the designers. We describe a systematic approach to identify microservices in early design phase which is based on the specification of the system’s functional requirements and that uses functional decomposition. To evaluate our approach, we have compared microservices implementations by three independent teams to the decomposition provided by our approach. The evaluation results show that our decomposition is comparable to manual design, yet within a much shorter time frame.

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.

    The list of verbs that we have found may be updated as some verbs may not be system operations, others may not be mentioned in the informal description, and some verbs are synonyms, hence they describe the same operation.

  2. 2.

    A brain storming is needed to handle issues such as synonyms, irrelevant nouns, etc.

  3. 3.

    A clustering of a graph G consists of a partition of the node set of G.

  4. 4.

    For the implementations see https://github.com/cocome-community-case-study.

  5. 5.

    The implementation created by this group of students can be found in http://cocome.swu-rise.net.cn/.

References

  1. Abbott, R.J.: Program design by informal english descriptions. Commun. ACM 26(11), 882–894 (1983)

    Article  Google Scholar 

  2. Baresi, L., Garriga, M., De Renzis, A.: Microservices identification through interface analysis. In: De Paoli, F., Schulte, S., Broch Johnsen, E. (eds.) ESOCC 2017. LNCS, vol. 10465, pp. 19–33. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-67262-5_2

    Chapter  Google Scholar 

  3. Chen, X., He, J., Liu, Z., Zhan, N.: A model of component-based programming. In: Arbab, F., Sirjani, M. (eds.) FSEN 2007. LNCS, vol. 4767, pp. 191–206. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-75698-9_13

    Chapter  Google Scholar 

  4. Chen, Z., et al.: Refinement and verification in component-based model-driven design. Sci. Comput. Program. 74(4), 168–196 (2009)

    Article  MathSciNet  Google Scholar 

  5. Cockburn, A.: Writing Effective Use Cases. Addison-Wesley, Boston (2000)

    Google Scholar 

  6. de la Torre, C., et al.: .NET Microservices: Architecture for Containerized .NET Applications. Microsoft (2017)

    Google Scholar 

  7. De Santis, S., et al.: Evolve the Monolith to Microservices with Java and Node. IBM Redbooks, Armonk (2016)

    Google Scholar 

  8. Doval, D., Mancoridis, S., Mitchell, B.S.: Automatic clustering of software systems using a genetic algorithm. In: STEP, pp. 73–81. IEEE (1999)

    Google Scholar 

  9. Dragoni, N., et al.: Microservices: yesterday, today, and tomorrow. Present and Ulterior Software Engineering, pp. 195–216. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-67425-4_12

    Chapter  Google Scholar 

  10. Evans, E.: Domain Driven Design: Tackling Complexity in the Heart of Business Software. Addison-Wesley, Boston (2004)

    Google Scholar 

  11. Faitelson, D., Tyszberowicz, S.: Improving design decomposition. Form. Asp. Comput. 22(1), 5:1–5:38 (2017)

    MathSciNet  Google Scholar 

  12. Fowler, M.: MonolithFirst (2015). https://martinfowler.com/bliki/MonolithFirst.html#footnote-typical-monolith. Accessed Mar 2018

  13. Francesco, P.D., et al.: Research on architecting microservices: trends, focus, and potential for industrial adoption. In: ICSA, pp. 21–30. IEEE (2017)

    Google Scholar 

  14. Hassan, M., Zhao, W., Yang, J.: Provisioning web services from resource constrained mobile devices. In: IEEE CLOUD, pp. 490–497 (2010)

    Google Scholar 

  15. Hassan, S., Bahsoon, R.: Microservices and their design trade-offs: a self-adaptive roadmap. In: SCC, pp. 813–818. IEEE (2016)

    Google Scholar 

  16. Hassan, S., et al.: Microservice ambients: an architectural meta-modelling approach for microservice granularity. In: ICSA, pp. 1–10. IEEE (2017)

    Google Scholar 

  17. Hasselbring, W., Steinacker, G.: Microservice architectures for scalability, agility and reliability in E-Commerce. In: ICSA Workshops, pp. 243–246. IEEE (2017)

    Google Scholar 

  18. Heinrich, R., et al.: A platform for empirical research on information system evolution. In: SEKE, pp. 415–420 (2015)

    Google Scholar 

  19. Heinrich, R., et al.: The CoCoME platform for collaborative empirical research on information system evolution. Technical report 2016:2, KIT, Germany (2016)

    Google Scholar 

  20. Heinrich, R., et al.: Performance engineering for microservices: research challenges and directions. In: Companion Proceedings of ICPE, pp. 223–226 (2017)

    Google Scholar 

  21. Jacobson, I., et al.: Object-Oriented Software Engineering - A Use Case Driven Approach. Addison-Wesley, Boston (1992)

    MATH  Google Scholar 

  22. Larman, C.: Applying UML and Patterns, 3rd edn. Prentice Hall, Upper Saddle River (2004)

    Google Scholar 

  23. Lehman, M.M.: On understanding laws, evolution, and conservation in the large-program life cycle. J. Syst. Softw. 1, 213–221 (1980)

    Article  Google Scholar 

  24. Lewis, J., Fowler, M.: Microservices. https://martinfowler.com/articles/microservices.html. Accessed Apr 2018

  25. Li, X., Liu, Z., Schäf, M., Yin, L.: AutoPA: automatic prototyping from requirements. In: Margaria, T., Steffen, B. (eds.) ISoLA 2010. LNCS, vol. 6415, pp. 609–624. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-16558-0_49

    Chapter  Google Scholar 

  26. Mancoridis, S., et al.: Bunch: a clustering tool for the recovery and maintenance of software system structures. In: ICSM, pp. 50–59. IEEE Computer Society (1999)

    Google Scholar 

  27. Martin, R.C.: Agile Software Development: Principles, Patterns, and Practices. Prentice Hall, Upper Saddle River (2003)

    Google Scholar 

  28. Namiot, D., Sneps-Sneppe, M.: On micro-services architecture. J. Open Inf. Technol. 2(9), 24–27 (2014)

    Google Scholar 

  29. Newman, S.: Building Microservices. O’Reilly, Sebastopol (2015)

    Google Scholar 

  30. North, S.C.: Drawing graphs with NEATO. User Manual (2004)

    Google Scholar 

  31. Raman, A., Tyszberowicz, S.S.: The EasyCRC tool. In: ICSEA, pp. 52–57. IEEE (2007)

    Google Scholar 

  32. Rausch, A., Reussner, R., Mirandola, R., Plášil, F. (eds.): The Common Component Modeling Example: Comparing Software Component Models. LNCS, vol. 5153. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-85289-6

    Book  Google Scholar 

  33. Reussner, R.H., et al.: Modeling and Simulating Software Architectures - The Palladio Approach. MIT Press, Cambridge (2016)

    Google Scholar 

  34. Richardson, C.: Microservices from design to deployment (2016). https://www.nginx.com/blog/microservices-from-design-to-deployment-ebook-nginx/

  35. Rostami, K., Stammel, J., Heinrich, R., Reussner, R.: Architecture-based assessment and planning of change requests. In: QoSA, pp. 21–30 (2015)

    Google Scholar 

  36. Sommer, N.: Erweiterung und Wartung einer Cloud-basierten JEE-Architektur (in German), report of a practical course. Technical report, KIT, Germany (2017)

    Google Scholar 

  37. Vogels, W.: Eventually consistent. Commun. ACM 52(1), 40–44 (2009)

    Article  Google Scholar 

  38. Yanaga, E.: Migrating to Microservice Databases: From Relational Monolith to Distributed Data. O’Reilly, Sebastopol (2017). E-book

    Google Scholar 

  39. Text analysis. http://textanalysisonline.com/textblob-noun-phrase-extraction. Accessed Apr 2018

Download references

Acknowledgment

This work was supported by the DFG (German Research Foundation) under the Priority Programme SPP1593, and the Key Laboratory of Safety-Critical Software (Nanjing University of Aeronautics and Astronautics) under the Open Foundation with No. NJ20170007. We would like to thank Kang Cheng, Guohang Guo, Yukun Zhang, Nils Sommer, and Stephan Engelmann who worked on the development of the various CoCoME systems. We also thank the anonymous reviewers for their careful reading and their many insightful comments and suggestions. Their comments helped to improve and clarify this paper.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Bo Liu .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Tyszberowicz, S., Heinrich, R., Liu, B., Liu, Z. (2018). Identifying Microservices Using Functional Decomposition. In: Feng, X., Müller-Olm, M., Yang, Z. (eds) Dependable Software Engineering. Theories, Tools, and Applications. SETTA 2018. Lecture Notes in Computer Science(), vol 10998. Springer, Cham. https://doi.org/10.1007/978-3-319-99933-3_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-99933-3_4

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-99932-6

  • Online ISBN: 978-3-319-99933-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics