En aquest tema, explorarem els components essencials que constitueixen una Arquitectura Orientada a Serveis (SOA). Aquests components són fonamentals per entendre com es construeix, desplega i gestiona una arquitectura SOA. Els components clau inclouen:
- Serveis
- Contractes de Serveis
- Bus de Serveis d'Empresa (ESB)
- Registre de Serveis
- Mediació i Orquestració
- Seguretat
- Governança
- Serveis
Els serveis són els blocs de construcció fonamentals en SOA. Un servei és una unitat de funcionalitat que es pot reutilitzar i combinar amb altres serveis per crear aplicacions més complexes.
Característiques dels Serveis:
- Interoperabilitat: Capacitat de treballar amb altres serveis independentment de la seva plataforma o llenguatge de programació.
- Reutilització: Els serveis es poden reutilitzar en diferents aplicacions i contextos.
- Desacoblament: Els serveis estan dissenyats per ser independents els uns dels altres.
- Composabilitat: Els serveis es poden combinar per crear processos de negoci més complexos.
Exemple de Servei:
<service name="CustomerService">
<port name="CustomerPort" binding="tns:CustomerBinding">
<soap:address location="http://example.com/CustomerService"/>
</port>
</service>
- Contractes de Serveis
Els contractes defineixen les interfícies dels serveis, especificant les operacions disponibles, els paràmetres d'entrada i sortida, i els protocols de comunicació.
Components d'un Contracte de Servei:
- Interfície: Defineix les operacions que el servei ofereix.
- Política: Especifica les regles i restriccions del servei.
- Descripció: Proporciona informació sobre com utilitzar el servei.
Exemple de Contracte de Servei (WSDL):
<definitions name="CustomerService"
targetNamespace="http://example.com/CustomerService"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://example.com/CustomerService"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<message name="GetCustomerRequest">
<part name="customerId" type="xsd:string"/>
</message>
<message name="GetCustomerResponse">
<part name="customer" type="tns:Customer"/>
</message>
<portType name="CustomerPortType">
<operation name="GetCustomer">
<input message="tns:GetCustomerRequest"/>
<output message="tns:GetCustomerResponse"/>
</operation>
</portType>
<binding name="CustomerBinding" type="tns:CustomerPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetCustomer">
<soap:operation soapAction="http://example.com/GetCustomer"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="CustomerService">
<port name="CustomerPort" binding="tns:CustomerBinding">
<soap:address location="http://example.com/CustomerService"/>
</port>
</service>
</definitions>
- Bus de Serveis d'Empresa (ESB)
L'ESB és una infraestructura que permet la comunicació entre serveis. Facilita la integració, la mediació i la transformació de missatges entre serveis.
Funcions de l'ESB:
- Ruting: Dirigeix els missatges al servei destinatari correcte.
- Transformació: Converteix els missatges d'un format a un altre.
- Mediació: Gestiona les interaccions entre serveis, incloent la seguretat i la gestió de transaccions.
Exemple d'ESB:
- Registre de Serveis
El registre de serveis és un repositori on es publiquen i es descobreixen els serveis disponibles. Permet als serveis trobar i comunicar-se amb altres serveis.
Funcions del Registre de Serveis:
- Publicació: Els serveis es registren amb les seves descripcions i ubicacions.
- Descobriment: Els clients poden buscar i localitzar serveis.
- Gestió: Manté la informació actualitzada sobre els serveis disponibles.
Exemple de Registre de Serveis (UDDI):
<businessService businessKey="uuid:1234" serviceKey="uuid:5678">
<name>CustomerService</name>
<bindingTemplates>
<bindingTemplate>
<accessPoint URLType="http">http://example.com/CustomerService</accessPoint>
</bindingTemplate>
</bindingTemplates>
</businessService>
- Mediació i Orquestració
La mediació i l'orquestració són processos que gestionen la interacció entre serveis per complir amb els requisits de negoci.
Mediació:
- Funció: Actua com a intermediari entre serveis per gestionar la comunicació, la transformació de dades i l'aplicació de polítiques.
Orquestració:
- Funció: Coordina l'execució de múltiples serveis per implementar processos de negoci complexos.
Exemple d'Orquestració (BPEL):
<process name="OrderProcess" targetNamespace="http://example.com/OrderProcess"
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
<sequence>
<receive partnerLink="customer" operation="placeOrder" variable="order"/>
<invoke partnerLink="inventory" operation="checkStock" inputVariable="order" outputVariable="stockStatus"/>
<invoke partnerLink="shipping" operation="arrangeShipment" inputVariable="order"/>
<reply partnerLink="customer" operation="orderResponse" variable="response"/>
</sequence>
</process>
- Seguretat
La seguretat en SOA és crucial per protegir les dades i garantir la integritat i la confidencialitat de les comunicacions entre serveis.
Aspectes Clau de la Seguretat:
- Autenticació: Verificar la identitat dels usuaris i serveis.
- Autorització: Controlar l'accés als serveis i recursos.
- Encriptació: Protegir les dades durant la transmissió.
- Auditoria: Registrar les activitats per a la supervisió i el compliment.
Exemple de Seguretat (WS-Security):
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>user</wsse:Username>
<wsse:Password>password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
- Governança
La governança en SOA implica la gestió i el control dels serveis per assegurar que compleixin amb les polítiques i els estàndards de l'organització.
Funcions de la Governança:
- Definició de Polítiques: Establir regles i estàndards per al desenvolupament i l'ús de serveis.
- Monitoratge: Supervisar el rendiment i l'ús dels serveis.
- Compliment: Assegurar que els serveis compleixin amb les polítiques establertes.
Exemple de Governança:
[Governança SOA]
|
|-- Definició de Polítiques
|-- Monitoratge de Serveis
|-- Compliment de NormativesConclusió
Els components clau de SOA són essencials per construir una arquitectura robusta i eficient. Comprendre aquests components i com interactuen entre ells és fonamental per implementar amb èxit una Arquitectura Orientada a Serveis. En el proper tema, explorarem els serveis i contractes en més detall, aprofundint en com es defineixen i es gestionen dins d'una arquitectura SOA.
