I have chosen this subject as my research but one the main question is, why? I’ll try to capture that in this blog post.
Microservices is one of the controversial and hot topics around software design. In this research, I will be looking at the definition of Microservices and how it is different to Monolithic design, when you should go with Microservices architecture and what are the challenges (technical and non-technical) around it.
What are Microservices anyway?
Just like Service-Oriented Architecture (SOA) era, a lot of people jump on the bleeding-edge of the technology without understanding what it really is. Then by comparing and contrasting the new thing to what they already know, they come to think that the new concept like SoA or Microservices is what they know and what they have been doing all along! This is a form of Confirmation Bias, which is a separate – although related – topic.
According to Martin Fowler, Microservices are a architectural style that has specific characteristics:
- Organized around a Business Capability
- Decentralized Governance
- Decentralized Data management
- Infrastructure Automation
- Design for failure
We’ll go over each of the characteristics in a separate post.