A technikai adósság mint entrópia-forrás
Minden kézi beavatkozás, minden dokumentálatlan „gyors javítás” és minden verziózatlan konfiguráció növeli a rendszer entrópiáját. A konfigurációs drift (configuration drift) az az állapot, amikor az éles környezet észrevétlenül eltér a szándékolt, verziókövetett állapottól.
A drift önmagában is elég ahhoz, hogy két, elvileg azonos szerver másképp viselkedjen. A hibakeresés ilyenkor nem mérnöki feladat, hanem régészet: ki, mikor és miért nyúlt a rendszerhez.
A káosz mérhető
A megérzés helyett metrikák. A rendszer állapotát négy alapmutatóval (DORA) tesszük számszerűvé:
- Deployment frequency — milyen gyakran szállítunk éles változást
- Lead time for changes — mennyi idő a committól az élesig
- Change failure rate — a változtatások hány százaléka okoz hibát
- Mean time to recovery (MTTR) — mennyi idő alatt állunk helyre
A rend első lépése: minden legyen kód
A drift ellenszere az idempotens, deklaratív infrastruktúra. Ha a kívánt állapotot kód írja le, a valós állapot mindig visszatéríthető hozzá — kézi beavatkozás nélkül, ismételhetően.
# a szándékolt állapot verziózva, nem a fejekben- name: nginx a kívánt verzióban, mindig futansible.builtin.package: { name: nginx, state: present }notify: reload nginx