Configure program using flags
Flags are the best way to configure your program, because they’re a self documenting way to describe the configuration surface area of your program at a runtime.
Flags can be inspected by other users of the system, and env vars can easily get forgotten
Domain driven over MVC Just ensure that explicit command line flags, if given, take highest priority