Software esperimentu gisa vs Software azpiegitura gisa
Konparazio honek software ingeniaritzaren bi filosofia kontrajarriak aztertzen ditu: kode esperimentalaren ikuspegi azkarra eta iteratiboa azpiegitura softwarearen izaera egonkorra eta misio-kritikoa. Batak abiadura eta aurkikuntza ardatz dituen bitartean, besteak funtsezko zerbitzu digitalen eta sistema globalen fidagarritasuna eta epe luzerako mantentze-lanak lehenesten ditu.
Nabarmendunak
Kode esperimentala kontzeptu bat existitzen dela frogatzean zentratzen da, azpiegitura kodeak bizirik irauteko gai dela frogatzen duen bitartean.
Azpiegiturak "leherketa-erradioa" plangintza zorrotza eskatzen du kaskadaren sistemaren hutsegiteak saihesteko.
Aldaketaren kostua nahita baxua da esperimentuetan eta nahita altua azpiegituretan.
Esperimentu baten arrakasta ikuspegi berri bat da; Azpiegituren arrakasta operazio isil eta aspergarria da.
Zer da Softwarea esperimentu gisa?
Kodea azkar ikasteko, prototipatzeko eta hipotesiak probatzeko diseinatutako kodea.
Entrega abiadura lehenesten du epe luzeko perfekzio arkitektonikoaren gainetik.
Normalean startup inguruneetan erabiltzen da produktuaren merkatuan egokitzeko.
"Huts azkar" mentalitatea hartzen du garapenerako baliabideak alferrik galtzeko.
Askotan zor teknikoan oinarritzen da merkatuan sartzeko kalkulatutako kompromiso gisa.
Normalean bizi-ziklo laburragoa du, askotan ikasgaia ikasi ondoren baztertzen dena.
Zer da Softwarea azpiegitura gisa?
Erabilgarritasun handia, segurtasuna eta epe luzerako errendimendu koherentea lortzeko eraikitako oinarrizko kodea.
Eskala masiboa eta aldi berean erabiltzaileen karga masiboak jasateko diseinatua.
Atzeranzko bateragarritasunean zentratzen da, downstream mendekotasunak haustea saihesteko.
Dokumentazio zabala eta proba protokolo automatizatu zorrotzak eskatzen ditu.
Hamarkadetako bizi-zikloarekin diseinatua, hilabeteak edo urteak baino.
Funtsezko zerbitzuak oinarritzen ditu, hala nola bankuak, energia sareak eta hodeiko plataformak.
Konparazio Taula
Ezaugarria
Softwarea esperimentu gisa
Softwarea azpiegitura gisa
Helburu nagusia
Ikaskuntza eta aurkikuntza
Egonkortasuna eta fidagarritasuna
Porrotarekiko tolerantzia
Hazkundea (hazkundea bultzatzea)
Baxua (zero geldialdi-denbora espero zen)
Garapen-abiadura
Iterazio azkarrak
Metodikoa eta nahita
Zor teknikoa
Onartua eta espero
Aktiboki minimizatu eta kudeatu
Dokumentazioa
Gutxieneko edo just-in-time
Integrala eta zehatza
Azterketa zorroztasuna
Funtsezko funtzionalitatean arreta jarri
Ertz kasuak eta estres-probak
Kostuen fokua
Hasierako inbertsio baxua
Jabetzako kostu osoa
Eskalagarritasuna
Askotan pentsamendu bat
Lehenengo egunetik integratua
Xehetasunak alderatzea
Arriskuen kudeaketa eta fidagarritasuna
Software esperimentalak akatsak ikasteko aukera gisa tratatzen ditu, askotan kraskadura batek jende gutxiri eragiten dion inguruneetan funtzionatzen duelarik. Azpiegituren softwareak, ordea, geldialdia gertaera katastrofiko gisa tratatzen du, defentsa-programazioa eta sistema erredundanteak eskatzen dituena. Desberdintasuna da kodeak gauzak apurtzeko baimena ematen duen edo mundua mugitzen jarraitzeko.
Iraupena eta mantentze-lanak
Esperimentu bat erantzun baterako behin-behineko zubi bat da, askotan berridatzi edo ezabatu egiten dena helburua bete ondoren. Azpiegitura kodea finkapen iraunkor gisa eraikitzen da, bost eta hamar urteko zerbitzua izan dezaketen eguneratzeen plangintza zaindua eskatzen duena. Azpiegituretako garatzaileek pentsatu behar dute nola itxura izango duen beren kodea mantentzaile bati 2035ean, esperimentalistek hurrengo astean zentratzen diren bitartean.
Ingeniaritza kulturan eragina
Software esperimentala eraikitzen duten taldeek sormena, ardatz astunen lan-fluxuak eta energia handiko sprintak loratzen dituzte. Azpiegitura taldeek diziplina, arkitektura berrikuspen sakonak eta inoiz huts egiten ez duen zerbait eraikitzearen harrotasuna baloratzen dituzte. Pentsamolde desberdin horiek askotan kontratazio profil desberdinak eragiten dituzte, "hackerrek" lehenengoa nahiago dute eta "sistemen ingeniariak" bigarrenaren alde egiten dute.
Eragile ekonomikoak
Software esperimentala merkatu bat harrapatzeko edo nitxo bat azkar baliozkotzeko beharraren arabera finantzatzen da. Azpiegitura fundazioan inbertsio bat da, non akats baten kostuak erantzukizun finantzario edo juridiko masiboak sor ditzakeen. Bata hazkundearen joko oldarkorra da, eta bestea, berriz, lehendik dagoen balioaren eta jarraitutasun operatiboaren babes-neurria da.
Abantailak eta Erabiltzailearen interfazea
Softwarea esperimentu gisa
Abantailak
+Feedback oso azkarra
+Hasierako kostu baxuak
+Berrikuntza sustatzea
+Malgutasun handia
Erabiltzailearen interfazea
−Kode-base hauskorra
−Zor teknikoa pilatzea
−Eskalagarritasun eskasa
−Erabiltzaileentzat fidagarria ez da
Softwarea azpiegitura gisa
Abantailak
+Aparteko fidagarritasuna
+Segurtasun estandar altuak
+Garbitu dokumentazioa
+Eskala masiboko ahalmena
Erabiltzailearen interfazea
−Garapen ziklo motela
−Ingeniaritza kostu handiak
−Aldaketekiko erresistentea
−Mantentze konplexua
Ohiko uste okerrak
Mitologia
Software esperimentala garatzaile alferrek idatzitako kode "txarra" besterik ez da.
Errealitatea
Kode esperimentala nahita ikaskuntzari lehentasuna emateko aukera estrategikoa da. "Helbururako egokia" da helburua baliozkotzea bada, nahiz eta arazotsua bihurtzen den azkenean birfaktorizatzen edo ordezkatzen ez bada.
Mitologia
Azpiegitura softwarea ez da inoiz aldatzen edo eboluzionatzen.
Errealitatea
Azpiegiturak eboluzionatu behar du, baina zuhurtzia handiz egiten du. Aldaketak inplementazio urdin-berdeak edo kanariar bertsioak erabiliz inplementatzen dira, trantsizioan oinarria sendoa izaten jarraitzen duela ziurtatzeko.
Mitologia
Esperimentu bat azpiegitura bihur dezakezu geroago.
Errealitatea
Hau tranpa arrunta da, "espageti" sistemak eramaten dituena. Benetako azpiegiturak arkitektura erabateko birpentsamendu bat eskatzen du, esperimentu baten oinarrizko hipotesiak oso gutxitan eskalagarriak direlako.
Mitologia
Startupek bakarrik egiten dute software esperimentala.
Errealitatea
Enpresa teknologiko erraldoiek ere adar esperimentalak edo "laborategiak" erabiltzen dituzte ezaugarriak probatzeko. Gakoa esperimentu horiek isolatzea da, erabiltzaileen mende dauden azpiegitura nagusia mehatxatzen ez dezaten.
Sarritan Egindako Galderak
Noiz utzi behar dut nire aplikazioa esperimentu gisa tratatzeari?
Trantsizioa zure softwarea "atsegina" izatetik "kritikoa" izatera pasatzen den unean gertatu beharko litzateke zure erabiltzaileentzat. 15 minutuko etenaldi batek finantza-galera handia edo erabiltzaileen churn eragiten badu, azpiegituraren eremura mugitu zara eta zure probak eta hedapenak horren arabera egokitu behar dituzu.
Programazio-lengoaia desberdinak erabiltzen al ditu?
Edozein lengoaia bientzat erabil daitekeen arren, azpiegiturak askotan Go, Rust edo C ++ bezalako tipografia indartsuak dituzten lengoaia konpilatuetara jotzen du errendimendua eta segurtasuna lortzeko. Software esperimentalak askotan Python edo Ruby bezalako maila altuko lengoaia malguak erabiltzen ditu, prototipo azkarragoak eta sintaxi-aldaketa errazagoak ahalbidetzen dituztenak.
Zor teknikoa beti txarra al da software esperimentalean?
Ez da nahitaez. Esperimentu batean, zor teknikoa interes handiko mailegu bat bezalakoa da, etxe bat lehenago erosten laguntzen dizuna. Zor "txarra" bihurtzen da inoiz itzultzen ez baduzu edo behin-behineko oinarri horren gainean etxe orratz bat eraikitzen saiatzen bazara.
Nola bereizten dira proba estrategiak bien artean?
Esperimentuak 'Happy Path' probetan zentratzen dira, ezaugarri nagusiak batez besteko erabiltzailearentzat funtzionatzen duen egiaztatzea. Azpiegitura probak 'Edge Cases' eta 'Chaos Engineering' obsesionatuta daude, non garatzaileek nahita sistemaren zatiak apurtzen dituzten gainerakoak shocketik bizirik irauteko gai diren ikusteko.
Enpresa bakar batek aldi berean kudeatu ditzake bi planteamenduak?
Bai, eta arrakastatsuenek bai. Askotan "IT bimodala" estrategia erabiltzen dute, non talde batek oinarrizko sistema egonkorrak mantentzen dituen (Azpiegitura) eta beste talde arin batek muga berriak esploratzen dituen bitartean (Esperimentua). Erronka bi kultura horien arteko harremana kudeatzea da.
Zein da "esperimentu" fasean denbora gehiegi egoteko arrisku handiena?
Arriskurik handiena "hauskortasun sistemikoa" da. Esperimentu solte bati ezaugarri gehiago gehitzen dizkiozun heinean, konplexutasuna esponentzialki hazten da. Azkenean, sistema hain hauskorra bihurtzen da, ezen aldaketa txiki bat egiteak zerikusirik ez duten piezak apurtzen dituen, etorkizuneko berrikuntza guztiak geldiaraziz.
Zergatik da dokumentazioa hain garrantzitsuagoa azpiegituretarako?
Azpiegiturak jatorrizko sortzaileak gainditzen dituen baliabide partekatua da. Dokumentazio sakonik gabe, bost urte barru sistema mantentzen duten pertsonek ez dute ulertuko segurtasun edo errendimendu aukera zehatz batzuen atzean dagoen "zergatik", etorkizuneko eguneratzeetan akats arriskutsuak eraginez.
"Azpiegitura" hodeiko zerbitzariei eta datu-baseei soilik erreferentzia egiten die?
Ez, softwareak jokatzen duen paperari egiten dio erreferentzia. Milaka aplikaziok erabiltzen duten autentifikazio liburutegia "azpiegitura" da, nahiz eta kode zati bat besterik ez den. Jendeak horren gainean eraikitzen badu, azpiegiturak dira; Jendeak ideia batek funtzionatzen duen ikusteko erabiltzen badu, esperimentu bat da.
Epaia
Aukeratu ikuspegi esperimentala merkatu ezezagunak esploratzen ari zarenean edo ezaugarri berriak probatzen ari zarenean, porrotaren kostua baxua denean. Zure produktua etenik gabe funtzionatzeko mendekotasun kritikoa bihurtzen denean.