Software bilang Eksperimento kumpara sa Software bilang Imprastraktura
Ang paghahambing na ito ay nagsasaliksik ng dalawang magkasalungat na pilosopiya sa software engineering: ang mabilis, paulit-ulit na diskarte ng eksperimentong code kumpara sa matatag, kritikal na misyon ng software ng imprastraktura. Habang ang isa ay nakatuon sa bilis at pagtuklas, ang isa ay inuuna ang pagiging maaasahan at pangmatagalang pagpapanatili para sa mahahalagang digital na serbisyo at pandaigdigang sistema.
Mga Naka-highlight
Ang pang-eksperimentong code ay nakatuon sa pagpapatunay na umiiral ang isang konsepto, habang ang code ng imprastraktura ay nagpapatunay na maaari itong mabuhay.
Ang imprastraktura ay nangangailangan ng mahigpit na pagpaplano ng 'blast radius' upang maiwasan ang mga pagkabigo ng cascading system.
Ang gastos ng pagbabago ay sadyang mababa sa mga eksperimento at sadyang mataas sa imprastraktura.
Ang tagumpay para sa isang eksperimento ay isang bagong pananaw; Ang tagumpay para sa imprastraktura ay isang tahimik at nakakainip na operasyon.
Ano ang Software bilang Eksperimento?
Code na idinisenyo para sa mabilis na pag-aaral, prototyping, at pagsubok ng mga hypotheses sa mabilis na gumagalaw na mga kapaligiran.
Inuuna ang bilis ng paghahatid kaysa sa pangmatagalang pagiging perpekto ng arkitektura.
Karaniwang ginagamit sa mga startup na kapaligiran upang makahanap ng produkto-merkado fit.
Yakapin ang mentalidad na 'mabigo nang mabilis' upang mabawasan ang nasayang na mga mapagkukunan ng pag-unlad.
Kadalasan ay umaasa sa teknikal na utang bilang isang kinakalkula na trade-off para sa pagpasok sa merkado.
Karaniwan ay may mas maikling siklo ng buhay, madalas na itinatapon kapag natutunan na ang aralin.
Ano ang Software bilang Imprastraktura?
Pundasyon code na binuo para sa mataas na kakayahang magamit, seguridad, at pare-pareho ang pangmatagalang pagganap.
Ininhinyero upang mapaglabanan ang napakalaking sukat at kasabay na pag-load ng gumagamit.
Nakatuon sa pabalik na pagiging tugma upang maiwasan ang paglabag sa mga dependencies sa downstream.
Nangangailangan ng malawak na dokumentasyon at mahigpit na awtomatikong mga protocol ng pagsubok.
Dinisenyo na may isang lifecycle na sumasaklaw sa mga dekada sa halip na buwan o taon.
Sinusuportahan nito ang mga mahahalagang serbisyo tulad ng pagbabangko, grid ng enerhiya, at mga platform ng ulap.
Talahanayang Pagkukumpara
Tampok
Software bilang Eksperimento
Software bilang Imprastraktura
Pangunahing Layunin
Pag-aaral at Pagtuklas
Katatagan at pagiging maaasahan
Pagpapaubaya sa Kabiguan
Mataas (hinihikayat para sa paglago)
Mababa (Inaasahan ang zero-downtime)
Bilis ng Pag-unlad
Mabilis na pag-uulit
Pamamaraan at sinasadya
Teknikal na Utang
Tinanggap at inaasahan
Aktibong pinaliit at pinamamahalaan
Dokumentasyon
Minimal o Just-in-Time
Komprehensibo at kumpleto
Pagsubok ng Kahigpitan
Tumuon sa pangunahing pag-andar
Mga Kaso sa Edge at Pagsubok sa Stress
Pokus sa Gastos
Mababang paunang pamumuhunan
Pagtuunan ng pansin ang kabuuang gastos ng pagmamay-ari
Kakayahang sumukat
Kadalasan ay isang afterthought
Itinayo mula sa Unang Araw
Detalyadong Paghahambing
Pamamahala ng Panganib at Pagiging Maaasahan
Itinuturing ng pang-eksperimentong software ang mga bug bilang mga pagkakataon sa pag-aaral, madalas na nagpapatakbo sa mga kapaligiran kung saan ang isang pag-crash ay nakakaapekto sa ilang mga tao. Gayunpaman, itinuturing ng software ng imprastraktura ang downtime bilang isang sakuna na kaganapan, na nangangailangan ng pagtatanggol na programming at kalabisan na mga sistema. Ang pagkakaiba ay namamalagi sa kung ang code ay pinapayagan na masira ang mga bagay upang mabilis na gumalaw o dapat manatiling hindi nasira upang mapanatili ang mundo na gumagalaw.
Mahabang buhay at pagpapanatili
Ang isang eksperimento ay kadalasang isang pansamantalang tulay sa isang sagot, madalas na muling isinusulat o na-scrap sa sandaling ang layunin ay natugunan. Ang code ng imprastraktura ay binuo bilang isang permanenteng fixture, na nangangailangan ng maingat na pagpaplano para sa mga pag-update na maaaring sumasaklaw sa lima hanggang sampung taon ng serbisyo. Ang mga developer sa imprastraktura ay dapat mag-isip tungkol sa kung paano ang kanilang code ay magiging hitsura sa isang maintainer sa 2035, habang ang mga experimentalist ay nakatuon sa susunod na linggo.
Epekto sa Kultura ng Engineering
Ang mga koponan na nagtatayo ng pang-eksperimentong software ay umunlad sa pagkamalikhain, mga daloy ng trabaho na mabigat sa pivot, at mga sprint na may mataas na enerhiya. Pinahahalagahan ng mga koponan ng imprastraktura ang disiplina, malalim na pagsusuri sa arkitektura, at ang pagmamalaki ng pagbuo ng isang bagay na hindi kailanman nabigo. Ang iba't ibang mga mindset na ito ay madalas na humantong sa iba't ibang mga profile sa pag-upa, na may mga 'hacker' na mas gusto ang una at 'mga inhinyero ng system' na gravitating patungo sa huli.
Mga Driver ng Ekonomiya
Ang pang-eksperimentong software ay karaniwang pinondohan ng pangangailangan na makuha ang isang merkado o mapatunayan ang isang angkop na lugar nang mabilis. Ang imprastraktura ay isang pamumuhunan sa pundasyon, kung saan ang gastos ng isang pagkakamali ay maaaring magresulta sa napakalaking pananagutan sa pananalapi o legal. Ang isa ay isang agresibong pag-play para sa paglago, habang ang isa ay isang proteksiyon na panukala para sa umiiral na halaga at pagpapapatuloy ng pagpapatakbo.
Mga Kalamangan at Kahinaan
Software bilang Eksperimento
Mga Bentahe
+Napakabilis na feedback
+Mababang paunang gastos
+Hinihikayat ang pagbabago
+Mataas na kakayahang umangkop
Nakumpleto
−Marupok na codebase
−Nag-iipon ng teknikal na utang
−Mahinang kakayahang sumukat
−Hindi maaasahan para sa mga gumagamit
Software bilang Imprastraktura
Mga Bentahe
+Pambihirang pagiging maaasahan
+Mataas na pamantayan sa seguridad
+Malinaw na dokumentasyon
+Napakalaking kapasidad ng scale
Nakumpleto
−Mabagal na mga siklo ng pag-unlad
−Mataas na gastos sa engineering
−Lumalaban sa pagbabago
−Kumplikadong pagpapanatili
Mga Karaniwang Maling Akala
Alamat
Ang pang-eksperimentong software ay 'masamang' code lamang na isinulat ng mga tamad na developer.
Katotohanan
Ang sinasadyang pang-eksperimentong code ay isang madiskarteng pagpipilian upang unahin ang pag-aaral. Ito ay 'angkop para sa layunin' kung ang layunin ay pagpapatunay, bagaman ito ay nagiging problema kung hindi ito sa huli ay muling isinasaalang-alang o pinalitan.
Alamat
Ang software ng imprastraktura ay hindi kailanman nagbabago o nagbabago.
Katotohanan
Ang imprastraktura ay dapat umunlad, ngunit ginagawa ito nang may labis na pag-iingat. Ang mga pagbabago ay ipinatutupad gamit ang mga asul-berdeng pag-deploy o paglabas ng canary upang matiyak na ang pundasyon ay nananatiling matatag sa panahon ng paglipat.
Alamat
Madali mong mai-on ang isang eksperimento sa imprastraktura sa ibang pagkakataon.
Katotohanan
Ito ay isang pangkaraniwang bitag na humahantong sa mga sistema ng 'spaghetti'. Ang tunay na imprastraktura ay karaniwang nangangailangan ng isang kumpletong muling pag-iisip ng arkitektura dahil ang mga pangunahing pagpapalagay ng isang eksperimento ay bihirang masukat.
Alamat
Tanging ang mga startup lamang ang gumagawa ng pang-eksperimentong software.
Katotohanan
Kahit na ang mga higanteng tech firm ay gumagamit ng mga pang-eksperimentong sangay o 'lab' upang subukan ang mga tampok. Ang susi ay ang paghihiwalay ng mga eksperimentong ito upang hindi nila bantaan ang pangunahing imprastraktura na umaasa ang mga gumagamit.
Mga Madalas Itanong
Kailan ko dapat itigil ang pagtrato sa aking app bilang isang eksperimento?
Ang paglipat ay dapat mangyari sa sandaling ang iyong software ay lumipat mula sa 'maganda na magkaroon' hanggang sa 'kritikal' para sa iyong mga gumagamit. Kung ang isang 15-minutong outage ay nagreresulta sa makabuluhang pagkawala sa pananalapi o churn ng gumagamit, lumipat ka sa larangan ng imprastraktura at dapat ayusin ang iyong pagsubok at pag-deploy nang naaayon.
Gumagamit ba ang software ng imprastraktura ng iba't ibang mga wika ng programming?
Habang ang anumang wika ay maaaring magamit para sa pareho, ang imprastraktura ay madalas na nakahilig sa mga pinagsama-samang wika na may malakas na pag-type tulad ng Go, Rust, o C ++ para sa pagganap at kaligtasan. Ang pang-eksperimentong software ay madalas na gumagamit ng kakayahang umangkop, mataas na antas ng mga wika tulad ng Python o Ruby na nagbibigay-daan para sa mas mabilis na prototyping at mas madaling mga pagbabago sa syntax.
Laging masama ba ang teknikal na utang sa experimental software?
Hindi kinakailangan. Sa isang eksperimento, ang teknikal na utang ay tulad ng isang pautang na may mataas na interes na tumutulong sa iyo na bumili ng bahay nang mas maaga. Ito ay magiging isang 'masamang' utang lamang kung hindi mo ito babayaran o kung susubukan mong magtayo ng isang skyscraper (imprastraktura) sa tuktok ng pansamantalang pundasyon na iyon.
Paano naiiba ang mga diskarte sa pagsubok sa pagitan ng dalawa?
Ang mga eksperimento ay nakatuon sa pagsubok ng 'Happy Path' - pagsuri kung ang pangunahing tampok ay gumagana para sa average na gumagamit. Ang pagsubok sa imprastraktura ay nahuhumaling sa 'Edge Cases' at 'Chaos Engineering,' kung saan sinasadya ng mga developer na masira ang mga bahagi ng system upang makita kung ang natitira ay maaaring makaligtas sa pagkabigla.
Maaari bang hawakan ng isang solong kumpanya ang parehong mga diskarte nang sabay-sabay?
Oo, at ang pinaka-matagumpay na mga tao ay. Madalas silang gumagamit ng isang diskarte sa 'Bimodal IT' kung saan ang isang koponan ay nagpapanatili ng core, matatag na mga sistema (Imprastraktura) habang ang isa pang maliksi na koponan ay nagsasaliksik ng mga bagong hangganan (Eksperimento). Ang hamon ay ang pamamahala ng pag-aayos sa pagitan ng dalawang kulturang ito.
Ano ang pinakamalaking panganib na manatili sa yugto ng 'eksperimento' nang masyadong mahaba?
Ang pinakamalaking panganib ay ang 'Systemic Fragility.' Habang nagdaragdag ka ng higit pang mga tampok sa isang maluwag na binuo na eksperimento, ang pagiging kumplikado ay lumalaki nang malaki. Sa kalaunan, ang sistema ay nagiging napaka-malutong na ang paggawa ng isang maliit na pagbabago ay nagiging sanhi ng mga hindi nauugnay na bahagi upang masira, epektibong humihinto sa lahat ng pagbabago sa hinaharap.
Bakit mas kritikal ang dokumentasyon para sa imprastraktura?
Ang imprastraktura ay isang ibinahaging mapagkukunan na nabubuhay nang higit pa sa orihinal na mga tagalikha nito. Nang walang malalim na dokumentasyon, ang mga taong nagpapanatili ng system limang taon mula ngayon ay hindi mauunawaan ang 'bakit' sa likod ng mga tiyak na pagpipilian sa seguridad o pagganap, na humahantong sa mga mapanganib na error sa mga pag-update sa hinaharap.
Ang 'Imprastraktura' ba ay tumutukoy lamang sa mga cloud server at database?
Hindi, tumutukoy ito sa papel na ginagampanan ng software. Ang isang pangunahing library ng pagpapatunay na ginagamit ng libu-libong mga app ay 'imprastraktura' kahit na ito ay isang piraso lamang ng code. Kung ang mga tao ay nagtatayo sa ibabaw nito, ito ay imprastraktura; Kung ginagamit lamang ito ng mga tao upang makita kung gumagana ang isang ideya, ito ay isang eksperimento.
Hatol
Piliin ang pang-eksperimentong diskarte kapag ginalugad mo ang mga hindi kilalang merkado o sinusubukan ang mga bagong tampok kung saan mababa ang gastos ng pagkabigo. Mag-pivot sa isang pag-iisip ng imprastraktura sa sandaling ang iyong produkto ay naging isang kritikal na pag-asa para sa mga gumagamit na umaasa sa iyong serbisyo upang gumana nang walang pagkagambala.