Production readiness
What does it mean for a service to be production ready?
Checklist
Incomplete, but good enough I suppose.
Security
- Is authentication in place?
- Is authorization in place?
- Is rate limiting set up?
Testing
- Is the code covered by a reasonable amount of tests?
- Is a code style checker in place?
- Is a linter in place?
- Are tests run automatically?
Documentation
- Is the API documented? Is the authentication method documented?
- Is there a README? See How to write a good README for a product.
- Is there a template for PRs/MRs and for issues? See Pull request template.
Monitoring
- Is logging set up? (Ideally structured logging)
- Is instrumentation set up?
Good metrics to have:
- incoming requests (rate + latency)
- outgoing requests (rate + latency)
- queue size
Deployment
- Is deployment automated?
- Are there health and/or readiness endpoints?
Databases
- Are schema changes (migrations) automated?
- Are the right table indexes in place?