Advertisement

Challenges When Moving from Monolith to Microservice Architecture

  • Miika KalskeEmail author
  • Niko Mäkitalo
  • Tommi Mikkonen
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10544)

Abstract

One of the more recent avenues towards more flexible installations and execution is the transition from monolithic architecture to microservice architecture. In such architecture, where microservices can be more liberally updated, relocated, and replaced, building liquid software also becomes simpler, as adaptation and deployment of code is easier than when using a monolithic architecture where almost everything is connected. In this paper, we study this type of transition. The objective is to identify the reasons why the companies decide to make such transition, and identify the challenges that companies may face during this transition. Our method is a survey based on different publications and case studies conducted about these architectural transitions from monolithic architecture to microservices. Our findings reveal that typical reasons moving towards microservice architecture are complexity, scalability and code ownership. The challenges, on the other hand, can be separated to architectural challenges and organizational challenges. The conclusion is that when a software company grows big enough in size and starts facing problems regarding the size of the codebase, that is when microservices can be a good way to handle the complexity and size. Even though the transition provides its own challenges, these challenges can be easier to solve than the challenges that monolithic architecture presents to company.

Notes

Acknowledgements

The research was supported by the Academy of Finland (project 295913).

References

  1. 1.
    Newman, S.: Building Microservices, Designing Fine-Grained Systems, 1st edn. O’Reilly Media Inc., Sebastopol (2015)Google Scholar
  2. 2.
    Lewis, J., Fowler, M.: Microservices a Definition of this New Term, March 2014. https://martinfowler.com/articles/microservices.html
  3. 3.
    Gallidabino, A., Pautasso, C., Ilvonen, V., Mikkonen, T., Systä, K., Voutilainen, J.-P., Taivalsaari, A.: On the architecture of liquid software: technology alternatives and design space. In: Proceedings of the 2016 13th Working IEEE/IFIP Conference on Software Architecture, pp. 122–127. IEEE (2016)Google Scholar
  4. 4.
    Richardson, C.: Microservices—Pattern: Microservice Architecture, March 2014. http://microservices.io/patterns/microservices.html
  5. 5.
    Thones, J.: Microservices. IEEE Softw. 32(1), 116 (2015)CrossRefGoogle Scholar
  6. 6.
    Villamizar, M., Garcés, O., Castro, H., Verano, M., Salamanca, L., Casallas, R., Gil, S.: Evaluating the monolithic and the microservice architecture pattern to deploy Web applications in the cloud. In: Proceedings of CCC 2015, pp. 583–590 (2015)Google Scholar
  7. 7.
    Munns, C.: I Love APIs 2015: Microservices at Amazon, October 2015. https://www.slideshare.net/apigee/i-love-apis-2015-microservices-at-amazon-54487258
  8. 8.
    Mauro, T.: Nginx—Adopting Microservices at Neflix: Lessons for Architectural Design, February 2015. https://www.nginx.com/blog/microservices-at-netflix-architectural-best-practices/
  9. 9.
    Ihde, S.: InfoQ: From a Monotlith to Microservices + REST: the Evolution of LinkedIn’s Service Architecture, March 2015. https://www.infoq.com/presentations/linkedin-microservices-urn
  10. 10.
    Calcado, P.: SoundCloud: Building Products at SoundCloud - Part 1: Dealing with the Monolith, June 2014. https://developers.soundcloud.com/blog/building-products-at-soundcloud-part-1-dealing-with-the-monolith
  11. 11.
    Richardson, C.: Microservices—Pattern: Monolithic Architecture, March 2017. http://microservices.io/patterns/monolithic.html
  12. 12.
    Tilkov, S.: Don’t Start with a Monolith When Your Goal is a Microservice Architecture, June 2015. https://www.martinfowler.com/articles/dont-start-monolith.html
  13. 13.
    Feathers, M.: Working Effectively with Legacy Code. Prentice-Hall, Upper Saddle River (2004)CrossRefGoogle Scholar
  14. 14.
    Balalaie, A., Heydarnoori, A., Jamshidi, P.: Microservices architecture enables DevOps: migration to a cloud-native architecture. IEEE Softw. 33(3), 42–52 (2016)CrossRefGoogle Scholar
  15. 15.
    Conway, M.E.: How do committees invent. Datamation 14(4), 28–31 (1968)Google Scholar
  16. 16.
    Fowler, M.: Microservice Premium, May 2015. https://martinfowler.com/bliki/MicroservicePremium.html
  17. 17.
    Richardson, C.: Microservices—Pattern: Database per Service, March 2016. http://microservices.io/patterns/data/database-per-service.html
  18. 18.
    Clemm, J.: A Brief History of Scaling LinkedIn, July 2015. https://engineering.linkedin.com/architecture/brief-history-scaling-linkedin
  19. 19.
    Balalaie, A., Heydarnoori, A., Jamshidi, P.: Migrating to cloud-native architectures using microservices: an experience report. In: Celesti, A., Leitner, P. (eds.) ESOCC 2015. CCIS, vol. 567, pp. 201–215. Springer, Cham (2016).  https://doi.org/10.1007/978-3-319-33313-7_15 Google Scholar
  20. 20.
    Montesi, F., Weber, J.: Circuit breakers, discovery, and API gateways in microservices. arXiv preprint arXiv:1609.05830 (2016)
  21. 21.
  22. 22.
  23. 23.
    Hasselbring, W.: Microservices for scalability: keynote talk abstract. In: Proceedings of the 7th ACM/SPEC on International Conference on Performance Engineering, pp. 133–134. ACM, March 2016Google Scholar
  24. 24.
  25. 25.
  26. 26.
  27. 27.
    Nordberg, M.E.: Managing code ownership. IEEE Softw. 20(2), 26–33 (2003)CrossRefGoogle Scholar
  28. 28.
    Bass, L., Weber, I., Zhu, L.: DevOps: A Software Architect’s Perspective. Addison-Wesley Professional, Boston (2015)Google Scholar
  29. 29.
    Wettinger, J., Andrikopoulos, V., Leymann, F.: Enabling DevOps collaboration and continuous delivery using diverse application environments. In: Debruyne, C., Panetto, H., Meersman, R., Dillon, T., Weichhart, G., An, Y., Ardagna, C.A. (eds.) OTM 2015. LNCS, vol. 9415, pp. 348–358. Springer, Cham (2015).  https://doi.org/10.1007/978-3-319-26148-5_23 Google Scholar
  30. 30.
    Stubbs, J., Moreira, W., Dooley, R.: Distributed systems of microservices using docker and serfnode. In: 2015 7th International Workshop on Science Gateways (IWSG), pp. 34–39. IEEE, June 2015Google Scholar
  31. 31.
    Merkel, D.: Docker: lightweight linux containers for consistent development and deployment. Linux J. 2014(239) (2014). Article no. 2Google Scholar
  32. 32.
    Kubernetes: https://kubernetes.io/, March 2017
  33. 33.
    Mesos: http://mesos.apache.org/, May 2017
  34. 34.
    Richards, M.: Microservices Antipatterns and Pitfalls, 1st edn. O’Reilly Media Inc., Sebastopol (2016)Google Scholar

Copyright information

© Springer International Publishing AG 2018

Authors and Affiliations

  1. 1.Department of Computer ScienceUniversity of HelsinkiHelsinkiFinland

Personalised recommendations