La
Arquitectura Orientada a Servicio no es una forma nueva de crear soluciones a
problemas del dominio, sino más bien un paradigma de organización que permite
obtener mayor valor de las capacidades, tanto poseídas como controladas por
otros. SOA no provee elementos del dominio de una solución que no exista sin
SOA. El objetivo en SOA es hacer que cada subsistema de una empresa presente
sus capacidades a través de servicios adecuados, que permitan usar las
capacidades de una manera homogénea. Esto evita crear interfaces para cada par
de sistemas que requieran comunicación. La filosofía atrás del concepto es que
cada sistema brinda servicios a clientes desconocidos, por lo que se debe hacer
hincapié en las capacidades que se ofrecen y no en quién las va a usar. Esta
filosofía de servicio permite crear funciones que sean utilizables por
distintos clientes; simplemente deben conocer la descripción del servicio para
poder utilizarlo.
Conceptos importantes en SOA
Los siguientes conceptos son indicados
por Oasis como principales, en el contexto de Arquitecturas de Servicios.
Pueden ser implementados de distintas formas, pero deben estar presentes para
que la orientación a servicio sea factible.
Visibilidad
Para que el consumidor y el proveedor de
un servicio puedan interactuar deben, primero, poder ‘verse’. La visibilidad
implica conocimiento (el iniciador debe conocer la existencia de las
otras partes), voluntad (los participantes deben estar predispuestos a
interactuar) y alcanzable (los participantes deben tener un medio de
interacción). El conocimiento requiere que el proveedor de un servicio sea
capaz de hacer llegar los detalles del servicio (descripción y políticas)
a potenciales consumidores. Se suele lograr por medios de publicación y descubrimiento.
La voluntad para interactuar, de parte de un proveedor de servicio, puede ser
sujeta a políticas (por ejemplo, puede requerir autenticación y autorización).
Un consumidor y un proveedor de servicio pueden tener el conocimiento y la
voluntad para proceder, pero si no son alcanzables, no podrá haber interacción.
Interacción
La interacción implica realizar acciones
frente a un servicio; generalmente involucra el intercambio de mensajes, pero
también puede significar un cambio en algún estado compartido. Para permitir la
interacción, se debe contar con un modelo de información (establecer el formato
de la información intercambiada) y un modelo de comportamiento -acciones
invocadas frente al servicio (modelo de acción) y los aspectos temporales
(modelo de proceso) de interactuar con el servicio.
Efectos del mundo real
La ejecución de un servicio produce un efecto en el mundo real,
que puede ser un cambio en un estado compartido o un dato en la respuesta. Un
estado compartido es aquél al que tiene acceso tanto el proveedor como el
consumidor del servicio. Las acciones internas que se realicen al ejecutar un
servicio son, por definición, privadas y fundamentalmente desconocidas; es
decir, un consumidor no sabe sobre el funcionamiento interno del proveedor y
viceversa. Esto permite limitar las dependencias entre partes a las interfaces
de interacción (mensajes, formatos de datos, etc.). Los efectos de un servicio
deben estar especificados en su descripción.
Principios básicos de SOA
Los siguientes son objetivos generales
buscados en Arquitecturas Orientadas a Servicios:
Límites son explícitos
Los servicios pueden estar distribuidos
en diferentes zonas geográficas, pueden afectar diferentes dominios (de
tecnologías propietarias) y normalmente se ejecutan en entornos diferentes.
Bajo este contexto, los servicios se ejecutan a través del intercambio de
mensajes, confiriendo a la implementación del servicio la problemática
intrínseca de resolver cómo ejecutar la función que corresponda y a través de
qué protocolo (RPC, APPC, TCP, etc.).
Servicios autónomos
·
Independencia en el deployment de los servicios
·
Control de excepciones
·
Control de integridad de los resultados de la ejecución del servicio
·
Seguridad (e.g. control de los datos de entrada, mensajes malformados)
·
Control de identidad
·
Autorización
·
Autenticación
·
Otros servicios de infraestructura (transacciones, timeout, etc.)
Compartir esquemas y contratos
Los servicios no comparten clases (con
datos y comportamiento), comparten schemas (datos) y contratos
(comportamiento). Mensajes de entrada y salida que corresponden a la definición
de los schemas.
Compatibilidad de servicios basada en políticas
La compatibilidad estructural está determinada por los schemas y contratos. La compatibilidad semántica esta determinada por la confirmación de diferentes políticas (aspectos): autenticación, autorización, validación de datos de entrada. Todas las condiciones deben darse para garantizar la ejecución normal del servicio.Ventajas de implementar SOA
Respuesta rápida a nuevas necesidades de negocio
Al tener todas las capacidades del negocio representadas en servicios, cuando se necesita una nueva interacción, simplemente se pueden utilizar los servicios existentes por medio de una nueva colaboración, limitando los desarrollos a capacidades nuevas. Se asume que la creación de una colaboración de servicios es mucho más sencilla que el desarrollo de las capacidades totales de los servicios e, incluso, es más simple que hacer interfaces propietarias para la colaboración. La implementación de SOA debe ser adecuada para que esta asunción sea realidad.Reducción del costo de desarrollo de IT
El hecho de que se necesite menos desarrollo de integración,
reduce los costos de IT que estarían destinados a este fin. A su vez, reduce el
nivel de acoplamiento, por lo que un cambio en un servicio no afectará a los
consumidores. Mejora la definición de los roles de desarrollo. Al implementar
cada función de negocio como un servicio diferente, permite delimitar mejor las
responsabilidades de cada programador. Facilita el testeo. El bajo acoplamiento
y la granularidad permiten un testeo más específico de las funciones. Mejora el
mantenibilidad. Favorece la reutilización y mejora la productividad. Favorece
el desarrollo en paralelo.
Capacidad de integrar a clientes y socios
Una gran ventaja de SOA es que está estandarizado. Existen
varias especificaciones de SOA, lo cual permite que distintas empresas puedan
publicar parte de los servicios de su negocio para que clientes, proveedores y
socios puedan acceder a ellos. En particular, Web Services es adecuado para
esto, ya que está basado en tecnologías ubicuas (HTTP, XML, etc.). Existen
además muchas herramientas útiles que lo soportan.
Capacidad de generar nuevos modelos de negocios
Con la aparición de herramientas de modelado de negocio e
integración de servicios, se pueden analizar nuevos modelos de negocios, ver
cómo los servicios actuales los soportan y ver qué necesidades deben
completarse.
Alinear objetivos de IT a objetivos de negocio
La agilidad para responder a nuevas necesidades de negocio hace
más sencillo mantener alineados los objetivos de IT con los del negocio. Se
logra un mapeo más directo entre los procesos de negocio y los sistemas. La
composición de servicios permite replicar los procesos del negocio del mundo
físico en el mundo virtual, de un modo más directo y natural.


No hay comentarios.:
Publicar un comentario
Nota: sólo los miembros de este blog pueden publicar comentarios.