- System blueprint (boxes and arrows)
- Capacity planning
- Rollout plan
- If rollout of a backward incompatible version of a service
- Data migration
- Switchover
- Service rollback
- Rollback plan (+ feature flags)
- If rollout of a backward incompatible version of a service
- Service operators assigned
- Documentation
- In-code documentation
- README.md with overview, build steps, and deploy steps
- Continuous development
- Tests
- Automated
- Unit tests
- Functional tests
- Code style (lints and sniffers)
- Code quality monitoring
- Code coverage checks
- Manual
- Scale test
- Feature acceptance/Business acceptance
- A/B tests (if applicable)
- Healthcheck endpoint
- Automated
- Package storage
- Container registry (if container)
- Tests
- Continuous delivery
- Gitlab deployment pipeline (optimally for different environments)
- Operational logs
- Scaling (adding new nodes) should not affect consistency of other layers
- Degradation (removing nodes) should not affect consistency of other layers
- Monitoring
- Hardware
- Network
- Resources and load
- API status
- Dashboards
- Alerts
- Distributed tracing integration (if a high-scale system)
- Authentication and Authorization (if applicable)