What do we mean by microservices?
Microservices, or microservice architecture, is a pattern of software development where teams build small services, with their own databases that communicate by some form of Remote Procedure Call (RPC). Microservices are as much an organizational decision as they are a technical one; the goal is to make it as simple as possible to scale both teams and software.
The following diagram shows how an imaginary monolith might be split into microservices:
Figure 6.1 – A monolithic application split into three smaller services
Microservices typically exhibit the following characteristics:
- The service can be developed, deployed, and scaled independently; it should not impact the function of other services. It does not share code with other services, and communication with other services happens over some form of RPC.
- The service does not depend on other services being available to be successful. This does...