Configuration is a very overloaded term. Let's define it clearly for our purpose here: configuration mostly refers to operational data that's needed for computation. The configuration may be different between environments. Here are some typical configuration items:
- Service discovery
- Support testing
- Environment-specific metadata
- Secrets
- Third-party configuration
- Feature flags
- Timeouts
- Rate limits
- Various defaults
In general, the code that processes the input data utilizes configuration data to control operational aspects of the computation, but not algorithmic aspects. There are special cases where, via configuration, you can switch between different algorithms at runtime, but that's crossing into gray areas. Let's keep it simple for our purposes.
When considering configuration, it's important to think about who is supposed...