Cloud Design Patterns inspired by Head First Books theories

Yury Niño
3 min readJan 31, 2019

--

One of my favorite books is Head First Design Patterns — A brain-friendly guide by Bert Bates, Kathy Sierra, Eric Freeman, and Elisabeth Robson. Although books often become outdated, Head First Design Pattern remains in effect. That book was my guide when I was deciding which specialization was right for me and now I still use it as a guide book for my Software Engineering courses.

Lately, I was wondering if it could be possible to apply the same idea in elaborating a Cloud Design Patterns guideline. I am aware of the existence of many really good books about Cloud Design Patterns, however, none is as cool as those published in the Head First series. Again, I must clarify that it’s my personal opinion.

With that in mind, I decided to pick up the methodologies used by these books and apply the same idea to Cloud Distributed Patterns topics.

Head First Books Methods

The main idea behind the Head First Books series is using the metacognition concepts, such as stresses an unorthodox, visually intensive, puzzles, jokes, nonstandard design and layout, and attention-grabbing tactics to present the information and accelerate the learning process.

Having said that, I am pleased to show you my first attempt to explain the Bulkhead Pattern using the Head First Books methods.

Bulkhead Pattern: The Problem

Taken from [1]

Although this pattern is named Bulkhead, because it resembles the sectioned partitions of a ship hull, I would like to explain it using a problem known by all us: traffic jump.

For a moment, think that there an avenue between two microservices: A and B and that the requests are like cars, which are trying to pass from the microservice A to microservice B. In the cars’ journey, there are multiple factors working towards making car driving less pleasant than it could. It could be too many cars in the roadway, obstacles in the road causing a blockage and merger, traffic signals out of sync or too many trucks on the road.

Taken from Taken from [1]

Bulkhead Pattern: The solution

Taken from [2]

As they said, a solution could be partition the microservice instances into different groups, based on consumer load and availability requirements. This is the theory behind of the Bulkhead pattern. On the other hand, a consumer can also partition resources, to ensure that resources used to call one service don’t affect the resources used to call another service.

According to [3], for example, a consumer that calls multiple services may be assigned a connection pool for each service. If a service begins to fail, it only affects the connection pool assigned for that service, allowing the consumer to continue using the other services.

The following diagram shows bulkheads structured around connection pools that call individual services. Suppose that Marie wants to from Home to Work, but they have by a Coffee Store. I have used the Hystrix pattern to implement a Bulkhead that guarantees that Marie arrives at her work.

Brain Time

Let’s give your right brain something to do.
It’s your standard crossword; all of the solution words
are from this chapter.

How the Bulkhead Pattern works with Hystrix

Let me share, in my next post, a git repository with a cool example using Hystrix and Bulkhead.

@savelascod Thank you so much for taking the time to review my draft.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Yury Niño
Yury Niño

Written by Yury Niño

Cloud Infrastructure Engineer @Google. Chaos Engineer Advocate. Loves building software applications, DevOps, Security and SRE

No responses yet

Write a response