Microservices
In short: With microservices, an application consists of many small, independent services that cooperate over the network. The counterpart is the monolith.
In more detail: Each service has a clear task (payment, users, search), its own data and is developed and delivered independently. That eases the work of large teams but brings complexity: network failures, distributed data, monitoring.
In Depth
- Monolith: one application, one deployment. Easy to start, easy to test, often the better choice for small to medium projects.
- Modular monolith: one deployment with cleanly separated modules. A good intermediate step.
- Communication: HTTP/REST, gRPC, message queues (message queue).
- Data: Each service owns its database; queries across services are laborious.
- Rule of thumb: Only start with microservices when team size or scaling requires it.
See also: Kubernetes, Serverless and functions as a service