---
title: "0012. Make every stateful component state whether its state is per process or cluster-wide"
description: "Accepted, 2026-10-20"
canonical_url: "https://docs.galleon.thec1oud.uk/docs/decisions/0012-every-component-is-replication-aware"
markdown_url: "https://docs.galleon.thec1oud.uk/docs/decisions/0012-every-component-is-replication-aware.md"
last_updated: "2018-10-20"
x_farming_labs_generated_preamble: true
---

# 0012. Make every stateful component state whether its state is per process or cluster-wide
URL: /docs/decisions/0012-every-component-is-replication-aware
LLM index: /llms.txt
Description: Accepted, 2026-10-20

# 0012. Make every stateful component state whether its state is per process or cluster-wide

**Status:** Accepted · **Date:** 2026-10-20 · [Source on GitHub](https://github.com/thec1oud/galleon/blob/dev/docs/adr/0012-every-component-is-replication-aware.md)

## Context

Galleon apps are expected to run on several nodes. Components that hold
state, such as caches, rate limiters, schedulers and sessions, behave
differently on one node and on many, and a component that assumes one node
breaks silently on many.

## Decision

Every component that holds state states whether that state is per process or
cluster-wide. A component gets cluster-wide state only through the
coordination interface (ADR 0011), never through a side channel of its own.

## Consequences

- Multi-node behaviour is designed in, not discovered in production.
- Boot can check each component's needs against the configured backend.
- Each component has to document its replication behaviour.

## Alternatives considered

- **Per-component cluster support.** Each component picks its own mechanism,
  and the guarantees can't be checked or reasoned about together.

## Sources

- [Part 5: principle 8](https://github.com/thec1oud/galleon/blob/0897d74/docs/design/05-architecture.md#0-principles)

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
Docs-scoped sitemap: [/docs/sitemap.md](/docs/sitemap.md).
Well-known sitemap: [/.well-known/sitemap.md](/.well-known/sitemap.md).
