Deployment
Deployment Order
Use backward-compatible rollout order:
database migrations
-> backend
-> web
-> mobile internal builds
-> mobile production release
Environments
| Environment | Purpose |
|---|---|
| Local | developer feedback |
| Test | automated verification |
| Staging | production-like acceptance |
| Production | live system |
Backend
- Build a production container image.
- Apply Flyway migrations through a controlled release job.
- Configure secrets through a secret manager.
- Expose liveness and readiness probes.
- Monitor latency, errors, database health, and auth failures.
Web
- Build from locked dependencies.
- Inject runtime environment values safely.
- Configure TLS, domains, CORS, cookie domains, and security headers.
- Run staging smoke tests and Playwright checks before production.
Mobile
- Configure signing outside source control.
- Inject environment values at build time.
- Release internal Android/iOS builds pointed at staging.
- Verify old mobile versions remain API-compatible before backend rollout.
- Promote to production stores only after acceptance testing.
Rollback
- Application rollback must not require destructive database rollback.
- Database changes should be backward-compatible across one mobile release window.
- Keep API contracts compatible with older mobile versions.
- Document manual recovery steps for failed migrations and bad releases.