Affiliation:
1. Center for Technological Sciences University of Fortaleza Fortaleza Ceará Brazil
2. ITIS Software University of Málaga Málaga Spain
3. Software and Societal Systems Department Carnegie Mellon University Pittsburgh Pennsylvania USA
Abstract
AbstractMicroservice developers increasingly use resiliency patterns such as Retry and Circuit Breaker to cope with remote services that are likely to fail. However, there is still little research on how the invocation delays typically introduced by those resiliency patterns may impact application performance under varying workloads and failure scenarios. This article presents a novel approach and benchmark tool for experimentally evaluating the performance impact of existing resiliency patterns in a controlled setting. The main novelty of this approach resides in the ability to declaratively specify and automatically generate multiple testing scenarios involving different resiliency patterns, which one can implement using any programming language and resilience library. The article illustrates the benefits of the proposed approach and tool by reporting on an experimental study of the performance impact of the Retry and Circuit Breaker resiliency patterns in two mainstream programming languages (C# and Java) using two popular resilience libraries (Polly and Resilience4j), under multiple service workloads and failure rates. Our results show that, under low to moderate failure rates, both resiliency patterns effectively reduce the load over the application's target service with barely any impact on the application's performance. However, as the failure rate increases, both patterns significantly degrade the application's performance, with their effect varying depending on the service's workload and the patterns' programming language and resilience library.
Funder
Conselho Nacional de Desenvolvimento Científico e Tecnológico
Reference56 articles.
1. Microservices: The Journey So Far and Challenges Ahead
2. Designing for failure may be the key to success—interview by Steve Bourne;Lindsay B;ACM Queue,2004
3. LewisJ FowlerM.Microservices: a definition of this new architectural term. 2014. Accessed August 15 2024.https://martinfowler.com/articles/microservices.html
4. Microsoft Azure.Resiliency patterns. 2017. Accessed August 15 2024.https://docs.microsoft.com/en‐us/azure/architecture/patterns/category/resiliency