You’re building a new software project! Congratulations! You’ll make millions and people will love you. It’s going to be awesome.
Your first question (of course) is: Should you build a monolith or use Microservices? Great Question!
You should build a monolith if you:
- Have only a hammer and can see everything as a nail.
- Have the language you’re going to use, right or wrong.
- Know no one on the team can possibly learn a new language. That’s insane.
- Enjoy contorting your language/framework to solve problems it was never meant to.
- Enjoy building a new library or framework because of the above.
- Believe wholeheartedly in the idea of one code repository.
- Can’t imagine how people would ever deploy multiple code bases.
- Enjoy the simplicity of one, getting progressively longer, build?
- Code merges are so much fun.
- Enjoy spelunking through your code to find out where you’re supposed to make that bug fix.
- Enjoy writing the reams of documentation that will show people how to navigate the project.
- Believe what’s good enough for Ruby on Rails, Django, and ASP.NET is good enough for your team.
- Can’t imagine why anyone would want to write tests against an HTTP API.
- Scoff when someone mentions a new language.
- Are pretty sure the business requirements aren’t going to change
- Have been bitten way too many times by new languages and frameworks that just don’t work out
- Think the idea of containers is nuts. A computer inside of a computer inside of a computer? Craziness.
- Think the network is obviously the slowest part; Keep all the calls in process.
- Love complicated branching strategies; maybe even owning a gitflow T-shirt.
- Love process! Process is your friend. Code freeze, QA, UAT, deployment, Change requests. no one’s getting code in without being reviewed!
- Believe in Scaling up. Scaling out is just expensive, and the network is slow!
- Believe people that allow data to be duplicated throughout the system are reckless. One authoritative place for data!
- Simple implementations are the best; no need for microservices; they’re complex.
Enjoy your newly minted monolith! It’s going to be fast. It’s going to be simple to modify. It’s going to be awesome.