fbpx
What are the Saga design pattern and types available?

What are the Saga design pattern and types available?

What are the Saga design pattern and types available?

Today we will see what are the Saga Design Pattern and types available.

Previously we saw about What is Microservice? and the principles followed while developing MSA and the available design patterns.

What are the Saga design pattern and types available?

The Saga Pattern is a microservices architectural pattern to implement a transaction that extends multiple services.

A saga is a sequence of local transactions. Each service in a saga performs its own transaction and publishes an event. The other services listen to that event and perform the next local transaction. If one transaction fails for some reason, the saga also executes compensating transactions to undo the impact of the preceding transactions.

Example:

Consider a Food delivery service flow, When a user places an order, below could be the flow.

  1. The food ordering service creates an order. At this point, the order is in PENDING status.
  2. With the Saga pattern, it contacts the restaurant via the restaurant service.
  3. The restaurant service attempts to place an order with the selected restaurant, Once the order is received by Restaurant it sends back an ORDER_ACCEPTED (if the order is accepted) or ORDER_REJECTED (if the order cannot be accepted) status.
  4. The saga received the status ORDER_ACCEPTED or ORDER_REJECTED status and process the response to the customer accordingly.
  5. The food order service then changes the status of the order, if the order is accepted then it displays an order confirmation message if the order is rejected it display an apologies message and suggest alternative restaurants.

What are the sage design pattern and types available?

Types of Saga:

  1. Orchestration-based saga
  2. Choreography-based saga

In the next article, we will see in detail about the Type of Saga design patterns.

LIKE | SHARE | SUBSCRIBE

WeCanCode-Author

WeCanCode-Author

December 07, 2021

Senior Developer | Java & C#.NET | 10++ years of IT experience.

Planning to learn ReactJS or Angular or Flutter.!

What is the CQRS design pattern?

What is the CQRS design pattern?

What is the CQRS design pattern?

Today we will see what is the CQRS – Command query responsibility segregator Design Pattern is.

Previously we saw about What is Microservice? and the principles followed while developing MSA and the available design patterns.

Command query responsibility segregator (CQRS) design pattern?

CQRS stands for Command Query responsibility segregator, a design pattern that separates the read and update operations for data.

In traditional architecture, the same data mode is used to query and update the data in a database, This is how the CRUD operations work. With CQRS the read and update operations are separated into two parts, Command and Query.

The command part will handle all the CREATE, UPDATE, DELETE requests, while the Query part will handle all the READ (Materialize view) requests.

 Advantages of CQRS:

  • Performance
  • Scalability
  • Improves Security
  • It also prevents update commends from causing merge conflicts at the domain level

What is the CQRS design pattern?

Example:

 Consider we have Video Services, One for Uploading (Write Operation) and another for viewing (Read Operation).

Where Uploading will perform Create, Update, Delete operations. And the other service on viewing will perform a Select operation to read the videos and their metadata.

In the next article, we will see the Circuit breaker design pattern.

LIKE | SHARE | SUBSCRIBE

WeCanCode-Author

WeCanCode-Author

November 28, 2021

Senior Developer | Java & C#.NET | 10++ years of IT experience.

Planning to learn ReactJS or Angular or Flutter.!

What is Branch or Branching design pattern?

What is Branch or Branching design pattern?

What is Branch or Branching design pattern?

 Today we will see what is an What is Branch or Branching Design Pattern is.

Previously we saw about What is Microservice? and the principles followed while developing MSA and the available design patterns. also, we saw the Shared database design pattern. 

Branch or Branching design pattern?

Branch Design pattern extends the Aggregator design pattern and allows us to perform simultaneous response to be processed from two likely mutual exclusive chained services .

This pattern also be called as different chain or Single chain based on the business needs. This design pattern is also known as Branching design pattern.

 

What is Branch or Branching design pattern?

Example:

Consider the client is booking the Cab. The Trip Service makes call to the Dispatcher service.

Dispatcher service then makes two calls to Passenger & Driver Service, Then these two service calls Notification service.

Business Flow starts like the Client books a Trip, Trip dispatches the request to driver and passenger, then Both Passenger and Driver are notified using the Notification service.

 

In the next article, we will see the CQRS (Command query responsibility segregator) design pattern.

LIKE | SHARE | SUBSCRIBE

WeCanCode-Author

WeCanCode-Author

November 23, 2021

Senior Developer | Java & C#.NET | 10++ years of IT experience.

Planning to learn ReactJS or Angular or Flutter.!

What is Asynchronous Messaging Design Pattern?

What is Asynchronous Messaging Design Pattern?

What is Asynchronous Messaging Design Pattern?

Previously we saw about What is Microservice? and the principles followed while developing MSA and the available design patterns. also, we saw an API Gateway design pattern.

Today we will see what is Asynchronous Messaging Design Pattern is.

What is Asynchronous Messaging Design Pattern?

Previously we saw about Chained or Chain of responsibility design pattern which makes the client wait for a long time, It also breaks the chain if any one service goes down and cause a bad experience for the clients.

To avoid such bad experiences for the client, The Asynchronous design pattern can be used, which communicate with the available services using message queue or event driven approach and not sequentially.

Yes, Messaging or events, The Asynchronous design pattern uses the Messaging Queue (MQ) or Event driven like ActiveMQ, RabbitMQ, Kafka and other tools for its communication with other services.

Example:

Consider we have Cart, Product, Stock, Order & Shipping services.

When the Product is added to the Cart, Stock must be updated accordingly, So the Product calls stock via Message Queue.

And then Order calls shipment via Message Queue to prepare a label for shipment.

This way the client need not wait for the flow of service to be completed to get the response immediately.

what is Asynchronous design pattern?

 

In the next article, we will see Shared Database or Shared Data design pattern.

 

LIKE | SHARE | SUBSCRIBE

WeCanCode-Author

WeCanCode-Author

November 11, 2021

Senior Developer | Java & C#.NET | 10++ years of IT experience.

Planning to learn ReactJS or Angular or Flutter.!

What is Chained or Chain of Responsibility Design Pattern

What is Chained or Chain of Responsibility Design Pattern

What is Chained or Chain of Responsibility Design Pattern

Previously we saw about What is Microservice? and the principles followed while developing MSA and the available design patterns. also, we saw an API Gateway design pattern.

Today we will see what is Chained or Chain of Responsibility Design Pattern is.

What is Chained or Chain of Responsibility Design Pattern?

The chained or Chain of responsibility pattern produces a single response which is a combination of multiple chained responses.

Example:

Consider we have Contact, Student & Fees three microservices, each web service communicates with the following or next service as in waterfall.

Yes, Contact service calls Student service and Student service calls Fees service. Response of Fees and Student will be returned back to Contact service.

What is Chained or Chain of Responsibility Design Pattern

Chained Or Chain Of Responsibility Design Pattern in Microservice

Here the Client must wait till the response comes back after the consolidated response is available, meaning the Client will be waiting for the chain of response to be returned back as a response.

Use this service where the client is not expecting any response. (Something like calling a batch job, synchronous tasks or orchestrated flow of actions.

All these services use the HTTP request or response for communicating,

Note: Each service request and response looks different from the chained flow.

 

In the next article, we will see Asynchronous Messaging design pattern.

 

LIKE | SHARE | SUBSCRIBE

WeCanCode-Author

WeCanCode-Author

November 07, 2021

Senior Developer | Java & C#.NET | 10++ years of IT experience.

Planning to learn ReactJS or Angular or Flutter.!

Pin It on Pinterest