A szoftver nem beszél vissza

« All posts

(A szoftver nem beszél vissza)

Volt szerencsém látni, amikor egy vezető ünnepélyesen kijelentette, hogy "a csapatok legyenek autonómak". Jól hangzott. Autonómia, szabadság, gyorsabb haladás! Aztán telt az idő, és kiderült, hogy az autonómia ebben az értelmezésben azt jelentette, hogy senki nem beszélget többé senkivel. Nem volt koordináció, nem voltak közös szabályok, nem voltak kikényszerített döntések. Mindenki csinálta a magáét, a rendszer pedig pontosan úgy kezdett viselkedni, ahogy az várható volt: széthullott.

Mi látszik a napnál is világosabban? Az, hogy rendbe kell tenni a működést, tisztázni kell a felelősségeket és a határokat. Ehelyett a vezetés ezzel jött: "vezessünk be Kubernetes-t, az majd megoldja". És itt csúszik el a gondolkodás: nem azért, mert ezek az eszközök eleve rosszak lennének, hanem mert rossz problémára lettek alkalmazva.

A Kubernetes, a service mesh vagy a policy engine-ek nem szervezeti kudarcok elfedésére születtek. Valós, nagy léptékű, megbízhatósági és skálázási problémákra adtak választ olyan környezetekben, ahol a koordináció költsége objektíven meghaladta az emberi kezelhetőséget (tipikusan nem azokban a közegekben, ahol alkalmazzák). A probléma nem az eszköz maga, hanem az, amikor szervezeti döntések helyett kezdik el őket használni. Amikor nem azt mondjuk, hogy "nem így dolgozunk", hanem azt, hogy "majd a rendszer megakadályozza". És ezzel kényelmesen meg is szabadulunk a konfliktusoktól.

A microservice architektúra is ebbe a mintába illeszkedik. Nem önmagában hibás megközelítés, és léteznek jól működő, valóban lazán csatolt rendszerek. De ezek nem maguktól születnek, hanem tudatos domain-felbontás, világos felelősségek, a Conway-törvény figyelembevétele és folyamatos emberi döntések kellenek hozzájuk. Amikor ezek hiányoznak, a microservice nem megoldja, hanem elfedi a problémát: a monolit helyett harminc szolgáltatásunk lesz, amelyek ugyanúgy össze vannak nőve, csak most HTTP-n keresztül, retry-okkal és timeout-okkal körbetekerve és az egész nagyságrendekkel lassabb. Komplexitás mindig is lesz, de most elegánsan elköltöztettük és megint a felhasználó fizeti meg.

A minta itt válik igazán veszélyessé. Amikor a vezetés nem tud vagy nem mer döntéseket hozni - legyen ez politikai nyomás, rossz ösztönzők, legacy kényszerek vagy egyszerű időhiány következménye, tökmindegy -, a felelősség nem tűnik el. Áthelyeződik! Nyilván a szoftverbe. Admission controllerek, policy engine-ek, guardrail-ek jelennek meg, hogy nemet mondjanak az emberek helyett. Nem azért, mert ez technológiailag elegáns, hanem mert szervezetileg kényelmes.

Ebben a rendszerben a mérnökök sem puszta áldozatok. Ők is részesei a dinamikának. Sokszor ők kérik az új eszközöket, ők hajtják a technológiai divatokat, mert izgalmasabb problémákat, "szebb" megoldásokat keresnek. Ez érthető, de attől még igaz marad: amikor egy eszköz bevezetése mögött nincs világos döntés arról, mit és miért akarunk szabályozni, akkor az eszköz nem a munkát könnyíti meg, hanem a felelősséget keni el.

És igen, a szoftver képes visszajelezni. Metrikákkal, SLO-kkal, error budgetekkel. De ezek nem döntések, csak tünetek. A szoftver nem fogja kimondani, hogy az elvárások ellentmondásosak. Nem fogja megkérdezni, hogy ez a határidő értelmes-e. Nem fog politikai vitát vállalni két csapat között. Csak jelez - és ha nincs, aki értelmezze és vállalja a következményeket - pusztába kiáltott alert.

Amikor minden összeomlik, a szerepek szinte kiszámíthatóak. A menedzser szerint "a rendszer így viselkedett", az üzemeltetők mantrája a "ez by design". A fejlesztő meg azzal jön, hogy "a rendszer nem determinisztikus". A felhasználó pedig csak annyit lát, hogy nem működik. A döntésnek nincs gazdája, mert elveszett a technikai homályban. Amit régen vezetői döntésnek, szervezeti fegyelemnek vagy egyszerűen gerincnek hívtunk, ma YAML-ba, policy-be és workflow-ba van csomagolva.

Szóval amikor valaki azt mondja: "csak vezessük be ezt az eszközt, és minden jobb lesz", nem kizárt, hogy az eszköz valóban erős. De az is lehet, hogy pont arra szolgál, hogy ne kelljen kimondani egy kellemetlen igazságot: a koordináció emberi feladat, a felelősség emberi teher, és a döntéseket embereknek kell meghozniuk. A szoftver ebben segíthet - de nem helyettesíthet. Nem fog vitatkozni. Nem fog nemet mondani. Csak végrehajtja, amit mondanak neki. És pontosan ezért olyan veszélyesen kényelmes.

A szoftver kiváló eszköz. De borzalmas alibi.