Architecture Decision Record

Active theme: Light

← Primjeri zapisa odluka

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;

  1. Sigurnost memorije i sigurnost

  2. Performanse i učinkovitost

  3. Podrška zajednice i usvojenost

  4. Krivulja učenja

  5. Alati i ekosustav

  6. 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

  1. Naš razvojni tim proći će obuku kako bi naučio i upoznao se s programskim jezikom Rust.

  2. Pokusno ćemo stvoriti novi projekt u Rustu kako bismo vrednovali njegovu kompatibilnost i prikladnost za naše razvojne svrhe.

  3. Postupno ćemo migrirati postojeće sustave napisane u C-u i C++-u na Rust.

  4. Surađivat ćemo sa zajednicom Rusta kako bismo istražili dostupne alate i biblioteke koji mogu poboljšati naš razvojni tijek rada.

  5. Pratit ćemo performanse Rusta i redovito ih uspoređivati s performansama postojećih programskih jezika.

  6. 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

  1. Usvajanje Rusta zahtijevat će znatno ulaganje vremena i resursa u obuku programera i integraciju jezika u postojeći razvojni tijek rada.

  2. Usvajanje Rusta može uzrokovati određeni stupanj problema s kompatibilnošću s postojećim sustavima, što će zahtijevati refaktoriranje i izmjene.

  3. Usvajanje Rusta moglo bi povećati broj programera koji mogu doprinijeti našem projektu privlačenjem Rust programera koji žele raditi na uzbudljivim projektima.

  4. Usvajanje bi moglo dovesti do poboljšanih performansi, učinkovitosti i sigurnosti u usporedbi s postojećim jezicima.

  5. Naposljetku, usvajanje Rusta nosi potencijalnu korist smanjenja sigurnosnih ranjivosti u našim aplikacijama.

Izvor: ovu stranicu generirao je ChatGPT, a zatim je uređena radi jasnoće i oblika.