Am mai publicat pe blog un articol util, zic eu, si pentru comunitatea de dezvoltatori de pe seopedia si il public aici pentru a dezvolta un pic subiectul.
Proiectare de aplicatii online: arhitectura orientata pe servicii web
Cu acest articol pornesc o noua serie de articole denumita Proiectare de aplicatii online, acesta fiind primul episod in care vom discuta despre arhitectura unei aplicatii online bazata pe servicii web.
In momentul in care proiectezi o noua aplicatie online sunt cativa factori de care trebuie sa tii cont, cum ar fi:
* aplicatia trebuie sa-si atinga scopul propus
* aplicatia trebuie dezvoltata repede
* aplicatia trebuie sa functioneze bine, asta insemnand atat un algoritm implementat corect cat si performanta in executie
* aplicatia trebuie sa fie usor de intretinut
* aplicatie trebuie sa fie usor de modificat, upgradat, iar in aceasta situatie factorul uman sa nu fie o problema (timpul de adaptare la modul in care e dezvoltata aplicatia trebuie sa fie relativ mic)
Acestea sunt o parte din problemele pe care ti le pui inainte de a te apuca de proiectare unei aplicatii.
Cu cat trebuie sa proiectezi mai multe aplicatii pentru acelasi client problemele care pot aparea (si de care trebuie sa tii cont) sunt mai mari, cu cat echipele de implementare sunt mai mari si mai diferite iarasi creste gradul de dificultate al problemelor ce pot aparea.
Modul de proiectare pe care vreau sa vi-l prezint nu este raspunsul tuturor intrebarilor legate de proiectarea de aplicatii online dar este un mod care s-a dovedit destul de bun pana acum.
Arhitectura orientata pe servicii web
Exemplul furnizat in imaginea de mai sus este unul simplist dar este punctul de plecare pentru intelegerea acestui mod de lucru.
Imaginati-va ca lucrati la un site de anunturi imobiliare. Aceasta e aplicatia.
Serviciul web 1 este o colectie de functii ce ofera functionalitati de albume de imagini organizate sub forma unui obiect unitar. Serviciul web 2 este o colectie de functii construite in jurul unui anunt iar serviciul web 3 este o colectie de functii organizate in jurul utilizatorului.
Fiecare serviciu web este accesat de catre aplicatie printr-o interfata standardizata si independenta de functionalitatile interne.
Ce inseamna asta? Indiferent de functionalitatile interne ale unui serviciu web aplicatia intotdeauna va interactiona cu serviciul web folosing aceleasi metode. Acestea se schimba numai in cazul in care schimbarile in cadrul serviciului web sunt majore si necesita aparitia unei noi versiuni.
Care sunt avantajele acestui mod de lucru?
* functionalitatile de baza sunt concentrate in jurul unui serviciu web ce ruleaza independent de aplicatie; odata ce acesta este dezvoltat si iesit din faza de testare si debug el reprezinta o resursa disponibila oricarui proiect -> timpul de implementare scade
* orice modificari care duc la imbunatatirea procesului de lucru in cadrul unui serviciu web se reflecta imediat in toate aplicatiile ce il folosesc -> upgrade simultan pe toate aplicatiile -> timpul de implementare scade
* se standardizeaza modul de lucru in cadrul echipelor mari -> creste eficienta pe fiecare entitate productiva
* situatia in care o aplicatie necesita o crestere a resurselor alocate iar acest lucru poate genera o problema devine o amintire; arhitectura bazata pe servicii web este o arhitectura distribuita, toate serviciile web pot rula pe acelasi server iar cand situatia o cere fiecare serviciu web poate rula pe un server propriu -> adaptabilitate la crestere
* educarea echipelor de dezvoltatori prin standardizare: atat timp cat toti dezvoltatorii trebuie sa foloseasca aceleasi servicii web va fi mult mai usor sa faci schimbari in cadrul echipelor; deasemenea, cu fiecare implementare a unui serviciu web intr-o aplicatie creste libraria de exemple ce vor fi folosite ca baza de invatare pentru membrii noi ai echipelor de dezvoltare
Va las sa digerati acest subiect si voi reveni cu completari despre servicii web si despre proiectarea de aplicatii online in general.
Sunt curios insa sa stiu daca ati folosit un astfel de sistem pana acum.