miércoles, 4 de diciembre de 2013

Que es SOA?


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.