Zapis arhitekturne odluke: programski jezik Rust
Broj odluke: AR-001
Naslov odluke: Usvajanje programskog jezika Rust
Datum: 1. prosinca 2021.
Status: Prihvaćeno
Opis problema
Kako nastavljamo razvijati softverske aplikacije, primijetili smo da je sve teže ublažavati potencijalne sigurnosne ranjivosti i sprječavati pogreške pri izvođenju. S postojećim programskim jezicima, poput C-a i C++-a, i dalje se susrećemo s problemima poput prekoračenja međuspremnika, curenja memorije i nedefiniranog ponašanja koje dovodi do rušenja aplikacija. Trebamo programski jezik koji pruža jamstva sigurnosti memorije i dovoljno je učinkovit za podršku aplikacijama kritičnim za performanse.
Razmatranja
Nekoliko programskih jezika dizajnirano je za rješavanje postojećih problema. Među njima je programski jezik Rust privukao znatnu pozornost zajednice programera zbog svojih jedinstvenih dizajnerskih značajki. Razmatranja uključuju;
Sigurnost memorije i sigurnost
Performanse i učinkovitost
Podrška zajednice i usvojenost
Krivulja učenja
Alati i ekosustav
Kompatibilnost s postojećim softverskim sustavima.
Ograničenja
Usvajanje novog programskog jezika zahtijeva prekvalifikaciju programera, što oduzima vrijeme i resurse. Integracija jezika u postojeći razvojni tijek rada može biti izazov. Moramo osigurati kompatibilnost s postojećim sustavima i izbjeći prekidne promjene kako bismo očuvali kontinuitet.
Implementacija
Naš razvojni tim proći će obuku kako bi naučio i upoznao se s programskim jezikom Rust.
Pokusno ćemo stvoriti novi projekt u Rustu kako bismo vrednovali njegovu kompatibilnost i prikladnost za naše razvojne svrhe.
Postupno ćemo migrirati postojeće sustave napisane u C-u i C++-u na Rust.
Surađivat ćemo sa zajednicom Rusta kako bismo istražili dostupne alate i biblioteke koji mogu poboljšati naš razvojni tijek rada.
Pratit ćemo performanse Rusta i redovito ih uspoređivati s performansama postojećih programskih jezika.
Usvojit ćemo dugoročni pristup koji uravnotežuje troškove obuke, integracije i potencijalne koristi korištenja Rusta.
Obrazloženje
Usvojili smo Rust zbog njegovih jedinstvenih značajki dizajniranih za pružanje jamstava sigurnosti memorije i sigurnosti uz održavanje performansi i učinkovitosti. Rustov robustan sustav tipova, borrow checker i koncepti sigurnosti memorije čine ga vrlo prikladnim za razvoj aplikacija kritičnih za performanse i sigurnost. Štoviše, Rust ima znatnu zajednicu programera, što nam omogućuje pristup širokom rasponu alata, biblioteka i ekosustava koji podržavaju naš razvojni tijek rada. Iako Rust dolazi s krivuljom učenja, vjerujemo da koristi usvajanja Rusta nadmašuju troškove i pružaju izvrsnu priliku za kontinuirani rast i inovacije.
Posljedice
Usvajanje Rusta zahtijevat će znatno ulaganje vremena i resursa u obuku programera i integraciju jezika u postojeći razvojni tijek rada.
Usvajanje Rusta može uzrokovati određeni stupanj problema s kompatibilnošću s postojećim sustavima, što će zahtijevati refaktoriranje i izmjene.
Usvajanje Rusta moglo bi povećati broj programera koji mogu doprinijeti našem projektu privlačenjem Rust programera koji žele raditi na uzbudljivim projektima.
Usvajanje bi moglo dovesti do poboljšanih performansi, učinkovitosti i sigurnosti u usporedbi s postojećim jezicima.
Naposljetku, usvajanje Rusta nosi potencijalnu korist smanjenja sigurnosnih ranjivosti u našim aplikacijama.