Microservices make it much easier to implement and understand a single service. But they also introduce new problems. You now have a system of independent services that need to interact with each other but do not depend on each other. Suddenly, exchanging data between services and orchestrating complex business operations becomes a complicated process.
As a consultant and trainer, I have worked with developers in various companies. Sooner or later, all of them struggle with this new, often unexpected complexity.
But what makes communication between microservices so tricky?
In a monolithic application, we implemented complex use cases by calling methods in various parts of our application. Now we split and distribute the functionality over multiple services. Instead of calling a method, we now need to call a remote service.
Sure, we try to design our services so that we minimize the number of calls to other services. But we can't avoid them entirely. So, we need reliable and scalable communication between our services.
Over the last few years, our industry has developed new patterns and tools to solve these issues. These new patterns enable you to get scalability and data consistency at the same time. I've helped lots of teams to apply these patterns in their microservices. After a quick introduction and a few examples, they were able to easily solve one of their biggest struggles:
Communication between their services.
And they were finally able to reap the benefits of a microservices architecture. They focused on the business logic of each service and no longer worried about communication between them.
In this course, I want to offer you the same learning experience. We will start with the essential requirements and communication concepts for microservices. Then we will take a look at synchronous and event-based approaches to sharing data between services, compare different options to ensure consistency during distributed update operations, and take a look at event-focussed strategies to manage your data.