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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Newman, S.: Building Microservices, Designing Fine-Grained Systems, 1st edn. O’Reilly Media Inc., Sebastopol (2015)
Lewis, J., Fowler, M.: Microservices a Definition of this New Term, March 2014. https://martinfowler.com/articles/microservices.html
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)
Richardson, C.: Microservices—Pattern: Microservice Architecture, March 2014. http://microservices.io/patterns/microservices.html
Thones, J.: Microservices. IEEE Softw. 32(1), 116 (2015)
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)
Munns, C.: I Love APIs 2015: Microservices at Amazon, October 2015. https://www.slideshare.net/apigee/i-love-apis-2015-microservices-at-amazon-54487258
Mauro, T.: Nginx—Adopting Microservices at Neflix: Lessons for Architectural Design, February 2015. https://www.nginx.com/blog/microservices-at-netflix-architectural-best-practices/
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
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
Richardson, C.: Microservices—Pattern: Monolithic Architecture, March 2017. http://microservices.io/patterns/monolithic.html
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
Feathers, M.: Working Effectively with Legacy Code. Prentice-Hall, Upper Saddle River (2004)
Balalaie, A., Heydarnoori, A., Jamshidi, P.: Microservices architecture enables DevOps: migration to a cloud-native architecture. IEEE Softw. 33(3), 42–52 (2016)
Conway, M.E.: How do committees invent. Datamation 14(4), 28–31 (1968)
Fowler, M.: Microservice Premium, May 2015. https://martinfowler.com/bliki/MicroservicePremium.html
Richardson, C.: Microservices—Pattern: Database per Service, March 2016. http://microservices.io/patterns/data/database-per-service.html
Clemm, J.: A Brief History of Scaling LinkedIn, July 2015. https://engineering.linkedin.com/architecture/brief-history-scaling-linkedin
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
Montesi, F., Weber, J.: Circuit breakers, discovery, and API gateways in microservices. arXiv preprint arXiv:1609.05830 (2016)
Netflix Inc.: https://github.com/Netflix/hystrix (2013)
Fowler, M.: https://martinfowler.com/bliki/CircuitBreaker.html, March 2014
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 2016
Richardson, C.: http://microservices.io/patterns/data/shared-database.html, November 2015
Newman, S.: https://www.thoughtworks.com/insights/blog/demystifying-conways-law, June 2014
Mauro, T.: https://www.nginx.com/blog/adopting-microservices-at-netflix-lessons-for-team-and-process-design/, March 2015
Nordberg, M.E.: Managing code ownership. IEEE Softw. 20(2), 26–33 (2003)
Bass, L., Weber, I., Zhu, L.: DevOps: A Software Architect’s Perspective. Addison-Wesley Professional, Boston (2015)
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
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 2015
Merkel, D.: Docker: lightweight linux containers for consistent development and deployment. Linux J. 2014(239) (2014). Article no. 2
Kubernetes: https://kubernetes.io/, March 2017
Mesos: http://mesos.apache.org/, May 2017
Richards, M.: Microservices Antipatterns and Pitfalls, 1st edn. O’Reilly Media Inc., Sebastopol (2016)
Acknowledgements
The research was supported by the Academy of Finland (project 295913).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG
About this paper
Cite this paper
Kalske, M., Mäkitalo, N., Mikkonen, T. (2018). Challenges When Moving from Monolith to Microservice Architecture. In: Garrigós, I., Wimmer, M. (eds) Current Trends in Web Engineering. ICWE 2017. Lecture Notes in Computer Science(), vol 10544. Springer, Cham. https://doi.org/10.1007/978-3-319-74433-9_3
Download citation
DOI: https://doi.org/10.1007/978-3-319-74433-9_3
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-74432-2
Online ISBN: 978-3-319-74433-9
eBook Packages: Computer ScienceComputer Science (R0)