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