Pređi na sadržaj

Dosadna tehnologija je luksuzna roba

Strahinja Polovina · Inženjering6 min čitanja

Postoji pouzdan način da se vidi da li je softver pravljen da impresionira one koji ga grade ili da služi onima koji ga poseduju: prebrojte tehnologije u njemu. Sistem sa četiri baze podataka, dva sistema za redove poruka i frameworkom objavljenim prošlog proleća nije projektovan nego sakupljan, a kolekcionar retko ostane da plaća račun za održavanje.

Koliko zaista košta uzbudljiva tehnologija

Nova tehnologija vam naplaćuje tri puta. Prvi put kroz ono što ne znate da ne znate: kvarove o kojima još niko nije napisao ni red na blogu, a otkrivate ih u dva ujutru na sopstvenoj produkciji. Drugi put kroz zapošljavanje, jer svaki egzotičan izbor smanjuje broj ljudi koji taj sistem umeju da održavaju, a onima koji umeju podiže cenu. Treći put kroz dugovečnost: za ovogodišnji uzbudljivi framework šanse da za pet godina bude napušten stoje pedeset-pedeset, dok su provereni alati svoj talas izumiranja odavno preživeli.

Ta tri troška se međusobno pojačavaju. Egzotična baza otkaže na nedokumentovan način, što bi se još nekako preživelo, ali je jedini inženjer koji ju je razumeo otišao u proleće, potraga za zamenom je već u četvrtom mesecu, a kandidata sa baš tom veštinom praktično nema. U međuvremenu framework od kojeg ta baza zavisi najavljuje „uzbudljiv novi pravac“, što na jeziku dobavljača znači da sve što ste na starom izgradili pišete ponovo. To nikada nisu bila tri odvojena rizika, nego jedan isti rizik, plaćen tri puta.

Svi ti troškovi stižu tek pošto agencija ode, i upravo zato agencije strukturno privlači uzbudljiva tehnologija: korist za biografiju ostaje njima, a račun za održavanje vama. Poravnati te interese je koliko inženjerski problem, toliko i pitanje kako je ugovor napisan, pa delom i zato dajemo garanciju na ono što isporučimo i nudimo da sistem održavamo.

Kako nastaje kolekcija

Niko ne krene da gradi sistem koji se posle ne može održavati, nego se takav sistem nataloži iz odluka koje su pojedinačno sasvim branjive. Inženjer želi jednu tehnologiju u biografiji, a projekat je jedino mesto na kome može do nje da dođe. Predavanje sa konferencije učini da arhitektura pravljena za kompaniju sa hiljadu inženjera izgleda kao dobra praksa za tim od šestoro. Dijagram sa mikroservisima deluje ozbiljnije nego pošten monolit. Svaki od tih izbora dodaje po jedan pokretni deo, a pokretni delovi se ne sabiraju nego množe: dve baze ne koštaju dvostruko više od jedne, nego koštaju drugu bazu plus sinhronizaciju između njih, i to zauvek.

Odbrana je jedno dosadno pravilo koje se primenjuje kad se odluka pregleda: svaka tehnologija van podrazumevanog stacka mora da kupi svoje mesto merljivim zahtevom koji podrazumevani izbor ne može da ispuni. „Skalabilnije je“ ne vredi ništa bez brojke, a „možda nam zatreba kasnije“ je razlog da se doda kasnije. Teret dokazivanja uvek nosi novo, nikad dosadno, jer samo jedan od ta dva izbora ima učinak na koji može da pokaže.

Inovacija se troši iz budžeta, i taj budžet je konačan. Trošite ga na proizvod, gde ga kupci vide, a ne na infrastrukturu, gde ga vide samo inženjeri.

Dosadno ≠ staro

Dosadno ne znači nasleđeno. PostgreSQL, TypeScript, React i mainstream cloud servisi su moderne, aktivno razvijane i izuzetno moćne tehnologije. Dosadnim ih čini to što su im oštre ivice dokumentovane, kvarovi opisani, a milion timova je već udarilo u probleme u koje vi tek treba da udarite. Dosadno zapravo znači predvidivo, a predvidivost je ono što kupujete kada plaćate seniorsku cenu.

Tu se krije i signal o zapošljavanju koji vlasnici redovno pročitaju naopako. Juniori jure zanimljive tehnologije, a seniori jure zanimljive probleme i namerno biraju uspavane alate, jer su račun za uzbuđenje već jednom platili u dva ujutru. Tim koji vam nudi dosadnu arhitekturu nije neambiciozan, nego vam pokazuje svoje ožiljke: ambicija pripada onome što sistem radi, a ne onome od čega je sastavljen.

To pravilo ima i svoju drugu stranu. Kada budžet za novotarije zaista trošimo, a kod AI sistema ga trošimo jer se granica tu stvarno pomera svakog kvartala, uzbudljivi deo izolujemo iza dosadnih interfejsa, držimo ga zamenljivim i obavijamo evaluacijom. Šteta koju novina može da napravi treba da stane u jedan modul, nikada u celu arhitekturu.

U praksi to znači da provajder modela stoji iza interfejsa za koji ostatak sistema i ne zna, pa je zamena promena konfiguracije, a ne migracija. Znači i evaluacioni set napravljen od vaših stvarnih slučajeva, na kome svaki model-kandidat dobija ocenu, pa se o zameni odlučuje merenjem, umesto po modi. Uzbudljivi deo ostaje uzbudljiv, samo mu ne dozvoljavamo da i ostatak sistema učini zanimljivim.

Podrazumevani stack i kako ga menjati

Praktičan alat iza svega ovoga je zapisan podrazumevani stack: kratak spisak tehnologija koje novi sistem koristi sve dok neko ne dokaže da mu treba nešto drugo. Na spisku stoje jedna primarna baza podataka, jedan backend jezik koji čita ceo tim, jedan frontend framework i managed cloud servisi umesto bilo čega self-hosted, jer dosadan izbor u održavanju znači da cloud provajderu platite da noćna dežurstva budu njegov posao. Ceo spisak staje na jedan papirić, i to je poenta: svaki novi red na njemu treba da deluje skupo, zato što i jeste.

Podrazumevani izbor sme da se menja, ali javno i kroz proceduru. Traži se kratko pisano obrazloženje: koji zahtev trenutni izbor ne može da ispuni, koja brojka to dokazuje, kako izgleda put migracije i kako izgleda izlaz ako ne uspe. Zatim ide proba na nečemu što nije kritično, pre nego što bilo šta okrenuto ka korisnicima počne od toga da zavisi. Timovi koji taj ritual sprovode usvoje možda jednu novu tehnologiju godišnje, ali namerno, i ona se zadrži; timovi koji ga preskaču usvoje pet slučajno, zadrže dve, a preostale tri ionako ostanu u produkciji, napola migrirane, i doveka naplaćuju kiriju.

Pitanja za sledećeg dobavljača

Ko će ovo održavati u trećoj godini i koliko će taj čovek koštati? Koliko ljudi na tržištu rada zaista radi u ovom stacku i šta se dešava sa našim rokovima kada jedan od ovih frameworka bude napušten? Zašto baš ova druga baza podataka, izraženo u brojkama? Kako izgleda runbook za dežurstvo i da li bi po njemu umeo da postupi inženjer koji sistem nije gradio? Ako odgovori budu uopšteni, dobili ste rizik lepo upakovan u demo, a ne arhitekturu.

Dosadna tehnologija je način na koji softver ostaje imovina umesto da postane naučni projekat sa ekranom za prijavu. Drugim rečima, to je luksuz koji vaše poslovanje može da priušti upravo zato što ne izgleda kao luksuz: ono što se ovde plaća nisu alati, nego uzdržanost.

Hoćete arhitekturu koju neko drugi može da nasledi?

Pitajte koji bismo stack izabrali za vaš sistem i zašto će vam biti dosadan.