What are Microservices?
Microservices describes the architectural process of building a distributed application from separately deployable services that perform specific business functions and communicate over web interfaces. DevOps teams enclose individual pieces of functionality in microservices and build larger systems by combining the microservices like building blocks.
Microservices apply an example of the open/closed principle:
- They're open for extension (using the interfaces they expose)
- They're closed for modification (each is implemented and versioned independently)
Microservices provide many benefits over monolithic architectures:
- They can remove single points of failure (SPOFs) by ensuring issues in one service don't crash or affect other parts of an application.
- Individual microservices can be scaled out independently to provide extra availability and capacity.
- DevOps teams can extend functionality by adding new microservices without unnecessarily affecting other parts of the application.
Using microservices can increase team velocity. DevOps practices, such as Continuous Integration and Continuous Delivery, are used to drive microservice deployments. Microservices nicely complement cloud-based application architectures by allowing software development teams to take advantage of scenarios such as event-driven programming and autoscale. The microservice components expose APIs (application programming interfaces), typically over REST protocols, for communicating with other services.
An increasingly common practice is to use container clusters to implement microservices. Containers allow for the isolation, packaging, and deployment of microservices, while orchestration scales out a group of containers into an application.
Learn more about microservices on Azure.