- Platforma CivicHub permite chestionare ce contin intrebari cu doua variante de raspuns, intrebari cu variante multiple de raspuns, cat si seturi de intrebari, combinatii intre cele doua.
- Functionarea se bazeaza pe arhitectura client-server.
- Partea de server este realizata cu softuri open-source.
- Utilizatorii aplicatiei au la dispozitie atat varianta pentru dispozitive Android, cat si pentru dispositive iOS (Apple).
In alegerea solutiilor tehnice am plecat de la urmatoarele considerente:
- Incarcare dinamica, in functie anumite momente sau evenimente – Serviciile oferite de catre platforma sunt utilizate diferit in functie de anumite ore din zi și anumite zile din săptămână. In varianta in care platforma nu este scalabila, ar fi fost nevoie de o dimensionare pentru o capacitate estimata maxima. Acest lucru ar fi foarte greu de stabilit si ar presupune o risipa de resurse.
- Creșterea constantă a numarului de utilizatori – Numarul utilizatorilor va fi in continua crestere. Acest lucru impune ca platorma sa scaleze in functie de aceasta crestere.
Dinamica mare a utilizatorilor si eventualitatea cresterii abrupte a numarului acestora, a impus folosirea unor tehnologii care sa raspunda cerintelor.
Pentru a rezolva problemele de scalabilitate, am folosit tehnologiile de containere (kubernetes) si microserviciile.
Containerele sunt entitati care contin tot ce este nevoie pentru a rula independent niste aplicatii. In acest fel se realizeaza o izolare a aplicatiilor. Acest lucru este foarte util in momente in care un container da erori sau se inchide; un astfel de incident nu provoaca o cadere a intregului sistem. Serverele de baze de date sunt configurate in cluster, pentru a preveni disfunctionalitati in cazul in care se defecteaza unele dintre servere. Aceste clustere sunt orchestrate unitar si in acest fel se poate mari capacitatea de procesare a datelor prin faptul ca se pot adauga usor resurse la sistemul existent.
Pentru cresterea fiabilitatii am implementat microserviciile.
Principiul de functionare al microserviciilor consta in a reduce cat mai mult ce face acel microserviciu, (in final putem considera ca face un singur lucru). Altfel spus, ‘fa un singur lucru, dar cat mai bine’. Aceasta ‘supraspecializare’ a lor permite o optimizare sporita. In abordarea conventionala, se realizeaza un soft mare, in care exista foarte multe functionalitati si implicit puncte in care pot aparea probleme. Microserviciile rezolva tocmai aceaste vulnerabilitati. Astfel, un sistem complex devine o suma de microsisteme care pot fi reglate fin si depanate mult mai usor.