Construirea aplicatiilor SOA
Download
Report
Transcript Construirea aplicatiilor SOA
Oita Nicoleta
342C5
Cuprins
Importanta SOA
Stil arhitectural si principii
Servicii web
Model conceptual al SOA
Nivelurile unei SOA
Procesul de modelare a SOA
Principii de design a aplicatiilor orientate pe servicii
Importanta SOA
Exista o cerere uriasa pentru dezvoltarea si
implementarea sistemelor de tip SOA.
Metodele OOAD (Object Oriented Analysis and
Design) curente nu adreseaza cele 3 elemente cheie ale
unui SOA: servicii, fluxuri, componente.
Este nevoie sa fie adresate explicit tehnicile si
procesele necesare pentru a identifica, specifica si
realiza serviciile, fluxurile si structura lor.
Stil arhitectural si principii
SOA descrie un set de sabloane pentru a crea servicii
slab cuplate care, datorita separarii interfetelor,
implementarilor si protocoalelor, furnizeaza o mare
flexibilitate in receptivitatea la cerintele actuale de
business functionale si non-functionale:
performanta
securitate
scalabilitate
Serviciu web
o resursa software cu o descriere externa
descrierea este disponibila pentru cautarea,
conectarea, invocarea de catre un consumator de
servicii
furnizorul de servicii realizeaza implementarea
descrierii serviciului si livreaza cerinte QoS (Quality
of Service) consumatorului de servicii.
serviciile ar trebui in mod ideal sa fie conduse de
politici declarative, astfel incat sa suporte un stil
arhitectural reconfigurabil
Model conceptual al SOA
Model conceptual al SOA
Coceptul este bazat pe un stil arhitectural care defineste un
model de interactiune intre trei parti primare:
furnizorul de servicii: publica descrierea unui serviciu si
furnizeaza implementarea acelui serviciu
un consumator de servicii:
poate folosi un URI (Uniform Resource Identifier) pentru descrierea
directa a serviciului
poate gasi descrierea serviciului intr-un registru de servicii si apoi
poate sa se conecteze si sa invoce acel serviciu
Brokerul de servicii furnizeaza si mentine registrul de servicii
(desi in ziua de azi registrele publice nu mai sunt in voga)
Nivelurile unei SOA
Nivelurile unei SOA
Nivelul operational
format din aplicatiile deja existente, “mostenite”
include aplicatii de tip CRM (Customer Relationship
Management) si ERP (Enterprise Resource Planning),
implementari ale sistemului mai vechi, orientate obiect,
aplicatii inteligente
Nivelul componentelor intreprinderii:
foloseste de obicei aplicatii server pentru a implementa
componentele, gestiunea volumului de munca si
echilibrarea traficului
Nivelurile unei SOA
Nivelul de servicii:
cuprinde serviciile fondate si expuse: pot fi descoperite sau
legate static si apoi invocate
furnizeaza un mecanism prin care se realizeaza servicii la
rulare, folosind functionalitatea data de interfata
interfetele sunt exportate ca descrieri de servicii si expuse
pentru a fi folosite; ele pot exista izolate sau ca servicii
compuse
Nivelul de compunere a proceselor:
compunerea serviciilor expuse la nivelul anterior
serviciile sunt “impachetate” intr-un flux si astfel actioneaza
impreuna ca o singura aplicatie; aceste aplicatii suporta cazuri
de utilizare si procese specifice
Nivelurile unei SOA
Nivelul prezentare sau acces
Nivelul integrare
permite integrarea serviciilor prin introducerea unui set de
capabilitati de baza: rutare inteligenta, medierea protocoalelor si
alte mecanisme de transformare, de obicei descrise ca ESB
(Enterprise Service Bus)
Web Services Description Language (WSDL) specifica conectarea,
ceea ce implica o locatie la care serviciul este furnizat; pe de alta
parte, un ESB furnizeaza un mecanism de specificare a locatiei
independenta pentru integrare
Nivelul QOS:
furnizeaza capabilitati necesare pentru a monitoriza, gestiona,
mentine QOS: securitate, performanta, valabilitate
este un process de background
Procesul de modelare a arhitecturii
orientate pe servicii
Procesul de modelare a arhitecturii
orientate pe servicii
Consta in trei pasi generali: identificare, specificare,
realizare a serviciilor, componentelor si fluxurilor.
Identificarea serviciilor
descompunerea domeniului in ariile si subsistemele
sale, incluzand descompunerea proceselor sau fluxului
in subprocese si cazuri de utilizare
Clasificarea serviciilor
aceasta clasificare ar trebui sa fie realizata ca o ierarhie,
care sa reflecte natura compusa a serviciilor: acestea ar
trebui compuse din componente mai fin granulate
Procesul de modelare a arhitecturii
orientate pe servicii
Analiza subsistemelor
specifica interdependentele dintre subsisteme
cazurile de utilizare sunt expuse ca servicii in interfata
subsistemului
analiza unui subsistem presupune crearea de modele ale
obiectelor pentru a reprezenta designul si taskurile
interne ale subsistemelor continute
Specificare componentelor
detaliile componentelor care implementeaza serviciile:
date, reguli, servicii, profiluri configurabile
trimiterea de mesaje si specificatiile evenimentelor
Procesul de modelare a arhitecturii
orientate pe servicii
Alocarea serviciilor
consta in asignarea serviciilor subsistemelor care au fost
identificate.
de obicei se face presupunerea ca subsistemele au o
corespondenta 1-1 cu componentele intreprinderii.
Realizarea serviciilor :
se hotaraste care subservicii vor fi folosite pentru a
realiza un anumit serviciu si care servicii vor fi
construite de la baza
include integrare, transformare folosind servicii web
Principii de design ale aplicatiilor
orientate pe servicii
Dezvoltarea aplicatiilor orientate pe servicii (Service-
Oriented Development of Applications = SODA) este o
metoda sau abordare care construieste aplicatii
folosind servicii software.
SODA este compatibila cu limbaje de programare
variate, mai ales orientate obiect.
Principii de design ale aplicatiilor
orientate pe servicii
Crearea cu succes a aplicatiilor orientate pe servicii
presupune:
deciderea a caror functionalitati are sens sa fie expuse ca
servicii
separarea si modularizarea logicii de business pentru a
facilita refolosirea si flexibilitatea
folosirea de servicii slab cuplate pentru a putea fi
dezvoltate rapid cand cerintele se schimba
proiectarea unei granularitati potrivite a serviciilor
planificarea si implementarea tuturor pasilor SODA
Principii de design ale aplicatiilor
orientate pe servicii
Deciderea a caror functionalitate sa fie expusa ca un
serviciu:
aproape orice tip de logica de business poate fi
implementata sau expusa ca un serviciu web in SOA, de la o
singura, triviala functie pana la o aplicatie complexa
este nevoie ca datele sa fie private?
functionalitatea bazata pe logica de business se poate
schimba frecvent?
este nevoie ca datele sa fie partajate intre departamente sau
locatii ale unei intreprinderi sau cu parteneri externi?
Principii de design ale aplicatiilor
orientate pe servicii
Separarea si modularizarea logicii de interfata
serviciului
evitarea construirii logicii direct in implementarea
serviciului
proiectarea fiecarui serviciu pentru a expune un bloc
modular de logica care calculeaza o functie discreta
protejeaza clientul de functionalitati schimbatoare in
logica businessului si faciliteaza implementarea rapida a
regulilor schimbate in serviciu
implementarea unui serviciu ar trebui sa contina doar
apelul catre logica de business pentru a lua datele de care
are nevoie in a converti sau asambla datele returnate intrun format specificat, cel mai adesea bazat pe XML
Principii de design ale aplicatiilor
orientate pe servicii
Servicii slab cuplate
probabil cel mai critic element intr-un sistem SOA
are impact direct asupra agilitatii aplicatiei: abilitatea de a
fi scalata usor, usurinta in schimbare, de incredere
cuplarea stransa presupune ca daca functia A este foarte
dependenta de functia B, schimbarile asupra uneia
determina schimbari si asupra celeilalte
cuplarea slaba evita cat mai multe dependente posibile la
toate nivelele aplicatiei, permitand componentelor si
serviciilor sa opereze fara sa fie nevoie de informatii de la
alte componente sau servicii
Principii de design ale aplicatiilor
orientate pe servicii
Proiectarea unei granularitati potrivite a serviciilor
granularitate fina: presupune efectuarea unei singure,
simple functii
granularitate aspra: presupune efectuarea unei functii
complete
Regula importanta: construirea unei serii de obiecte
si componente de nivel scazut, cu granularitate fina si
apoi construirea unui serviciu granulat aspru din
acestea.
Principii de design ale aplicatiilor
orientate pe servicii
un serviciu granulat fin poate fi folosit de multe ori,
dar poate cauza si un overhead mare la rulare
un serviciu granulat aspru care incapsuleaza un proces
complet va fi cel mai folositor celor care planifica o
aplicatie completa si va avea nevoie de o singura
accesare a bazei de date la rulare
Serviciile care sunt prea aspru granulate pot fi limitate
in refolosire. Trebuie sa existe in mod clar un echilibru
intre cele doua.
Intrebari?
… Va multumesc!