9.1 Configuration And Release Management
Release is not "throw code into production." Release management makes change traceable, controlled, reversible, and observable. Configuration management makes the same artifact understandable and auditable across environments.
Many production incidents are not caused by wrong business logic. They come from wrong configuration, wrong environment, wrong version, or an unprepared rollback path.
Configuration Is Part Of Production Behavior
Configuration includes environment variables, feature flags, secrets, external service URLs, rate limits, regional settings, and permission policies. They may not live in code, but they decide system behavior.
Good configuration management should provide:
- Environment isolation: development, test, staging, and production must not share sensitive config.
- Permission control: not everyone can change production config.
- Audit trail: who changed what and when.
- Safe defaults: missing config should not create dangerous behavior.
- Rollback: bad config can be restored quickly.
Release Notes And Versions
Version numbers, release notes, and artifact identifiers help the team answer "what is production running now?" During an incident, the team needs to know:
- Which commit entered production?
- Which features and fixes are included?
- Did config or migration change with the release?
- Can the previous artifact be restored?
- When did user impact begin?
Without this information, debugging becomes guessing.
Rollback Thinking
Rollback is not an improvised action after failure. It is part of release design. Before release, decide:
- Is the data migration backward-compatible?
- Can a feature flag disable the risky path?
- Can the old version read new data?
- What triggers rollback?
- Who has permission to roll back?
Reliable release does not mean never failing. It means failures can be detected, limited, and recovered from.