Migração de Sistemas Monolíticos para Microserviços: Uma Abordagem Híbrida sem Downtime
The recent Microservices paradigm is based on building a system as a set of small distributed services developed in an independent fashion that are deployed, scaled and replicated in a transparent way as it was a single application. Several organizations that are adopting this paradigm have to cope with the challenge to migrate current traditional monolithic applications in production to microservices, preferably, without having to schedule maintenances to take the application offline. This paper presents an approach for hybrid migrating to microservices with no downtime and practically no changes in the monolithic code. A real application is used as a proof of concept to demonstrate that the proposed approach enables to go forward or backward among different versions of the application without needing to take the application offline, considering code or data changes. Moreover, an evaluation performed in the cloud demonstrates that this work does not introduce significant performance or costs overhead and still enables to support higher loads in the monolith, due to the removal of part of its functionality to be processed in microservices.
Balalaie, A., Heydarnoori, A., and Jamshidi, P. (2015b). Migrating to cloud-native architectures using microservices: An experience report. In Advances in Service-Oriented and Cloud Computing -Workshops of ESOCC 2015, Taormina, Italy, September 15-17, 2015, Revised Selected Papers, pages 201-215.
Balalaie, A., Heydarnoori, A., and Jamshidi, P. (2016). Microservices architecture enables devops: Migration to a cloud-native architecture. IEEE Software, 33(3):42-52.
Bolar, T. (2018). Integrating microservices with a monolithic application. https://dzone.com/articles/integrating-micro-service-with-monolith-applicatio. Acessado: 18/12/2018.
Eisele, M. Modern Java EE Design Patterns: Building Scalable Architecture for Sustainable Enterprise Development, 2016. O'Reilly Media, Inc.
Fowler, M. and Lewis, J. “Microservices,” 25 Mar. 2014; www.martinfowler.com/articles/microservices.html. Acessado: 18/12/2018.
Freire, A. Vídeo de Teste na Nuvem (AWS) da Abordagem de Migração Híbrida com PetClinic. 2019. Disponível em: https://www.dropbox.com/sh/5nzuypfg6xss33r/AAB-iE03-ueXmT2Mb_A1NIv2a?dl=0
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J., and Irwin, J. (1997). Aspect-oriented programming. In ECOOP'97 -Object-Oriented Programming, 11th European Conference, Jyv¨askyl¨a, Finland, June 9-13, 1997, Proceedings, pages 220-242.
Levcovitz, A., Terra, R., and Valente, M. T. (2015). Towards a technique for extracting microservices from monolithic enterprise systems. 3rd Brazilian Workshop on Software Visualization, Evolution and Maintenance (VEM), p. 97-104, 2015.
Macero, M. Learn Microservices with Spring Boot, 2017. Apress, Inc.
Medeiros, O., Sampaio, A. and Arraes., A. Uso de AOP na Migração de Aplicações Monolíticas para Microservices. XVI Workshop em Clouds e Aplicações (WCGA), SBRC, 2018.
Newman, S. (2015). Building Microservices Designing Fine-Grained Systems, volume 2015. O'Reilly Media, Inc.
Rey, A. Distributed version of the Spring PetClinic Sample Application built with Spring Cloud. 2016. Disponível em: github.com/spring-petclinic/spring-petclinic-microservices.
Richardson, C. and Floyd, F. (2016). Microservices From Design to Deployment, volume 2016. NGINX, Inc.
Richardson, C. (2014). Pattern: Monolithic architecture.
Richardson, C. (2016b). Refactoring a monolith into microservices. https://www.nginx.com/blog/refactoring-a-monolith-into-microservices/. Acessado: 18/12/2018.
Richardson, C. Microservices Patterns, Manning Publications, 2017.
Syer, D. Spring PetClinic Sample Application. 2015. Disponível em: github.com/spring-projects/spring-petclinic.
Yanaga. E. (2017). Migrating to Microservice Databases from Relational Monolith to Distributed Data, volume 1. O'Reilly