Multi-Service Stack Pattern

A Multi-Service Stack hosts multiple applications in a single instance of the infrastructure stack.

A Multi-Service Stack hosts multiple applications in a single instance of the infrastructure stack
A Multi-Service Stack hosts multiple applications in a single instance of the infrastructure stack.

For example, a search application might involve running several services - a front end UI, an indexing service, a search API service, and a data store.

Also Known As

  • Combined stack
  • Service group stack

Motivation

Defining the infrastructure for multiple related services together may make it easier to manage the application as a whole.

Applicability

This can work well when a single team owns the infrastructure and deployment of all of the pieces of the application, so the boundaries of the stack match the boundaries of the team.

Multi-service stacks are sometimes a useful part of an incremental strategy of splitting a monolithic stack into smaller stacks, with an aim of ending up with single service stacks or even cross-stack services where appropriate. In this case, the multi-service stack is a stepping stone towards a more fully decomposed architecture.

Consequences

A drawback with this pattern is that the stack can become unwieldy, tending towards a monolith. It can be difficult to make a small change to a single service without risking disruption to other applications running on the stack.