Arkitekturbeslutningspost: Ruby on Rails-frameworket
Kontekst
Organisationen udvikler en webapplikation med kompleks forretningslogik og flere integrationer med tredjepartstjenester.
Teamet har erfaring med at bygge webapplikationer med Ruby on Rails.
Der er behov for at vælge et webframework, der fremmer hurtig udvikling, skalerbarhed og vedligeholdelighed.
Beslutning
- Brug Ruby on Rails som framework til at udvikle webapplikationen.
Begrundelse
Ruby on Rails er et modent, stabilt og bredt anvendt webframework, der har bevist sin effektivitet i at bygge komplekse webapplikationer.
Frameworket følger arkitekturmønsteret Model-View-Controller (MVC), som fremmer adskillelse af ansvarsområder og forbedrer genbrug og vedligeholdelighed af kode.
Rails leverer mange indbyggede funktioner, såsom ActiveRecord til databaseinteraktioner og ActionMailer til e-mailstyring, som kan spare udviklingstid og forenkle koden.
Frameworket har et stort og aktivt fællesskab med mange genanvendelige moduler og plugins, der kan forbedre funktionaliteten og løse almindelige problemer.
Ruby on Rails understøtter Test-Driven Development (TDD) og Behavior-Driven Development (BDD), hvilket gør det muligt for udviklere at skrive automatiserede tests til deres kode, så den fungerer som forventet, og fejl og regressioner reduceres.
Ruby er et højniveausprog, der fremmer udviklerproduktivitet og kodelæsbarhed og fungerer som et stærkt limsprog til integration med et bredt udvalg af tredjepartstjenester og API'er.
Konsekvenser
Teamet skal sikre, at webapplikationens arkitektur og design følger Rails-konventioner og best practices for at maksimere frameworkets fordele.
Udviklere skal have en god forståelse af Ruby-sproget og Rails-frameworket, selv om Rails-dokumentationen og fællesskabet kan give vejledning og støtte.
Der kan være en indlæringskurve for udviklere, der er nye til Ruby og Rails, selv om frameworkets fordele kan retfærdiggøre investeringen i uddannelse og onboarding.
Teamet skal overvåge applikationens ydeevne og skalerbarhed og skal muligvis finjustere databaseforespørgsler og optimere caching for at håndtere store mængder data og trafik.