After doing rigorous research and analysis I finally arrived to a point which is confusing me "Is Microservice a design pattern or architecture". Some say it's a pattern evolved as a solution to monolithic applications and hence design pattern And some confirms no doubt it's an architecture which speaks about their development, management, scalability, autonomous & full stack. Any thoughts or suggestions I welcome to get myself clarified.
2 Answers
Microservices can be best described as an architectural style. Beside architectural decisions the style also includes organizational and process relevant considerations.
The architectural elements include:
- Componentizing by business concern.
- Strict decoupling in terms of persistence.
- Well defined interfacing and communication.
- Aim for smaller service sizes.
The organizational elements include:
- Team organization around components (Conway's Law).
- Team size limitations (two-pizza team).
The process relevant elements include:
- Less centralized governance.
- Smaller, more frequent releases.
- Higher degree of freedom for technology decisions.
- Product oriented development (agile, MVP, lean, etc).
For more details I recommend reading the articles from Martin Fowler.

- 9,166
- 1
- 33
- 46
I would describe it as a software architectural style that require functional decomposition of an application.
Usually, it involves a monolithic application is broken down into multiple smaller services, each deployed in its own archive, and then composed as a single application using standard lightweight communication, such as REST over HTTP or some async communication (of course, at some point micro services are written from scratch).
The term “micro” in microservices is no indication of the line of code in the service, it only indicates the scope is limited to a single functionality.
Each service is fully autonomous and full-stack. Thus changing a service implementation has no impact to other services as they communicate using well-defined interfaces. There are several advantages of such an application, but its not a free lunch and requires a significant effort in NoOps.
It's important to focus on that that each service must have the properties of:
- Single purpose — each service should focus on one single purpose and do it well.
- Loose coupling — services know little about each other. A change to one service should not require changing the others. Communication between services should happen only through public service interfaces.
- High cohesion — each service encapsulates all related behaviors and data together. If we need to build a new feature, all the changes should be localized to just one single service.

- 14,397
- 15
- 77
- 118