Arkitekturbeslutningslogg: Rammeverket Ruby on Rails
Kontekst
Organisasjonen utvikler en webapplikasjon med kompleks forretningslogikk og flere integrasjoner med tjenester fra tredjeparter.
Teamet har erfaring med å bygge webapplikasjoner med Ruby on Rails.
Det er behov for å velge et nettrammeverk som fremmer rask utvikling, skalerbarhet og vedlikeholdbarhet.
Beslutning
- Bruke Ruby on Rails som rammeverk for å utvikle webapplikasjonen.
Begrunnelse
Ruby on Rails er et modent, stabilt og bredt tatt i bruk nettrammeverk som har vist seg effektivt til å bygge komplekse webapplikasjoner.
Rammeverket følger arkitekturmønsteret Model-View-Controller (MVC), som fremmer ansvarsfordeling og forbedrer gjenbrukbarhet og vedlikeholdbarhet av koden.
Rails har mange innebygde funksjoner, som ActiveRecord for databasesamhandling og ActionMailer for e-posthåndtering, som kan spare utviklingstid og forenkle koden.
Rammeverket har et stort og aktivt miljø, med mange gjenbrukbare moduler og programtillegg som kan utvide funksjonaliteten og løse vanlige problemer.
Ruby on Rails støtter testdrevet utvikling (TDD) og atferdsdrevet utvikling (BDD), som gjør det mulig for utviklere å skrive automatiserte tester for koden sin, sikre at den fungerer som forventet og redusere feil og regresjoner.
Ruby er et språk på høyt nivå som fremmer utvikleres produktivitet og kodens lesbarhet, og fungerer som et kraftig limspråk for integrasjon med et bredt spekter av tjenester og API-er fra tredjeparter.
Konsekvenser
Teamet må sørge for at webapplikasjonens arkitektur og design følger konvensjonene og beste praksis i Rails, for å få mest mulig ut av rammeverket.
Utviklere må ha god forståelse av språket Ruby og rammeverket Rails, selv om dokumentasjonen og miljøet rundt Rails kan gi veiledning og støtte.
Det kan være en læringskurve for utviklere som er nye i Ruby og Rails, selv om fordelene med rammeverket kan rettferdiggjøre investeringen i opplæring og introduksjon.
Teamet må følge med på applikasjonens ytelse og skalerbarhet, og må kanskje finjustere databasespørringer og optimalisere hurtigbufring for å håndtere store datamengder og mye trafikk.