Migrating to Cloud-Native Architectures Using Microservices: An Experience Report

  • Armin Balalaie
  • Abbas Heydarnoori
  • Pooyan Jamshidi
Conference paper
Part of the Communications in Computer and Information Science book series (CCIS, volume 567)

Abstract

Migration to the cloud has been a popular topic in industry and academia in recent years. Despite many benefits that the cloud presents, such as high availability and scalability, most of the on-premise application architectures are not ready to fully exploit the benefits of this environment, and adapting them to this environment is a non-trivial task. Microservices have appeared recently as novel architectural styles that are native to the cloud. These cloud-native architectures can facilitate migrating on-premise architectures to fully benefit from the cloud environments because non-functional attributes, like scalability, are inherent in this style. The existing approaches on cloud migration does not mostly consider cloud-native architectures as their first-class citizens. As a result, the final product may not meet its primary drivers for migration. In this paper, we intend to report our experience and lessons learned in an ongoing project on migrating a monolithic on-premise software architecture to microservices. We concluded that microservices is not a one-fit-all solution as it introduces new complexities to the system, and many factors, such as distribution complexities, should be considered before adopting this style. However, if adopted in a context that needs high flexibility in terms of scalability and availability, it can deliver its promised benefits.

Keywords

Cloud migration Microservices Cloud-native architectures Software modernization 

Notes

Acknowledgments

The work of Pooyan Jamshidi has been supported by the Irish Centre for Cloud Computing and Commerce (IC4) and by the Horizon 2020 project no. 644869 (DICE).

References

  1. 1.
    Ardagna, D., di Nitto, E., Mohagheghi, P., Mosser, S., Ballagny, C., D’Andria, F., Casale, G., Matthews, P., Nechifor, C.S., Petcu, D., Gericke, A., Sheridan, C.: Modaclouds: a model-driven approach for the design and execution of applications on multiple clouds. In: 4th International Workshop on Modelling in Software Engineering (MISE), pp. 50–56, June 2012Google Scholar
  2. 2.
    Bergmayr, A., Bruneliere, H., Canovas Izquierdo, J., Gorronogoitia, J., Kousiouris, G., Kyriazis, D., Langer, P., Menychtas, A., Orue-Echevarria, L., Pezuela, C., Wimmer, M.: Migrating legacy software to the cloud with artist. In: 17th European Conference on Software Maintenance and Reengineering (CSMR), pp. 465–468, March 2013Google Scholar
  3. 3.
    Daigneau, R.: Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and Restful Web Services. Addison-Wesley Professional, Reading (2011)Google Scholar
  4. 4.
    Evans, E.: Domain-driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley Professional, Reading (2004)Google Scholar
  5. 5.
    Fehling, C., Leymann, F., Ruehl, S., Rudek, M., Verclas, S.: Service migration patterns - decision support and best practices for the migration of existing service-based applications to cloud environments. In: 6th IEEE International Conference on Service-Oriented Computing and Applications (SOCA), pp. 9–16, December 2013Google Scholar
  6. 6.
    Fowler, M., Lewis, J.: Microservices. http://martinfowler.com/articles/microservices.html. Accessed 15 Jun 2015
  7. 7.
    Hohpe, G., Woolf, B.: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley Professional, Reading (2004)Google Scholar
  8. 8.
    Humble, J., Farley, D.: Continuous delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional, Reading (2010)Google Scholar
  9. 9.
    Jamshidi, P., Ahmad, A., Pahl, C.: Cloud migration research: a systematic review. IEEE Trans. Cloud Comput. 1(2), 142–157 (2013)CrossRefGoogle Scholar
  10. 10.
    Jamshidi, P., Pahl, C., Chinenyeze, S., Liu, X.: Cloud migration patterns: a multi-cloud service architecture perspective. In: Toumani, F., et al. (eds.) Service-Oriented Computing - ICSOC 2014 Workshops. LNCS, vol. 8954, pp. 6–9. Springer, Switzerland (2015)CrossRefGoogle Scholar
  11. 11.
    Martin, R.: Clean micro-service architecture. http://blog.cleancoder.com/uncle-bob/2014/10/01/CleanMicroserviceArchitecture.html. Accessed 15 June 2015
  12. 12.
    Mendonca, N.: Architectural options for cloud migration. Computer 47(8), 62–66 (2014)CrossRefGoogle Scholar
  13. 13.
    Newman, S.: Building Microservices. O’Reilly Media, Sebastopol (2015)Google Scholar
  14. 14.
    Nygard, M.: Release It!: Design and Deploy Production-Ready Software. Pragmatic Bookshelf, Raleigh (2007)Google Scholar
  15. 15.
    Calçado, P.: Building products at soundcloud. https://developers.soundcloud.com/blog/building-products-at-soundcloud-part-1-dealing-with-the-monolith. Accessed 15 June 2015
  16. 16.
    Richardson, C.: Microservices architecture (2014). http://microservices.io/. Accessed 15 June 2015
  17. 17.
    Borsje, S.: How we build microservices at karma. https://blog.yourkarma.com/building-microservices-at-karma. Accessed 15 June 2015
  18. 18.
    Stine, M.: Migrating to Cloud-Native Application Architectures. O’Reilly Media, Sebastopol (2015)Google Scholar
  19. 19.
    Vernon, V.: Implementing Domain-driven Design. Addison-Wesley Professional, Reading (2013)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  • Armin Balalaie
    • 1
  • Abbas Heydarnoori
    • 1
  • Pooyan Jamshidi
    • 2
  1. 1.Department of Computer EngineeringSharif University of TechnologyTehranIran
  2. 2.Department of ComputingImperial College LondonLondonUK

Personalised recommendations