Understanding the Art of Designing Microservices — Part 2

Ajanthan Eliyathamby 🇱🇰
3 min readDec 13, 2023

--

[Article moved from ajanthane.blogspot.com]

Anti Corruption Layer: One bounded-context uses the services of another and is not a customer to that other bounded-context, but aims to minimize impact from the changes in the bounded-context it depends on by introducing set of adapters. Means while consume data from third party or from a legacy application always use a translation layer.

Open Host: Expose the upstream microservice functionality via an API, and the API does the translation.

Published Language: The interacting bounded-context’s agree on a common language in which they can communicate each other to send and receive messages frequently. Eg: XML, JSON in ESB

Separate Ways: The separate ways pattern suggests avoiding such costly integrations, and finds other ways to cater such requests.

Big Ball of Mud: This is like sometime we were not able to split a particular legacy Monolithic Application as it will be costly and complex in those cases we need to use a way like using API or Anti corruption layer to get it communicated.

8. Tactical Design

Tactical Design explains how the internal design of bounded context should be implemented. The below diagram explains with notes on what are the available patterns we can use while designing the bounded context.

Another way of understanding the Tactical Design Components depicted in the below image.

Image Courtesy:

Domain events can be used to notify other parts of the system when something happens.

9. Uber case study

To understand the impact or how a monolithic application converted to Microservices — it’s better to study the Uber use case. Below is the architecture that Uber had earlier.

Courtesy: https://dzone.com/articles/microservice-architecture-learn-build-and-deploy-a

  • All the features had to be re-built, deployed and tested again and again to update a single feature.
  • Fixing bugs became extremely difficult in a single repository as developers had to change the code again and again.
  • Scaling the features simultaneously with the introduction of new features worldwide was quite tough to be handled together.

Due to these they have moved to the microservices architecture and the diagram below depicts the way Uber converted their monolithic application into microservices. When you compare the Before and After images then you can identify how they splitted the functionality.

That’s it, concluding this article at this point.

--

--

Ajanthan Eliyathamby 🇱🇰
Ajanthan Eliyathamby 🇱🇰

Written by Ajanthan Eliyathamby 🇱🇰

Associate Architect — Enterprise Integration | 14x WSO2 | 1x HashiCorp | 1× Azure | Runner-Up WCPY 2020 | https://ajanthane.blogspot.com

No responses yet