Evaluating Retry and Circuit-Breaker Patterns for Fault Tolerance in Azure-Hosted .NET Microservices – A Systematic Review

Authors

  • Sunny Hundwani GEICO Insurance Author

DOI:

https://doi.org/10.66687/y0v7q431

Keywords:

Azure, .NET, microservices, Polly, retry, circuit breaker, resilience, fault tolerance, transient fault, systematic review

Abstract

Background: Retry and Circuit Breaker are widely recommended resilience patterns for remote calls in cloud and microservice systems, but their effects depend on the duration and probability of failure, request latency, retry interval, state-transition thresholds, and downstream capacity.

Methods: This review synthesised evidence available through 31 December 2021 on retry and circuit-breaker behaviour and interpreted it for Azure-hosted .NET microservices. Structured searches of major software-engineering publishers and citation chains identified empirical, experimental, model-based, and fault-injection studies of retry, circuit breaking, or directly relevant distributed-system resilience. Forty-nine unique records were screened, 24 full texts were assessed, and 11 primary studies were included. Contemporaneous Microsoft Azure/.NET guidance was analysed separately as platform context and was not counted as primary evidence.

Results: Model-based microservice research showed that retry and circuit-breaker parameters materially change availability and response-time trade-offs under different service failure/recovery rates. A 2021 service-mesh experiment demonstrated that circuit breaking can protect tail latency during overload but that static thresholds can reduce availability when poorly matched to workload. Earlier reliability models showed that repeated attempts can improve completion probability but increase execution time and resource consumption, while fault-injection and chaos-engineering studies showed that resilience must be tested under combinations of partial failure and recovery. No peer-reviewed comparative Azure/.NET experiment of retry versus circuit breaker was found through the end of 2021. Microsoft’s 2021 .NET microservices guidance documented Polly-based retry and circuit-breaking with IHttpClientFactory, consistent with the broader evidence.

Conclusion: Retry and Circuit Breaker address different fault classes. Retry is appropriate for transient faults when operations are safe to repeat and attempts are bounded; Circuit Breaker is appropriate when continued calls are likely to fail or overload a dependency. Azure-hosted .NET systems should compose these patterns deliberately, control total latency and duplicate attempts, and validate thresholds through fault injection rather than relying on defaults.

Author Biography

  • Sunny Hundwani, GEICO Insurance

    Web Application Architect

References

1. Page MJ, McKenzie JE, Bossuyt PM, Boutron I, Hoffmann TC, Mulrow CD, et al. The PRISMA 2020 statement: an updated guideline for reporting systematic reviews. BMJ. 2021;372:n71. doi:10.1136/bmj.n71.

2. Kitchenham B, Brereton OP, Budgen D, Turner M, Bailey J, Linkman S. Systematic literature reviews in software engineering - a tertiary study. Inf Softw Technol. 2010;52(8):792-805. doi:10.1016/j.infsof.2010.03.006.

3. Jamshidi P, Pahl C, Mendonça NC, Lewis J, Tilkov S. Microservices: the journey so far and challenges ahead. IEEE Softw. 2018;35(3):24-35. doi:10.1109/MS.2018.2141039.

4. Di Francesco P, Lago P, Malavolta I. Architecting with microservices: a systematic mapping study. J Syst Softw. 2019;150:77-97. doi:10.1016/j.jss.2019.01.001.

5. Soldani J, Tamburri DA, van den Heuvel WJ. The pains and gains of microservices: a systematic grey literature review. J Syst Softw. 2018;146:215-232. doi:10.1016/j.jss.2018.09.082.

6. Li S, Zhang H, Jia Z, Zhong C, Zhang C, Shan Z, et al. Understanding and addressing quality attributes of microservices architecture: a systematic literature review. Inf Softw Technol. 2021;131:106449. doi:10.1016/j.infsof.2020.106449.

7. Karabey Aksakalli I, Çelik T, Can AB, Tekinerdogan B. Deployment and communication patterns in microservice architectures: a systematic literature review. J Syst Softw. 2021;180:111014. doi:10.1016/j.jss.2021.111014.

8. Waseem M, Liang P, Shahin M, Di Salle A, Márquez G. Design, monitoring, and testing of microservices systems: the practitioners' perspective. J Syst Softw. 2021;182:111061. doi:10.1016/j.jss.2021.111061.

9. Joseph CT, Chandrasekaran K. Straddling the crevasse: a review of microservice software architecture foundations and recent advancements. Softw Pract Exp. 2019;49(10):1448-1484. doi:10.1002/spe.2729.

10. Mendonça NC, Aderaldo CM, Cámara J, Garlan D. Model-based analysis of microservice resiliency patterns. In: 2020 IEEE International Conference on Software Architecture. 2020. p.114-124. doi:10.1109/ICSA47634.2020.00019.

11. Jagadeesan LJ, Mendiratta VB. When failure is (not) an option: reliability models for microservices architectures. In: 2020 IEEE International Symposium on Software Reliability Engineering Workshops. 2020. p.19-24. doi:10.1109/ISSREW51248.2020.00031.

12. Saleh Sedghpour MR, Klein C, Tordsson J. Service mesh circuit breaker: from panic button to performance management tool. In: Proceedings of the 1st Workshop on High Availability and Observability of Cloud Systems. 2021. p.4-10. doi:10.1145/3447851.3458740.

13. Preuveneers D, Joosen W. QoC2 breaker: intelligent software circuit breakers for fault-tolerant distributed context-aware applications. J Reliab Intell Environ. 2017;3(1):5-20.

14. Basiri A, Behnam N, de Rooij R, Hochstein L, Kosewski L, Reynolds J, Rosenthal C. Chaos engineering. IEEE Softw. 2016;33(3):35-41. doi:10.1109/MS.2016.60.

15. Alvaro P, Rosen J, Hellerstein JM. Lineage-driven fault injection. In: Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data. 2015. doi:10.1145/2723372.2723711.

16. Meiklejohn CS, Estrada A, Song Y, Miller H, Padhye R. Service-level fault injection testing. In: ACM Symposium on Cloud Computing. 2021. doi:10.1145/3472883.3487005.

17. Brosch F, Koziolek H, Buhnova B, Reussner RH. Architecture-based reliability prediction with the Palladio Component Model. IEEE Trans Softw Eng. 2012;38(6):1319-1339. doi:10.1109/TSE.2011.94.

18. Mirandola R, Potena P, Riccobene E, Scandurra P. A reliability model for service component architectures. J Syst Softw. 2014;89:109-127.

19. Sharma VS, Trivedi KS. Reliability and performance of component based software systems with restarts, retries, reboots and repairs. In: 17th International Symposium on Software Reliability Engineering. 2006. p.299-310.

20. Kwiatkowska M, Norman G, Parker D. PRISM 4.0: verification of probabilistic real-time systems. In: Computer Aided Verification. Berlin: Springer; 2011. p.585-591.

21. Homer A, Sharp J, Brader L, Narumoto M, Swanson T. Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications. Redmond: Microsoft; 2014.

22. Nygard MT. Release It! Design and Deploy Production-Ready Software. 2nd ed. Raleigh: Pragmatic Bookshelf; 2018.

23. de la Torre C, Wagner B, Rousos M. .NET Microservices: Architecture for Containerized .NET Applications. Redmond: Microsoft Corporation; 2021.

24. Betts D, Bourgault J, Dominguez J, Keresteci E, Melnik G, Simonazzi F, van der Valk E. Building Elastic and Resilient Cloud Applications: Developer's Guide to the Enterprise Library 5.0 Integration Pack for Windows Azure. Redmond: Microsoft; 2012.

25. Microsoft. Enterprise Library 5.0 Integration Pack for Windows Azure: Transient Fault Handling Application Block. Microsoft; 2012.

26. Chandramouli R, Butcher Z. Building Secure Microservices-based Applications Using Service-Mesh Architecture. NIST Special Publication 800-204A. Gaithersburg: National Institute of Standards and Technology; 2020. doi:10.6028/NIST.SP.800-204A.

27. Pahl C, Jamshidi P. Microservices: a systematic mapping study. In: Proceedings of the 6th International Conference on Cloud Computing and Services Science. 2016. p.137-146. doi:10.5220/0005785501370146.

28. Dragoni N, Giallorenzo S, Lafuente AL, Mazzara M, Montesi F, Mustafin R, Safina L. Microservices: yesterday, today, and tomorrow. In: Present and Ulterior Software Engineering. Cham: Springer; 2017. p.195-216.

29. Richardson C. Microservices Patterns. Shelter Island: Manning; 2018.

30. Newman S. Building Microservices. Sebastopol: O'Reilly Media; 2015.

31. Fowler M. CircuitBreaker. martinfowler.com; 2014.

32. Brooker M. Exponential Backoff and Jitter. AWS Architecture Blog; 2015.

33. Beyer B, Jones C, Petoff J, Murphy N, editors. Site Reliability Engineering: How Google Runs Production Systems. Sebastopol: O'Reilly Media; 2016.

34. Dean J, Barroso LA. The tail at scale. Commun ACM. 2013;56(2):74-80. doi:10.1145/2408776.2408794.

35. Avizienis A, Laprie JC, Randell B, Landwehr C. Basic concepts and taxonomy of dependable and secure computing. IEEE Trans Dependable Secure Comput. 2004;1(1):11-33. doi:10.1109/TDSC.2004.2.

36. Armbrust M, Fox A, Griffith R, Joseph AD, Katz R, Konwinski A, et al. A view of cloud computing. Commun ACM. 2010;53(4):50-58. doi:10.1145/1721654.1721672.

37. Erl T, Puttini R, Mahmood Z. Cloud Computing: Concepts, Technology & Architecture. Upper Saddle River: Prentice Hall; 2013.

38. de la Torre C. Implement resilient applications with retries and circuit breakers using Polly and IHttpClientFactory. In: .NET Microservices Architecture guidance. Microsoft; 2021.

39. Microsoft. Retry pattern. Azure Architecture Center. Microsoft; 2021.

40. Microsoft. Circuit Breaker pattern. Azure Architecture Center. Microsoft; 2021.

41. Microsoft. Transient fault handling guidance for Azure applications. Azure Architecture Center. Microsoft; 2021.

42. App-vNext. Polly: .NET resilience and transient-fault-handling library. Version 7 documentation and source repository; 2021.

Downloads

Published

2022-03-15

Similar Articles

1-10 of 90

You may also start an advanced similarity search for this article.