Over the last few years there has been lot of attention on microservices. After the initial "hype" we saw that what problems it solves and what it can not. I have tried to cover what are microservices and where it can be useful and where it is not. I want to share the guidelines which can be used to choose between a monolith and microservices.
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Do you need microservices architecture?
1. Do you need microservices architecture?
Manu PK
@manupk12
http://www.blog.manupk.com
Software Architects Bangalore Meetup; 16 April 2016
2. About Me
Software Architect @ Schneider Electric
Blogs @ http://www.blog.manupk.com
Twitter : @manupk12
3. Agenda
What is microservices architecture
The need
Characteristics
Examples
Microservices architecture – The not-so-good parts
Limitations
Trade-Offs
Starting with a modular monolith
Don’t start with microservices if you are not sure about
the future
Modularity is the key
Transforming a modular monolith to microservices
4. Microservices architecture – The Need
What we have now – Monolith!
A single packaged deployment for all of the application
Complexity in
Functionality
Scaling
Fault Tolerance
Convoys Law
Governance
“The growing demand for agility, flexibility, and scalability to meet rapidly
evolving business needs creates a strong need for a faster and more
efficient delivery of software” - Arun Gupta
11. Modularity is the key
Can you build a modular monolith..?
Source: http://blog.manupk.com/2013/04/package-your-classes-by-feature-
and-not.html
12. Modularity is the key
Ref: http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
13. Do you need microservices architecture
The “Hype” Cycle
Microservices is not a solution to modularity
problems
Don’t start with microservices if you are not sure
about the future evolutions
Use the “Bounded context” concept in the Eric
Evan’s Domain Driven Design
14. Summary : Answer these before you choose
Does your services represents different business
cases/domains..?
Does the services needs to be deployed and
managed independently..?
Does different parts of the application has different
scaling/Technology needs..?