Rootconf 2018

Rootconf 2018

On scaling infrastructure and operations

Soubhik Bhattacharya

@soubhikb

Dealing with a (failing) dependency

Submitted Mar 9, 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.

Outline

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.

Speaker bio

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).

Links

Slides

https://docs.google.com/presentation/d/1vT7fIGCmjfwyf0SIqql2XNjB3XdgMlFLmZVnuL3_R9E/edit?usp=sharing

Comments

{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}