An architectural approach to developing a single application as a suite of small individually deployable services.
The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare mininum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.
Microservices Definition by Lewis/Fowler
Properties:
- The services are easy to replace.
- Services are organized around capabilities, e.g. user interface front-end, recommendation, logistics, billing, etc.
- Services can be implemented using different programming languages, databases, hardware and software environment, depending on what fits best.
- Architectures are symmetrical rather than hierarchical (producer/consumer).
Philosophy:
- The services are small - fine-grained to perform a single function.
- The organization culture should embrace automation of deployment and
testing. This eases the burden on management and operations. - The culture and design principles should embrace failure and faults, similar to anti-fragile systems.
- The services are elastic, resilient, composable, minimal, and complete.
Books:
- Building Microservices Designing Fine-Grained Systems - 2015
- Production-Ready Microservices - 2016
- Microservices Deployment Cookbook - 2017
- Microservices: Building Scalable Software - 2017
- The Tao of Microservices - 2017
Besides there are thousands of books that speak about microservices focused on some language like Python or Java or some platforms like Azure or AWS easily to find.
Articles
The following is an great article series from the NGINX Blog.
- Introduction to Microservices
- Building Microservices: Using an API Gateway
- Building Microservices: IPC in a Microservices Architecture
- Service Discovery in a Microservices Architecture
- Event-Driven Data Management for Microservices
- Choosing a Microservices Deployment Strategy
- Refactoring a Monolith into Microservices