Zapis arhitekturne odluke: okvir Ruby on Rails
Kontekst
Organizacija razvija web aplikaciju sa složenom poslovnom logikom i višestrukim integracijama s uslugama trećih strana.
Tim ima iskustva u izradi web aplikacija s Ruby on Railsom.
Potrebno je odabrati web okvir koji potiče brz razvoj, skalabilnost i održivost.
Odluka
- Koristiti Ruby on Rails kao okvir za razvoj web aplikacije.
Opravdanje
Ruby on Rails je zreo, stabilan i široko usvojen web okvir koji je dokazao svoju učinkovitost u izradi složenih web aplikacija.
Okvir slijedi arhitekturni obrazac Model-View-Controller (MVC), koji potiče odvajanje odgovornosti i poboljšava ponovnu uporabljivost i održivost koda.
Rails pruža mnoge ugrađene značajke, poput ActiveRecorda za interakcije s bazom podataka i ActionMailera za upravljanje e-poštom, koje mogu uštedjeti vrijeme razvoja i pojednostaviti kod.
Okvir ima veliku i aktivnu zajednicu s mnogim modulima i dodacima za višekratnu uporabu koji poboljšavaju funkcionalnost i rješavaju uobičajene probleme.
Ruby on Rails podržava razvoj vođen testovima (TDD) i razvoj vođen ponašanjem (BDD), što programerima omogućuje pisanje automatiziranih testova za svoj kod, osiguravajući da radi prema očekivanju te smanjujući pogreške i regresije.
Ruby je jezik visoke razine koji potiče produktivnost programera i čitljivost koda te služi kao moćan jezik za povezivanje u integraciji sa širokim rasponom usluga i API-ja trećih strana.
Posljedice
Tim mora osigurati da arhitektura i dizajn web aplikacije slijede konvencije i najbolje prakse Railsa kako bi se maksimizirale koristi okvira.
Programeri moraju dobro razumjeti jezik Ruby i okvir Rails, iako dokumentacija i zajednica Railsa mogu pružiti smjernice i podršku.
Za programere koji su novi u Rubyju i Railsu može postojati krivulja učenja, iako koristi okvira mogu opravdati ulaganje u obuku i uvođenje.
Tim mora pratiti performanse i skalabilnost aplikacije te će možda trebati fino podešavati upite baze podataka i optimizirati keširanje kako bi se nosio s velikim količinama podataka i prometa.