more cents added
parent
af0e77c421
commit
0fee2119a1
@ -1,2 +1,8 @@
|
||||
# overview
|
||||
|
||||
This is about our software architecture.
|
||||
|
||||
Architecture is the art of decrease software developers freedom without increasing their suffering.
|
||||
|
||||
You may find other definitions here:
|
||||
* https://martinfowler.com/architecture/
|
||||
|
@ -0,0 +1,38 @@
|
||||
https://github.com/juxt/aero
|
||||
|
||||
### Explicit and intentional
|
||||
|
||||
Configuration should be explicit, intentful, obvious, but not clever. It
|
||||
should be easy to understand what the config is, and where it is
|
||||
declared.
|
||||
|
||||
Determining config in stressful situations, for example, while
|
||||
diagnosing the cause of a production issue, should not be a
|
||||
[wild goose chase](http://en.wiktionary.org/wiki/wild-goose_chase).
|
||||
|
||||
### Avoid duplication ...
|
||||
|
||||
Config files are often duplicated on a per-environment basis, attracting
|
||||
all the problems associated with duplication.
|
||||
|
||||
### ... but allow for difference
|
||||
|
||||
When looking at a config file, a reader will usually ask: "Does the value differ from the default, and if so how?". It's clearly better to answer that question in-place.
|
||||
|
||||
### Allow config to be stored in the source code repository ...
|
||||
|
||||
When config is left out of source code control it festers and diverges from the code base. Better to keep a single config file in source code control.
|
||||
|
||||
### ... while hiding passwords
|
||||
|
||||
While it is good to keep config in source code control, it is important to ensure passwords and other sensitive information remain hidden.
|
||||
|
||||
### Config should be data
|
||||
|
||||
While it can be very flexible to have 'clever' configuration 'programs', it can be [unsafe](http://www.learningclojure.com/2013/02/clojures-reader-is-unsafe.html), lead to exploits and compromise security. Configuration is a key input to a program. Always use data for configuration and [avoid turing-complete](http://langsec.org/occupy) languages!
|
||||
|
||||
### Use environment variables sparingly
|
||||
|
||||
We suggest using environment variables judiciously and sparingly, the way Unix intends, and not [go mad](http://12factor.net/config). After all, we want to keep configuration explicit and intentional.
|
||||
|
||||
Also, see these arguments [against](https://gist.github.com/telent/9742059).
|
@ -0,0 +1,5 @@
|
||||
#Postel's Law:
|
||||
|
||||
be conservative in what you do, be liberal in what you accept from others.
|
||||
|
||||
https://martinfowler.com/bliki/TolerantReader.html
|
Loading…
Reference in New Issue