In this post, we will look at what application flow is and how it can be defined. We will then discuss where this logic could live by comparing choreography and orchestration.
Application flow is the flow of execution through your system. It describes how some input events progress through the system, going through a number of microservices in the correct order.
Firstly we need a way to determine from an event where it is in the flow, essentially why it has been produced. Each event has a type, but this might not contain enough information. For example, if an event…
If you‘re not familiar with the basics of an event-based microservice architecture, you should check out this Event-based Microservices: Overview post.
When a system is distributed (like a microservice-based system) along with the advantages comes the potential for errors. Examples include: connectivity issues, serialization/deserialization issues, downstream system outages, peer system outages, bugs, and the list goes on. The handling of these errors in a simple and repeatable way is important in the success of a project.
This sounds like a daunting problem, but the key to the solution is to simplify and break down the complexity. We can break down…
A message bus (or event bus) solves the problem of how microservices communicate with each other. This sounds like a problem that could be solved using simple direct connections, but there are challenges that would come along with that solution. Some examples of these challenges include handling horizontal scaling, network disconnects, and service discovery.
To learn more about where a message bus fits into a microservice architecture, you can view the Event-based Microservices: Overview post.
In short, the event bus is the hub that holds the system together.
First of all, we need a standard way to define microservice events…
A microservice is something that takes input and gives output. It can almost be thought of as a function. The only difference here is that this function can be run anywhere you want and can be replicated as many times as you want. It can be run on multiple machines, being horizontally scaled to handle more calls and so more data.