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

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.

Bulkhead Pattern: The solution

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.