The Zen of Microservices (1) : Why & When?
Software systems need to be Scalable, Resilient and Agile
- Scalable - Adaptable to varying loads, i.e at high loads ramp up performance, at low loads reduce costs by dynamically scaling down resources
- Resilient - Able to provide business value even in the midst of outages
- Agile - Be responsive to business needs with minimum disruption. It's no longer acceptable to take 6 months to 1 year to develop a new feature.
Microservices allow large enterprises to gradually convert to cloud-native software systems and fully leverage the benefits of Cloud computing.
The combination of Agile Development methodology (rapid iteration) combined with Microservice Architecture (small independent services) dovetails perfectly with Cloud computing principles and offers huge business advantages as evidenced by Netflix, LinkedIn, PayPal etc.
Microservice Premium / Monolith First Strategy
"Almost all the successful microservice stories have started with a monolith that got too big and was broken up...Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble..." ~ Martin Fowler (ThoughtWorks) MonolithFirstStrategy
Adopting a microservice architecture comes with a significant cost ("Microservice Premium"). The quote above suggests that the best time to make this move is when there's no other choice.
TLDR; Adopt microservices architecture only when your business' needs outgrows the simplicity of a monolithic application.