- Use `tower` middleware for composable request/response processing layers.
- Use `tracing` crate (not `log`) for structured, async-aware logging and diagnostics.
- Use `tokio-console` for runtime debugging — it shows task states, waker counts, and poll durations for diagnosing async performance issues.
- Use `tokio-console` for runtime task inspection and diagnostics during development.
- Use `tower::ServiceBuilder` to compose timeout, rate-limiting, and retry middleware.