Plan before you do
.NET Core has been ported to UNIX-like systems a while ago. Some projects have started migrating to it, some started from scratch with it. This article will describe the pitfalls based on my professional experience related to micro/nano/service hype.
- What's wrong with microservices?
- Would my startup microservice system succeed?
- Can I be sure that in the end the system is operational?
The answer for all of the above - it depends. And depends on several important things that usually people don't like to dive too deep into.
The first thing is - microservices require waterfall planning. That might sound terrifying, especially with all of the hype around Agile but believe me - if you don't know how the system with 20+ micro systems will work together you'll end up with spaghetti microservices. They'll be communicating through HTTP to keep it simple, they will depend on each other, and if you will be lucky enough - you'll end up with not really reliable but working from time to time system that can handle not that much load as you would expect from microservices.
Why does it like this?
- Lack of planning and technical clarifying at the beginning.
- Lack of planning across teams during development.
- Lack of understaning how the system will work at the end.
The system must be incredibly clarified before you do the microservice approach from scratch. That's it. Continuous technical grooming across the all teams in several domains is a key.