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:
1) Microservice Architecture is a hot topic
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.
2) DShop is open sourced
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.
3) A vibrant community
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.
4) An Youtube channel
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. Avaliable episodes 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
- Episode 8 - Distributed transactions, 2PC, Event Choreography, Saga
- Episode 9 - Vault secrets, Seq logging, Jaeger distributed tracing
- Episode 10 - Metrics with AppMetrics, InfluxDB, Prometheus, Grafana
- Episode 11 - Travis CI pipelines, custom MyGet feeds
- Episode 12 - Docker basics, Docker Hub, docker-compose
- Episode 13 - Integration tests with xUnit, Web API, Mongo, RabbitMQ
- Episode 14 - Consumer-driven contract testing with Pact
- Episode 15 - Orchestration with Portainer, Kubernetes and Ranche
Here is the link to the first episode.
5) DShop is still being developed
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.