| P1 |
Abstraction |
Hide irrelevant complexity; expose only
what callers need |
| P2 |
Modularity |
Units that can be developed, tested, and
deployed independently |
| P3 |
Composability |
Small pieces that combine without
surprising interactions |
| P4 |
Separation of Concerns |
Each component has one clear
responsibility |
| P5 |
Idempotency |
The same operation applied twice has the
same effect as once |
| P6 |
Reproducibility |
The same inputs produce the same outputs,
every time |
| P7 |
Immutability |
Once created, data does not change; only
new versions are created |
| P8 |
Locality |
Data and compute live close together;
avoid unnecessary network hops |
| P9 |
Fault Tolerance |
The system continues operating correctly
when components fail |
| P10 |
Observability |
You can tell what the system is doing from
the outside |
| P11 |
Consistency |
The system behaves the same way under the
same conditions |
| P12 |
Security Boundaries |
Trust is not assumed; it is verified at
every crossing |
| P13 |
Fail Fast |
Detect errors early and stop rather than
propagating incorrect state |
| P14 |
Least Privilege |
Every component has only the access it
needs to do its job |
| P15 |
Measure & Adapt |
Systems are improved empirically, not by
assumption |