Projecting Microservices: A Study over Asynchronous Queues to Achieve Reactive Design
DOI:
https://doi.org/10.5753/isys.2019.391Keywords:
Microsserviços, Sistemas Distribuídos, Programação Reativa, Filas Assíncronas, Análise de SistemasAbstract
Microsserviços (MS) são uma nova abordagem com o intuito de incrementar a escalabilidade e flexibilidade em grandes aplicações. Um dos maiores desafios com a abordagem de MS está em como desenvolver adequadamente um único serviço em termos do seu escopo, eficiência e confiabilidade. Neste trabalho é proposto um modelo arquitetural para estruturar internamente um microsserviço, inspirada em conceitos da programação reativa. Este modelo é coordenado internamente por filas assíncronas, que preservam a compatibilidade com a maioria dos componentes legados(monolíticos). Um estudo comparativo entre a abordagem tradicional e a arquitetura proposta foi executado afim de medir os impactos que desta estratégia em termos de desempenho, elasticidade e resiliência.
Downloads
References
Anderson, C. (2015). Docker. IEEE Software, 32(3).
Atul Shukla, R. T. (2014). Architecting reactive applications on aws.
Balakrishnan, K. (1996). Exponential distribution: theory, methods and applications. CRC press.
Balalaie, A., Heydarnoori, A., and Jamshidi, P. (2015). Microservices migration patterns. Technical report, Tech. Rep. TR-SUTCE-ASE-2015-01, Automated Software Engineering Group, Sharif University of Technology, Tehran, Iran.
Bass, L., Weber, I., and Zhu, L. (2015). DevOps: A Software Architect’s Perspective. Addison-Wesley Professional.
Boner, J. (2016). Reactive microservices architecture.
Bonér, J., Farley, D., Kuhn, R., and Thompson, M. (2014). The reactive manifesto.
Brilhante, J., Silva, B., Maciel, P., and Zimmermann, A. (2014). Eucabomber 2.0: A tool for dependability tests in eucalyptus cloud infrastructures considering vm life-cycle. In Systems, Man and Cybernetics (SMC), 2014 IEEE International Conference on, pages 2669–2674. IEEE.
Compton, B. T. and Withrow, C. (1990). Prediction and control of ada software defects. Journal of Systems and Software, 12(3):199–207.
Curry, E. (2004). Message-oriented middleware. Middleware for communications, pages 1–28.
Daniel, F. and Pernici, B. (2006). Insights into web service orchestration and choreography. International Journal of E-Business Research (IJEBR), 2(1):58–77.
Daniel, F. and Pernici, B. (2007). Web service orchestration and choreography: Enabling business processes on the web. E-Business Models, Services, and CommunicationsAdvances in E-Business Research Series, 2:251–274.
Dragoni, N., Giallorenzo, S., Lafuente, A., et al. (2016). Microservices: yesterday, today, and tomorrow. arXiv preprint arXiv:1606.04036.
El Emam, K., Benlarbi, S., Goel, N., et al. (2002). The optimal class size for objectoriented software. IEEE Transactions on software engineering, 28(5):494–509.
Esposito, C., Castiglione, A., and Choo, K.-K. R. (2016). Challenges in delivering software in the cloud as microservices. IEEE Cloud Computing, 3(5):10–14.
Falcao, E., Maritan, T., Duarte, A., and Pessoa, J. (2014). Deaf accessibility as a service: uma arquitetura elástica e tolerante a falhas para o sistema de tradução vlibras.
Fazio, M., Celesti, A., Ranjan, R., et al. (2016). Open issues in scheduling microservices in the cloud. IEEE Cloud Computing, pages 81–88.
Fowler, M. and Lewis, J. (2014). Microservices a definition of this new architectural term. URL: http://martinfowler.com/articles/microservices.html.
Gouigoux, J.-P. and Tamzalit, D. (2017). From monolith to microservices: Lessons learned on an industrial migration to a web oriented architecture. In Software Architecture Workshops (ICSAW), 2017 IEEE International Conference on, pages 62–65. IEEE.
Gupta, A. (2015). Microservice design patterns. http://blog.arungupta.me/microservice-design-patterns/.
Gutierrez, F. (2017). Microservices. In Spring Boot Messaging, pages 179–192. Springer.
Halili, E. H. (2008). Apache JMeter: A practical beginner’s guide to automated testing and performance measurement for your websites. Packt Publishing Ltd.
Hassan, S. and Bahsoon, R. (2016). Microservices and their design trade-offs: A self adaptive roadmap. In Services Computing (SCC), 2016 IEEE International Conference on, pages 813–818. IEEE.
Hatton, L. (1997). Reexamining the fault density component size connection. IEEE software, pages 89–97.
Johanson, A., Flögel, S., Dullo, C., and Hasselbring, W. (2016). Oceantea: Exploring ocean-derived climate data using microservices.
Kecskemeti, G., Marosi, A. C., and Kertesz, A. (2016). The entice approach to decompose monolithic services into microservices. In High Performance Computing & Simulation (HPCS), 2016 International Conference on, pages 591–596. IEEE.
Levcovitz, A., Terra, R., and Valente, M. T. (2016). Towards a technique for extracting microservices from monolithic enterprise systems. arXiv preprint arXiv:1605.03175.
Malhotra, M. and Trivedi, K. S. (1995). Dependability modeling using petri-nets. IEEE Transactions on reliability, 44(3):428–440.
Namiot, D. and Sneps-Sneppe, M. (2014). On micro-services architecture. International Journal of Open Information Technologies, 2(9):24–27.
Newman, S. (2015). Building microservices. "O’Reilly Media, Inc.".
Richardson, C. (2015). Introduction to microservices. URL: https://www.nginx.com/blog/introduction-to-microservices.
Saarimäki, N., Lomio, F., Lenarduzzi, V., and Taibi, D. (2019). Does migrate a monolithic system to microservices decreases the technical debt? arXiv preprint arXiv:1902.06282.
Sill, A. (2016). The design and architecture of microservices. IEEE Cloud Computing, pages 76–80.
Thönes, J. (2015). Microservices. IEEE Software, pages 116–116.
Videla, A. and Williams, J. J. (2012). RabbitMQ in action: distributed messaging for everyone. Manning.
Villamizar, M., Garcés, O., et al. (2015). Evaluating the monolithic and the microservice architecture pattern to deploy web applications in the cloud. In Computing Colombian Conference (10CCC), 2015 10th, pages 583–590. IEEE.
Vohra, D. (2017). Scheduling pods on nodes. In Kubernetes Management Design Patterns, pages 199–236. Springer.