A kódnevek válsága – miért fáj ez minden fejlesztőnek?
Amikor a séma nem bírja a terhelést
Lássuk be: a legtöbb fejlesztő találkozott már azzal a rémálommal, amikor az adatbázis séma nem alkalmas az új követelmények kezelésére. Nos, kiderül, hogy a paleoantropológusok pontosan ezzel a problémával küzdenek – és már több mint száz éve.
A Monash Egyetem nemrégi kutatása rávilágít egy problémára, ami bármely szoftverarchitektust megrémisztene: az emberi őseink elnevezésére és osztályozására használt rendszer egy olyan világhoz készült, ahol jóval kevesebb adatpont létezett. Ma új fosszilis leletek ömlenek be, és a régi taxonómiai fa roskadozik a súly alatt.
Az osztályozási probléma, amiről senki sem beszél
Íme a helyzet: amikor az emberi evolúcióról beszélünk, a legtöbben tiszta, lineáris fejlődést képzelünk el. A Homo habilisből lesz Homo erectus, aztán Homo sapiens. Egyszerű. Átlátható. Téves.
A valóság sokkal kaotikusabb – egy kiterjedt hálózat rokon fajokból, amelyek sok esetben időben és földrajzilag átfedik egymást, némelyik hibridizálódik, mások egyszerűen kihalnak. Ismerősen hangzik? Cseréld ki a "fajokat" "mikroszolgáltatásokra" és a "földrajzi elhelyezkedést" "felhő régiókra" – és máris egy elosztott rendszert írtál le.
A 20. század eleji paleontológusoktól örökölt elnevezési konvenciók azt feltételezik, hogy az evolúció tiszta elágazási mintákat követ. De minden új felfedezés – minden új adatpont – felfedi, hogy őseink folyamatosan ágaztak, konvergáltak, és néha visszafelé haladtak. Ez kevésbé bináris fa és sokkal inkább gráf adatbázis.
Mit tanulhatnak a fejlesztők az ősi taxonómiából
Itt válik igazán érdekessé a téma a közönségünk számára. Az evolúciós taxonómusok kihívásai párhuzamot mutatnak azokkal a kihívásokkal, amelyekkel a modern rendszerek építése során szembesülünk:
Verziózási rémálmok: Ahogyan a "Homo erectus" különböző dolgokat jelent attól függően, melyik szakértőt kérdezed meg, a REST API-d /v1/users végpontja is mást jelenthet különböző csapatoknak hat hónap múlva.
Séma-drift: Amikor új fosszíliák megkérdőjelezik a meglévő osztályozásokat, a kutatóknak utólag kell dönteniük, hogy bővítsék-e a definíciókat, hozzanak-e létre alkategóriákat, vagy bevallják, hogy az eredeti kategóriák alapvetően hibásak voltak. Ez nem hangzik ismerősen a legacy kódbázisodból?
Az "is-a" probléma: A Homo naledi közvetlen őse a modern embernek, egy oldalág, vagy valami egészen más? A válasz lehet "mindegyik egyszerre". Ez pontosan az a probléma, amellyel szembesülünk, amikor komplex kapcsolatokat próbálunk modellezni objektum-hierarchiákban.
Rendszerek építése, amelyek az ambiguitást is elfogadják
A Monash kutatás azt sugallja, hogy az evolúciós kutatóknak új keretrendszerekre van szükségük – olyanokra, amelyek elismerik a bizonytalanságot ahelyett, hogy az adatokat merev kategóriákba kényszerítenék. Ez meglepően hasonlít ahhoz, amit a szoftverarchitektúrában a rugalmas, adaptív rendszerek építéséről megtanultunk.
Gondolj csak bele: mi lenne, ha szigorú taxonómiai fák helyett konfidencia-intervallumokat és valószínűségi eloszlásokat használnánk? Mi lenne, ha a "Homo erectus" nem bináris osztályozás lenne, hanem egy fuzzy halmaz változó mértékű tagsággal?
Ez gyakorlatilag az, amit a technológiai világ felfedezett, amikor a merev Waterfall módszertanokról átállt az Agile-re, a monolitokról a mikroszolgáltatásokra, a szinkron architektúrákról az eseményvezéreltekre. Nem próbáljuk többé a valóságot a kategóriáinkba erőltetni – olyan rendszereket építünk, amelyek képesek befogadni a valóság kaotikusságát.
A konklúzió
Íme a kellemetlen igazság, amellyel tanto az evolúciós biológia, mint a szoftverfejlesztés küzd: a kategóriáink emberi konstrukciók, és mindig ideiglenesek. A fosszilis rekord nem törődik az elnevezési konvencióinkkal, és a felhasználók nem törődnek az adatbázis sémánkkal.
A kutatók, akik a frissített osztályozási rendszereket követelik, nem csak szőrszálhasogatók – felismerik, hogy a keretrendszereink alakítják, amit látunk és milyen kérdéseket tehetünk fel. A jobb taxonómia nem csak a pontosságról szól; arról is, hogy új felfedezéseket tegyen lehetővé.
A fejlesztők számára a tanulság hasonló. Minden alkalommal, amikor rögzítünk egy adatmodellt, azzal fogadunk, hogy a jelenlegi megértésünk tartós lesz. Néha beválik. Néha viszont Homo erectus problémával találjuk szemben magunkat.
Talán a legjobb rendszerek – legyenek akár evolúciós taxonómiák, akár szoftverarchitektúrák – azok, amelyeket aGraceful evolúcióra terveztek. Mert mindkét területen az egyetlen állandó a változás.
A fosszíliák csak jönnek. A kód csak megy. És a taxonómiák folyamatosan frissítésre szorulnak.
Milyen keretrendszer-kihívásokkal küzdesz a jelenlegi projektjeidben? Néha a legérdekesebb megoldások más tudományágak hasonló problémáinak vizsgálatából születnek.