Dealing with a (failing) dependency
Submitted by Soubhik Bhattacharya (@soubhikb) on Friday, 9 March 2018
A microservice calling another via REST is a common scenario. We use 4 patterns for dealing with failures associated with this scenario viz bulkheads, timeouts, circuit breaker and management plane. I share deep insights learnt from using these patterns in production. I also describe the principles and building blocks for management plane pattern.
I start with a simple pattern that most of us can relate to: a microservice calling another via a REST API. I show how things can go wrong in this pattern and how we deal with them at Intuit.
I cover 4 resiliency design patterns in details: sharing the motivation, key intuitions and deep insights drawn from our experience of using them in production.
3 of the 4 patterns (bulkheads, timeouts and circuit breaker) are better researched on the internet. however, the practical lessons we learnt are rather unique and not easily available in public domain.
the 4th pattern, management plane, though used in practice, is not discussed often. in this talk, I cover the principles and building blocks for this pattern.
I also touch upon Hystrix, a popular library for microservice resiliency and describe what it does and does not solve.
Soubhik is a hands-on technical leader. In his current role at Intuit, he’s focussed on building highly resilient microservices that deliver frictionless authentication experience to Intuit’s users.
His past experience spans across embedded operating systems for networking (Cisco), information extraction and search (Yahoo! and BloomReach), electronic design automation (Mentor Graphics and Atrenta).