What does it mean for a service to be production ready?
Incomplete, but good enough I suppose.
- Is authentication in place?
- Is authorization in place?
- Is rate limiting set up?
- 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?
- 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
- Is deployment automated?
- Are there health and/or readiness endpoints?
- Are schema changes (migrations) automated?
- Are the right table indexes in place?