Tarkvara kui eksperiment vs tarkvara kui infrastruktuur
See võrdlus uurib kahte vastandlikku tarkvaraarenduse filosoofiat: eksperimentaalse koodi kiiret ja iteratiivset lähenemist versus infrastruktuuritarkvara stabiilset ja missioonikriitilist olemust. Kui üks keskendub kiirusele ja avastamisele, siis teine eelistab töökindlust ja pikaajalist hooldust olulistes digiteenustes ja globaalsetes süsteemides.
Esiletused
Eksperimentaalne kood keskendub kontseptsiooni olemasolu tõestamisele, samas kui infrastruktuurikood tõestab, et see suudab ellu jääda.
Taristu nõuab ranget 'plahvatusraadiuse' planeerimist, et vältida süsteemi kaskaadseid rikkeid.
Muudatuste kulud on katsetes teadlikult madalad ja infrastruktuurilt teadlikult kõrged.
Eksperimendi edu on uus taipamine; Infrastruktuuri edu on vaikne ja igav tegevus.
Mis on Tarkvara kui eksperiment?
Kood, mis on loodud kiireks õppimiseks, prototüüpimiseks ja hüpoteeside testimiseks kiiresti muutuvates keskkondades.
Eelistab tarnekiirust pikaajalisele arhitektuurilisele täiuslikkusele.
Sageli kasutatakse idufirmade keskkondades toote-turu sobivuse leidmiseks.
Omaks võtab "ebaõnnestu kiiresti" mentaliteeti, et vähendada raisatud arendusressursse.
Sageli tugineb see tehnilisele võlale kui arvutatud kompromissile turule sisenemisel.
Tavaliselt on sellel lühem elutsükkel, mis sageli visatakse ära, kui õppetund on selge.
Mis on Tarkvara kui infrastruktuur?
Põhikood, mis on loodud kõrge kättesaadavuse, turvalisuse ja järjepideva pikaajalise jõudluse tagamiseks.
Projekteeritud taluma tohutuid mastaabele ja samaaegseid kasutajakoormusi.
Keskendub tagurpidi ühilduvusele, et vältida allavoolu sõltuvuste murdmist.
Nõuab põhjalikku dokumentatsiooni ja rangeid automaatseid testimisprotokolle.
Disainitud elutsükliga, mis kestab aastakümneid, mitte kuid või aastaid.
See toetab olulisi teenuseid nagu pangandus, energiavõrgud ja pilveplatvormid.
Võrdlustabel
Funktsioon
Tarkvara kui eksperiment
Tarkvara kui infrastruktuur
Peamine eesmärk
Õppimine ja avastamine
Stabiilsus ja töökindlus
Läbikukkumise taluvus
Kõrge (soodustatud kasvuks)
Madal (oodata nullseisakuid)
Arenduskiirus
Kiired iteratsioonid
Metoodiline ja kaalutletud
Tehniline võlg
Aktsepteeritud ja oodatud
Aktiivselt minimeeritakse ja juhitakse
Dokumentatsioon
Minimaalne või just-in-time
Põhjalik ja põhjalik
Testimise rangus
Fookus põhifunktsionaalsusele
Äärejuhtumid ja stressitestimine
Kulufookus
Madal alginvesteering
Fookus omamise kogukuludele
Skaleeritavus
Sageli tagaplaanil
Sisseehitatud alates esimesest päevast
Üksikasjalik võrdlus
Riskijuhtimine ja usaldusväärsus
Eksperimentaalne tarkvara käsitleb vigu õppimisvõimalustena, sageli töötades keskkondades, kus krahhi mõjutab väheseid inimesi. Infrastruktuuritarkvara käsitleb seisakuid aga katastroofilise sündmusena, mis nõuab kaitseprogrammeerimist ja redundantseid süsteeme. Erinevus seisneb selles, kas kood võib asju murda, et kiiresti liikuda, või peab jääma katkematuks, et maailm liikuks.
Kestvus ja hooldus
Eksperiment on sageli ajutine sild vastuseni, mida sageli ümber kirjutatakse või tühistatakse, kui eesmärk on täidetud. Infrastruktuurikood on ehitatud püsivaks osaks, mis nõuab hoolikat planeerimist uuendusteks, mis võivad kesta viis kuni kümme aastat. Infrastruktuuri arendajad peavad mõtlema, kuidas nende kood 2035. aastal hooldajale välja näeb, samal ajal kui katsetajad keskenduvad järgmisele nädalale.
Mõju insenerikultuurile
Eksperimentaalset tarkvara ehitavad meeskonnad õitsevad loovuse, pöördekesksete töövoogude ja kõrge energiaga sprintide najal. Infrastruktuurimeeskonnad hindavad distsipliini, põhjalikke arhitektuurilisi ülevaateid ja uhkust luua midagi, mis kunagi ei vea läbi. Need erinevad mõtteviisid viivad sageli erinevate värbamisprofiilideni, kus "häkkerid" eelistavad esimest ja "süsteemiinsenerid" kalduvad teise poole.
Majanduslikud tegurid
Eksperimentaalset tarkvara rahastab tavaliselt vajadus kiiresti haarata turg või valideerida nišš. Taristu on investeering sihtasutusse, kus vea kulud võivad põhjustada suuri finants- või juriidilisi kohustusi. Üks neist on agressiivne tegevus kasvuks, teine aga kaitsemeede olemasoleva väärtuse ja tegevuse järjepidevuse vastu.
Plussid ja miinused
Tarkvara kui eksperiment
Eelised
+Väga kiire tagasiside
+Madalad esialgsed kulud
+Soodustab innovatsiooni
+Kõrge paindlikkus
Kinnitatud
−Habras koodibaas
−Kogub tehnilist võlga
−Halb skaleeritavus
−Kasutajatele ebausaldusväärne
Tarkvara kui infrastruktuur
Eelised
+Erakordne töökindlus
+Kõrged turvastandardid
+Selge dokumentatsioon
+Massiivne mahutavus
Kinnitatud
−Aeglased arendustsüklid
−Kõrged insenerikulud
−Muutustele vastupidav
−Kompleksne hooldus
Tavalised eksiarvamused
Müüt
Eksperimentaalne tarkvara on lihtsalt 'halb' kood, mille kirjutavad laisad arendajad.
Tõelisus
Tahtlik eksperimentaalne kood on strateegiline valik õppimise prioriseerimiseks. See on 'eesmärgiks sobiv', kui eesmärk on valideerimine, kuigi see muutub probleemseks, kui seda lõpuks ei refaktoreerita ega asendata.
Müüt
Taristutarkvara ei muutu ega arene kunagi.
Tõelisus
Taristu peab arenema, kuid seda tehakse äärmise ettevaatusega. Muudatused viiakse ellu sinakasroheliste paigalduste või kanarilindude väljalaske abil, et tagada vundament ülemineku ajal tugev.
Müüt
Hiljem saab eksperimendi infrastruktuuriks muuta.
Tõelisus
See on tavaline lõks, mis viib 'spagetide' süsteemideni. Tõeline infrastruktuur nõuab tavaliselt täielikku arhitektuurilist ümbermõtestamist, sest eksperimendi aluseeldused on harva skaleeritavad.
Müüt
Ainult idufirmad teevad eksperimentaalset tarkvara.
Tõelisus
Isegi hiiglaslikud tehnoloogiafirmad kasutavad katseharusid ehk 'laboreid' funktsioonide testimiseks. Oluline on need katsed isoleerida, et need ei ohustaks kasutajate põhiinfrastruktuuri.
Sageli küsitud küsimused
Millal peaksin lõpetama oma rakenduse käsitlemise katsena?
Üleminek peaks toimuma kohe, kui su tarkvara liigub kasutajate jaoks 'hea omada' olekust 'kriitiliseks'. Kui 15-minutiline katkestus põhjustab märkimisväärset rahalist kahju või kasutajate voolavust, oled liikunud infrastruktuuri valdkonda ja pead vastavalt kohandama oma testimise ja juurutamise nõudeid.
Kas infrastruktuuritarkvara kasutab erinevaid programmeerimiskeeli?
Kuigi mõlema jaoks saab kasutada iga keelt, kaldub infrastruktuur sageli tugeva tüübiga kompileeritud keelte poole, nagu Go, Rust või C++ jõudluse ja ohutuse tagamiseks. Eksperimentaalne tarkvara kasutab sageli paindlikke, kõrgetasemelisi keeli nagu Python või Ruby, mis võimaldavad kiiremat prototüüpimist ja lihtsamaid süntaksi muutusi.
Kas tehniline võlg on eksperimentaalses tarkvaras alati halb?
Mitte tingimata. Eksperimendis on tehniline võlg nagu kõrge intressiga laen, mis aitab sul maja varem osta. See muutub 'halvaks' võlaks ainult siis, kui sa seda kunagi tagasi ei maksa või kui üritad ehitada pilvelõhkujat (infrastruktuuri) selle ajutise vundamendi peale.
Kuidas erinevad testimisstrateegiad nende kahe vahel?
Katsed keskenduvad 'Õnneliku Tee' testimisele — kontrollimisele, kas peamine funktsioon töötab keskmisele kasutajale. Infrastruktuuri testimine on kinnisideeks "Edge Cases" ja "Chaos Engineering", kus arendajad murdavad teadlikult süsteemi osi, et näha, kas ülejäänud suudavad šokist üle elada.
Kas üks ettevõte suudab mõlemat lähenemist samaaegselt käsitleda?
Jah, ja kõige edukamad teevad seda. Sageli kasutatakse "bimodaalset IT" strateegiat, kus üks meeskond hoiab stabiilseid põhisüsteeme (infrastruktuur), samal ajal kui teine agiilne meeskond uurib uusi piire (eksperiment). Väljakutse on juhtida nende kahe kultuuri vahelist üleandmist.
Mis on suurim risk jääda liiga kauaks 'eksperimendi' faasi?
Suurim risk on 'süsteemne haprus.' Kui lisad lõdvalt ehitatud eksperimendile uusi funktsioone, kasvab keerukus eksponentsiaalselt. Lõpuks muutub süsteem nii rabedaks, et ühe väikese muudatuse tegemine põhjustab mitteseotud osade purunemise, peatades tõhusalt kogu tulevase innovatsiooni.
Miks on dokumentatsioon infrastruktuuri jaoks palju olulisem?
Taristu on ühine ressurss, mis elab kauem kui oma algsed loojad. Ilma põhjaliku dokumentatsioonita ei mõista süsteemi hooldajad viie aasta pärast konkreetsete turva- või jõudlusvalikute 'miks', mis viib tulevaste uuenduste ajal ohtlike vigadeni.
Kas 'infrastruktuur' viitab ainult pilveserveritele ja andmebaasidele?
Ei, see viitab tarkvara rollile. Tuhandete rakenduste poolt kasutatav tuumautentimise raamatukogu on 'infrastruktuur', kuigi see on vaid kooditükk. Kui inimesed ehitavad selle peale, on see infrastruktuur; Kui inimesed kasutavad seda lihtsalt selleks, et näha, kas idee töötab, on see eksperiment.
Otsus
Vali eksperimentaalne lähenemine, kui uurid tundmatuid turge või testid uusi funktsioone, kus rikke hind on madal. Pöördu infrastruktuuri mõtteviisi poole, kui sinu toode muutub kriitiliseks sõltuvuseks kasutajatele, kes sõltuvad sinu teenusest katkestusteta toimimiseks.