Used in complex applications that require short release cycles and high scalability and availability.

Note

Each service typically:

  • Implements one functionality
  • Is deployed independently
  • May have its own database
  • Is managed by an orchestrator

The server-to-server connectors (often RPC) is a large part of this system. This architectural pattern introduces a large amount of complexity.

Note

Microservices are organized around business capabilities, not technical layers.

Vs Streaming
The advantage of this over a monolith is primarily organizational scalability through loose coupling. When it comes to orchestrating several services synchronously through gRPC, think about using a stream join in Stream Processing which is faster since we only need to query a local database which also makes us robust to service failure at query time. In general, subscribing to a stream of changes, rather than querying current state when needed is the cleaner approach.