Kada razvijate kompleksan softverski sistema, veoma je teško predvideti i na vreme planirati sve funkcionalnosti, izmene i korisničke zahteve koji se mogu pojaviti u budućnosti. Osmišljavanje svakog detalja jedne takve aplikacije zahtevalo bi neprihvatljivo mnogo vremena za analizu i projektovanje, a sva iskustva govore da bi čak i u tom slučaju već sam početak implementacije i susret sa realnošću deo takvih planova bacio u vodu. Zbog toga je važno primeniti agilne metodologije u radu na projektu i fleksibilnu arhitekturu sistema.
Prvi nivo fleksibilnosti
Pri razvoju Solidus platforme odlučili smo se za, prema našem mišljenju i iskustvu, veoma prilagodljiv koncept koji ne samo što je moderan, već bi trebalo da može da izdrži ozbiljan test vremena. Solidus se sastoji od dve osnovne komponente – back-end mehanizama i front-end mehanizama. Pri tome su ove dve komponente razvijene tako da predstavljaju dve praktično nezavisne aplikacije.
Back-end je zadužen za komunikaciju sa bazom podataka, obradu tih podataka i poslovnu logiku, komunikaciju sa eksternim servisima i prateće funkcije održavanja sistema kao što je čuvanje rezervne kopije podataka ili monitoring aktivnosti. Zbog toga što ovaj sloj brine o podacima i proračunima, odlučili smo se za zrele, stabilne i proverene tehnologije kao što je Microsoft SQL server sistem za relacione baze podataka i .Net frejmvork. Implementirali smo Microsoft Web API koji obrađene i pripremljene podatke servira klijentskim front-end mehanizmima putem jednostavnih HTML poziva kroz RESTful API i prilagodljivi JSON format. Ovakav pristup omogućuje da i druge klijentske aplikacije konzumiraju isti API, pa Solidus companion mobilna aplikacija koristi identične mehanizme bez bilo kakve potrebe za dodatnim funkcionalnostima.
Front-end, sa druge strane, treba da omogući najudobnije moguće korisničko iskustvo i moderne kontrole za unos i prikaz podataka. Zbog toga smo se odlučili za SPA (single page application) HTML5 aplikaciju baziranu na Angular JS frejmvorku, dodatnim bibliotekama i naprednim mehanizmimakoje smo namenski razvili. To nam je omogućilo da korišćenjem Electron biblioteke klijentsku aplikaciju na brz i jednostavan način prevedemo u namenski desktop paket za Windows, Mac OS ili Linux. Još i više – ovako osmišljena arhitektura bez ikakvih naknadnih izmena može biti hostovana kao cloud servis ili u zatvorenoj infrastrukturi korisnika.
Drugi nivo fleksibilnosti
Do sada opisano rešava jedan deo potreba za fleksibilnošću. Poseban izazov predstavlja postizanje nezavisnosti pojedinih grupa funkcionalnosti u sistemu i mogućnost njihovog kombinovanja u pakete poželji. Zbog toga su i front-end i back-end deo podeljeni u module koji su takođe nezavisni, ali koriste zajedničke mehanizme i mogu međusobno da komuniciraju. Na taj način jednostavnim konfigurisanjem “u letu” možemo da sastavljamo aplikacije za najrazličitije namene.
Osim toga, razvoj novih modula svodi se na dodavanje samo specifičnih funkcionalnosti bez potrebe za ponovnim pisanjem onoga što je zajedničko. Čak i nezavisni programeri i kompanije, prateći jasnu specifikaciju, mogu da kreiraju module za svoje potrebe u kratkom roku i uz minimum ulaganja.