more cents added
This commit is contained in:
parent
af0e77c421
commit
0fee2119a1
5 changed files with 49 additions and 10 deletions
|
@ -1,2 +1,8 @@
|
||||||
# overview
|
# 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/
|
||||||
|
|
|
@ -6,8 +6,6 @@ You can use [adr-tools](https://github.com/npryce/adr-tools) for managing the AD
|
||||||
|
|
||||||
In each ADR file, write these sections:
|
In each ADR file, write these sections:
|
||||||
|
|
||||||
# Title
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
What is the status, such as proposed, accepted, rejected, deprecated, superseded, etc.?
|
What is the status, such as proposed, accepted, rejected, deprecated, superseded, etc.?
|
||||||
|
|
38
principles/ConfigAsData.md
Normal file
38
principles/ConfigAsData.md
Normal file
|
@ -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).
|
|
@ -3,18 +3,10 @@
|
||||||
1. Jedes Element nur einmal testen
|
1. Jedes Element nur einmal testen
|
||||||
2. möglichst billig testen
|
2. möglichst billig testen
|
||||||
3. YAGNI / KISS
|
3. YAGNI / KISS
|
||||||
|
|
||||||
#Postel's Law:
|
|
||||||
|
|
||||||
be conservative in what you do, be liberal in what you accept from others.
|
|
||||||
|
|
||||||
https://martinfowler.com/bliki/TolerantReader.html
|
|
||||||
|
|
||||||
5. DDD Aufteilung nutzen
|
5. DDD Aufteilung nutzen
|
||||||
1. Domain isoliert - isoliert testbar
|
1. Domain isoliert - isoliert testbar
|
||||||
2. Inputs / Outputs validieren
|
2. Inputs / Outputs validieren
|
||||||
3. Aggregate bilden
|
3. Aggregate bilden
|
||||||
6. Configuration ist dumm
|
|
||||||
7. Wir programmieren in Programmiersprachen und nicht in XML / Template / yaml ...
|
7. Wir programmieren in Programmiersprachen und nicht in XML / Template / yaml ...
|
||||||
8. Gute Programmiersprachen erfinden ist schwierig, drum lassen wir das
|
8. Gute Programmiersprachen erfinden ist schwierig, drum lassen wir das
|
||||||
9. Microkernel
|
9. Microkernel
|
||||||
|
|
5
principles/TolerantReader.md
Normal file
5
principles/TolerantReader.md
Normal file
|
@ -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 a new issue