DEV Community

Cover image for Let's create microservices system from scratch - post mortem
DigitalCrafting
DigitalCrafting

Posted on

Let's create microservices system from scratch - post mortem

The last part of this series was posted almost 1.6 year ago and I am way overdue with the post mortem. So, what happened?

I tried to bite more, than I could chew.

That's pretty much it. It's not going to be another 10-minute long story about that. Instead, I have 3 simple things I learned:

1. Start simple

Instead of going straight to microservices, start with monolithic application first, and then expand it as needed. This would apply well in your professional job as well.

Since this series died, I actually completed another project doing exactly that - started with monolith, and when the functionality was done, I split and refactored the code.

2. Do small increments every day

If you want to finish a project, don't do marathons on weekends, instead, force yourself to do at least a single commit every day. It doesn't even have to be a big one. I had commits where I just renamed a class or moved it to another package. Focus on one step at a time, and before you know it, you will be done.

3. Focus on a single technology

My initial idea was to try writing microservices in different languages since this is one of the big selling points of that architecture - you can have as many different languages interacting with each other as you need. While this might be a good idea on paper, in practice it's unmaintainable (this point comes both from this project and my job experience).

While the languages themselves are not that hard to learn, the frameworks and ecosystems are a nightmare. Each has a different toolset, different philosophy behind them, and different problems they come with. Avoid that as much as you can.

Additionally, if each team uses different technology, you can't just switch teams if you are bored or exhausted with your project - you have to look for another job. You also don't have anyone, besides your teammates, who can take a look at a problem with a fresh eye and ideas.


As mentioned before, this failure was not in vain, as I actually created and finished another project, about which I will talk in another set of articles.

I hope this post will help someone finish their project :)

Top comments (0)