Está en la página 1de 24

Arquitectura

Orientada a Servicios
(SOA)
Desarrollo de Aplicaciones Empresariales
Agenda
• ¿Qué es SOA?
• SaaS
• Servicios Web
• SOA - Servicios Web
• Estándares
• Retos SOA
SaaS
• Concepto muy ligado a SOA es la noción de “Software como
Servicio” (Saas, “Software as a Service”).
• Puede definirse como “software que se pone en explotación
en la modalidad de servicio gestionado y que al cual se accede
a través de Internet”
¿Qué es SOA? - Historia
SOA no se deriva de una propuesta académica
Service-oriented architecture fué descrita por primera
vez por Gartner en 1996
SSA Research Note SPA-401-068, 12 de abril, “‘Service
Oriented’ Architectures, Part 1” y SSA Research Note
SPA-401-069, 12 de abril, “‘Service Oriented’
Architectures, Part 2”
¿Qué es SOA? - Definiciones
• W3C: “Conjunto de componentes que pueden ser
invocados, cuyas descripciones de interfaces se pueden
publicar y descubrir”
• CBDI rechaza esa definición:
• Los componentes pueden no ser conjuntos
• La definición sólo considera los componentes y no la práctica o el
arte de construir la arquitectura
• CBDI: “Estilo resultante de políticas, prácticas y
frameworks que permiten que la funcionalidad de una
aplicación se pueda proveer y consumir como conjuntos
de servicios, con una granularidad relevante para el
consumidor. Los servicios pueden invocarse, publicarse y
descubrirse y están abstraídos de su implementación
utilizando una sola forma estándar de interface”
¿Qué es SOA? - Definiciones
• “Infraestructura de alto nivel basada en best practices y
patrones para crear soluciones basadas en servicios, de
alta cohesión y bajo acoplamiento” (Geniant®).
• “Estilo arquitectónico apto para implementar bajo
acoplamiento entre agentes. Los agentes son
proveedores y consumidores de servicios, que son la
unidad de trabajo”. (Hao He).
• “Una arquitectura de aplicación en la cual todas las
funciones se definen como servicios independientes con
interfaces invocables bien definidas, que pueden ser
llamadas en secuencias definidas para formar procesos
de negocios” (IBM).
¿Qué es SOA? - Definiciones
• MITRE:
• Una aplicación SOA es una colección de servicios
• Un servicio es la unidad atómica de una SOA
• Los servicios encapsulan procesos de negocios
• Los proveedores de servicios se registran solos
• Un servicio involucra: Find, Bind, Execute
• Las instancias más conocidas son los web services
• Gartner:
• “SOA es una arquitectura de software que comienza con una
definición de interface y construye toda la topología de la
aplicación como una topología de interfaces, implementaciones y
llamados a interfaces. Sería mejor llamada “arquitectura
orientada a interfaces”. SOA es una relación de servicios y
consumidores de servicios, ambos suficientemente amplios para
representar una función de negocios completa”.
Servicios Web
Componente de Software que utiliza un conjunto de
protocolos y estándares para intercambiar datos entre
aplicaciones sobre una red.

Los Servicios Web suelen ser considerados como APIs Web


que pueden ser accedidos dentro de una red
(principalmente internet) y ejecutados en el sistema que
los aloja.
Servicios Web – Características
• Son interoperables
• Superan las barreras geográficas
• Por naturaleza son flexibles
• Se basan en el protocolo HTTP
SOA – Servicios Web
• SOA es históricamente anterior (no por mucho)
• Un web service es SOA si:
• Las interfaces se basan en protocolos de web (HTTP,
SMTP, FTP)
• A excepción de los attachments, los mensajes se basan
en XML
• Dos arquitecturas de web service: SOAP y REST
• REST es anti-RPC
• SOAP puede interpretarse en términos de mensajes o
de RPC
SOA – Servicios Web
• SOA es más amplio. Los web services son sólo una
interface programática en conformidad con los
protocolos WS-*
• Puede haber SOA sin WS (ej. REST)
• Los web services proporcionan independencia de
plataforma, bajo acoplamiento, auto-descripción y
descubrimiento
• Los web services no son parte obligatoria de SOA, pero
son una implementación adecuada
Estándares – WSDL
• XML que describe servicios
• Propuesto por Microsoft e IBM y presentado a W3C por
25 empresas (número máximo admitido)
• Define data types pasados en mensajes, operaciones a
realizar y mapeado de los mensajes sobre transportes de
red.
• Puede haber algunas discrepancias entre diferentes
implementaciones, debido a que es extensible.
Estándares – WSDL
Estándares – REST
• REST - REpresentational State Transfer (Roy Fielding,
2000)
• SOA sin Web Services, ni SOAP ni RPC
• Arquitectura con modelo de datos (recursos, URIs y
representaciones XML)
• Composición de diversos estilos: repositorio replicado,
cache, cliente-servidor, sistema en capas, sistema sin
estado, máquina virtual, código a demanda e interfaz
uniforme
Estándares – REST (Modelo)
• Una aplicación REST transfiere representaciones entre
componentes usando conectores
• Componentes: incluyen agentes de usuario (Mozilla,
cURL) y servidores de origen (Apache, IIS)
• Los componentes de REST obedecen estas restricciones:
• las interaciones son stateless
• los recursos se identifican mediante URIs
• no hay tal cosa como servicios ni objetos, sólo recursos
• no se permite el paso de cookies y se propone el reemplazo de
MIME (Multipurpose Internet Mail Extensions) por su discrepancia
arquitectónica con la semántica de HTTP
• hypermedia es la máquina de estado de la aplicación
• no hay necesidad de toolkits: sólo URIs y XML
Estándares – REST (JSON)
• Acrónimo JavaScript Object Notation
• Es un formato ligero para el intercambio de datos.
• JSON es un subconjunto de la notación literal de objetos de
JavaScript que no requiere el uso de XML.
• La simplicidad de JSON ha dado lugar a la generalización de su
uso, especialmente como alternativa a XML en AJAX.
• JSON es que puede ser leído por cualquier lenguaje de
programación.
• Si bien es frecuente ver JSON posicionado contra XML,
también es frecuente el uso de JSON y XML en la misma
aplicación. Por ejemplo, una aplicación de cliente que integra
datos de Google Maps con datos meteorológicos en SOAP
hacen necesario soportar ambos formatos.
Estándares – REST (JSON)
SOAP Vs REST
• REST enfatiza el papel de los intermediarios:
caches, proxies, gateways, etc
• REST es adecuado para transferencias y
transformaciones simples. Transacciones
complejas, algunos prefieren SOAP.
• No hay herramientas para implementar REST
rigurosamente; sí en cambio las hay para SOAP
RPC.
Manejo de Seguridad – WS
• Políticas de seguridad basadas en estándares de industria
• Trust Issuing Framework (WS-Trust)
• Secure Conversation (WS-SecureConversation)
• Autorización basada en roles
• Policies de seguridad (WS-SecurityPolicy)
Trust
• Relaciones e identidad: tokens de seguridad con firma
digital
• ¿Cómo pruebo quien soy?
• ¿Quién me puede avalar?
• ¿Cómo sabe usted que puede confiar en él?
• WS-Trust define un protocolo para emitir y obtener
tokens de seguridad.
Trust Token
Issuer

Diversos modelos para emitir


tokens
Client Service
• El cliente obtiene token de
una fuente bien conocida
• El servicio obtiene un
token para el cliente
• Etc… Token
Issuer
Token Token
Issuer 1 Issuer 2
Client Service

Client Service
Conversación segura
• WS-SecureConversation detalla la forma de emitir un
SecurityContextToken
• En WSE, este token de peso ligero reemplaza a los
tokens que requieren proceso intensivo

Requerimiento de SCT

SCT emitido al cliente Emisor del


Cliente Servicio
y el Token
Series de mensajes
firmados con el SCT emitido
Creando conversaciones
seguras
• Los servicios pueden emitir sus propios SCTs
• Ya no hay necesidad de desplegar emisor de SCT
• Hay que tocar un elemento de configuración
• <autoIssueSCT enabled=true />
Como se resuelven los retos
de SOA
• Definir claramente los objetivos de negocio.
• Definir claramente el alcance del proyecto SOA.
• Evitar introducir SOA sin motives reales que lo justifiquen
• Gestionar el proceso

También podría gustarte