Microservices architecture has gained popularity in recent years. We evolved from N-Tier to SOA and then microservices. Every architecture style has it’s pros and cons. I am not going to write pros and cons of microservices or how do we build it but is high level overview of services that i am using in my project. You can find details of my project on Github described in sections below.
I started to dig deeper into microservices and started a demo project couple of weeks ago to shape my concepts into actual project. I would say it’s fun but at the same time it’s challenging . I started to follow eshopContainers which is open source shopping portal built on microservices architecture. I would suggest anyone to definitely look into if you are interested to learn about microservices.
The demo project i started is called Microcouriers. It’s fictional courier service where users can book , pay and track orders. I am big fan of Azure so i choose to use Azure cloud services to realize my project. It’s an open source project available on github here
I divided my services based on DDD bounded context. It’s event driven architecture and i am using Azure service bus for events passing. I am using combination of popular architecture patterns and technologies in my project mentioned below
- DDD
- SAGA
- CQRS/Event Sourcing
- Event-Driven Microservices
- Clean Architecture
- Dependency Injection
- DIP (Dependency Inversion Principle)
Technical stack
.Net Core 2.2, Azure Cloud services (explained below), Docker , Polly (for resiliency) , SQL Server , Entitiyframe work Core , Dapper (MicroORM), Autofac , MediatR ( for CQRS)
Azure cloud Services
There are many services in azure which we can leverage when working on Microservices. Some of them that i am using is
Azure Service Bus – Since it’s event driven architecture so I am using Service bus to pass around the events.
Azure Redis Cache – Azure redis cache is in memory database to return the quicker response.
Azure Functions – Azure function is serverless offering . Service bus events are triggering functions to update my read model
Azure Kubernetes – I will be using kubernetes to deploy my microservices. Kubenetes is leading container orchestration tool.
If you are new to microservices , i would suggest to read following topics
https://docs.microsoft.com/en-us/azure/architecture/microservices/