ResilienceBench: Um Ambiente para Avaliação Experimental de Padrões de Resiliência para Microsserviços

  • Carlos M. Aderaldo UNIFOR
  • Nabor C. Mendonça UNIFOR

Resumo


Desenvolvedores de microsserviços cada vez mais utilizam padrões de resiliência, como Retry e Circuit Breaker, para lidar com possíveis falhas durante a invocação de serviços remotos. Porém, ainda há poucos trabalhos sobre o impacto do uso desses padrões no desempenho das aplicações. Este artigo apresenta ResilienceBench, um ambiente independente de linguagem para apoiar os desenvolvedores de microsserviços na avaliação experimental do impacto de desempenho de padrões de resiliência. O artigo descreve a motivação, a arquitetura, e as principais funcionalidades do ambiente ResilienceBench, e ilustra o seu uso por meio da avaliação do impacto de desempenho do padrão Retry utilizando duas populares bibliotecas de resiliência abertas: Polly, para a linguagem C#, e Resilience4j, para a linguagem Java.

Referências

Aderaldo, C. M. et al. (2017). Benchmark Requirements for Microservices Architecture Research. In 1st Int. Workshop on Establishing the Community-Wide Infrastructure for Architecture-Based Software Engineering (ECASE), pages 8–13.

App vNext (2022). Polly. https://github.com/App-vNext/Polly. [Último acesso em 17 de Maio de 2022].

Aquino, G. et al. (2019). The circuit breaker pattern targeted to future IoT applications. In Int. Conf. Service Oriented Computing (ICSOC), pages 390–396. Springer.

Beyer, B. et al. (2016). Site Reliability Engineering: How Google Runs Production Systems. O’Reilly.

Calcote, L. (2018). The Enterprise Path to Service Mesh Architectures. O’Reilly.

Costa, T. M. et al. (2022). Avaliação de Desempenho de Dois Padrões de Resiliência para Microsserviços: Retry e Circuit Breaker. In XL Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (SBRC). Aceito para publicação.

Docker (2021). Overview of Docker Compose. [link]. [Último acesso em 17 de Maio de 2022].

Envoy (2022). Envoy Proxy. https://www.envoyproxy.io. [Último acesso em 17 de Maio de 2022].

HashiCorp (2022). Vagrant: Development Environments Made Easy. https://www.vagrantup.com/. [Último acesso em 17 de Maio de 2022].

Jagadeesan, L. J. and Mendiratta, V. B. (2020). When failure is (not) an option: Reliability models for microservices architectures. In IEEE Int. Symp. Software Reliability Engineering Workshops (ISSREW), pages 19–24.

Jamshidi, P. et al. (2018). Microservices: The journey so far and challenges ahead. IEEE Software, 35(3):24–35.

Mendonca, N. C. et al. (2020). Model-based analysis of microservice resiliency patterns. In IEEE Int. Conf. Software Architecture (ICSA), pages 114–124.

Merkel, D. (2014). Docker: lightweight linux containers for consistent development and deployment. Linux journal, 2014(239):2.

Microsoft Azure (2017). Resiliency patterns. [link]. [Último acesso em 17 de Maio de 2022].

Nygard, M. (2007). Release It!: Design and Deploy Production-Ready Software. Pragmatic Bookshelf.

Postman (2017). httpbin(1): HTTP Request & Response Service. https://github.com/postmanlabs/httpbin. [Último acesso em 17 de Maio de 2022].

Preuveneers, D. and Joosen, W. (2017). QoC2 Breaker: intelligent software circuit breakers for fault-tolerant distributed context-aware applications. Journal of Reliable Intelligent Environments, 3(1):5–20.

Resilience4j (2021). Fault tolerance library designed for functional programming. https://github.com/resilience4j/resilience4j. [Último acesso em 17 de Maio de 2022].

Saleh Sedghpour, M. R., Klein, C., and Tordsson, J. (2022). An Empirical Study of Service Mesh Traffic Management Policies for Microservices. In ACM/SPEC Int. Conf. Performance Engineering (ICPE), pages 17–27.
Publicado
23/05/2022
ADERALDO, Carlos M.; MENDONÇA, Nabor C.. ResilienceBench: Um Ambiente para Avaliação Experimental de Padrões de Resiliência para Microsserviços. In: SALÃO DE FERRAMENTAS - SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES E SISTEMAS DISTRIBUÍDOS (SBRC), 40. , 2022, Fortaleza/CE. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2022 . p. 65-72. ISSN 2177-9384. DOI: https://doi.org/10.5753/sbrc_estendido.2022.223442.