Used in applications that involve distributing data and processing across multiple components over a network.

Components

  • Clients
    • Initiate requests
  • Servers
    • Provide services to multiple clients
  • The connectors here are remote communication protocols (HTTP, REST, RPC, Publisher Subscriber Model)

Pros and Cons

Pros:

  • Clear distribution of responsibility
  • Clients and servers can be on different stacks
  • Servers can be upgraded or replicated without changing clients Cons:
  • Network failure modes become central concerns
  • Service discovery and governance become harder as the number of servers grow

Variants