Learning · Software Engineering Manifesto

Keep app processes disposable

Stateless compute, stateful backing services — local memory and disk are not the system of record.

Principle

App instances come and go. Durable state lives in backing services with explicit ownership. Sticky local state is a design smell unless carefully bounded (caches with TTL, ephemeral scratch).

Therefore we practice

  • Persist authoritative state in datastores/queues designed for it
  • Treat instances as replaceable; survive restarts without manual repair
  • Externalize sessions and long-lived locks when horizontal scale matters
  • Config and secrets via environment/platform — not baked into the artifact
  • Build once; promote the same artifact across environments

Smells

  • “Just restart that one box” as the primary recovery plan
  • Critical data only on a container filesystem
  • Rebuilding different binaries per environment
  • Sessions that break when any replica disappears

← Software Engineering Manifesto