I think that almost everyone has heard about the Microservice Architecture. It isn't my intention to glorify or reprove this architecture's approach. As any solution microservices have their good and bad sites. Let's get familiar with the Microservice architecture to make up our mind. So I came to the heart of the matter. I want to tell you about a project called "Distributed .Net Core - DShop" in brief DShop. It is a project driven by two enthusiasts of microservice's solutions and Microsoft technologies: Dariusz Pawlukiewicz and Piotr Gankiewicz. They are the founders of DevMentors. Why do I think it's worth to mention this particular project? There are a few reasons why people interested in microservices, CQRS, C#, and DDD should take a look at this project (even if you are not familiar with C#, but you know another C-family programming language ex. C++, Objective-C, Java, etc., you would find something interesting for you).
Five reasons why you should get interested in this project:
This is my subjective opinion, and I assume that yours too otherwise you wouldn't read my text. I think that microservices as an architectural pattern are interesting. I'm not saying that they are a silver bullet and they can solve any problem, but in my opinion, it's good to know what benefits and what issues are bounded with the Microservice Architecture. The best way is to give it a try, and DShop is an excellent opportunity for that.
You can find all the microservices which are taking part in the solution in public Github repositories. Anyone can look over the source code and grab those parts which he or she considers attractive. Of course, the most efficient way of getting to know the project is to contribute. Feel free to make a pull request.
Distributed .NET Core
What is Distributed .NET Core?
It's an open source project (and a course available soon at devmentors.io), providing in-depth knowledge about building microservices using .NET Core framework and variety of tools. One of the goals, was to create a cloud agnostic solution, that you shall be able to run anywhere.
For this particular course, please have a look at the topics being discussed under this category.
What topics will be discussed?
A lot of them, covering different aspects of building distributed services, whether it comes to implementing the code, managing services discovery and load balancing, configuring logging or monitoring, and eventually deploying to the VM using Docker.
Just to name a few:
Dariusz and Piotr are two pillars of the project, but everyone is being invited to the project's contribution. There are several forms to get involved in the project like forum, Gitter or Twitter. Feel free to take the most suitable communication channel for you. You can ask a question to guys or propose a change.
Honestly, I think that this the most significant feature of the DShop project. Why do I feel so? IMHO it brings the educational value. In each episode, Dariusz and Piotr are explaining the core concepts of a Microservice Architecture by an example. They are making a quick introduction to the problem and solving it before our eyes. Yes, guys are coding and recording at the same time. At the moment of writing this post, seven episodes are recorded. They are listed below:
- Episode 1 - Intro, HTTP, requests flow, Infrastructure with Docker
- Episode 2 - CQRS - Write side, Discounts service, MongoDB repository
- Episode 3 - Subscribing RabbitMQ messages, API gateway
- Episode 4 - Asynchronous microservices integration via events
- Episode 5 - CQRS - Read side, Internal HTTP communication
- Episode 6 - Sevice discovery & load balancing with Consul and Fabio
- Episode 7- Handling asynchronous requests, SignalR, Polly
Below is the link to the first episode.
The project isn't dead. Dariusz and Piotr are enhancing the project. They are adding new features, refactoring old code, recording new youtube's episodes. I keep my fingers crossed to keep them enthusiastic and continue they work.
It's obvious that the Microservice Architecture isn't an easy topic. Dariusz and Piotr assumed that average contributor has basic knowledge about Docker and RabbitMq. They don't dive deep into details of those technologies. In my opinion, it's good to get familiar with these tools (especially Docker). With this knowledge, we can focus on the architecture rather than the tool itself. Please don't worry, without the experience in Docker and Rabbit you will be able to understand the main concepts, but it could be a little harder.
The last thing I'd like to mention is that I'm glad there are developers like Dariusz and Piotr which want to share their knowledge with the community. Thanks them for that.