lunes, 16 de junio de 2008

SOA (Arquitectura Orientada a los Servicios)

Hola a todos!!!, hace un tiempo atrás, para ser más exacto hace 1 año 8 aprox... Comencé a investigar acerca de este nuevo mundo, SOA, este mundo de como visualizar una arquitectura empresarial desde una forma más transversal, que todo pueda conversar, independiente del lenguaje de programación en el cuál un sistema está escrito.

En un mundo globalizado que avanza tan rápido las empresas requieren desarrollar sistemas o aplicaciones que se adapten a las necesidades actuales de sus negocios, incluyendo interacturar con sistemas legacys, sistemas clientes, areas de operaciones, comercial, etc... Y quien sabe, lo que sea.

En muchos casos las empresas poseen sistemas legacy (antiguos) con décadas de desarrollo, soporte y mantención que en algunos casos no lo pueden reemplazar por su directa dependencia del negocio o riesgos de implementar nuevos sistemas desde cero. Cuál sería la solución para ello, desarrollar sistemas con nuevas interfaces, realizando una abstracción del negocio, funciones,etc... El cuál no todos están dispuesto a hacerlo, dado que no es menor hacerlo, redundar en funcionalidades y reescribir lógica de negocios es un riesgo que no todas las compañías pueden asumir.

Las interacciones entre los clientes, usuarios finales y usuarios de negocio van siendo cada vez más exigente y debemos proveer de sistemas flexibles a los cambios del negocio, desarrollar nuevas formas de interactuar.

¿Que es SOA?
SOA, es nada más que un concepto de arquitectura de software, SOA define la utilización de servicios para dar soporte a los requerimientos de los usuarios.

SOA tiene como por objetivo es que cada sistema o subsistema de las empresas presenten sus capacidades al resto de otros sistemas mediante la utilización de servicios, que permitan usar sus capacidades de una manera homogenea. Además de permitir a las empresas a darse cuenta que pueden realizar negocios combinando tecnología y procesos entregando una estrategia de gobernanza eficaz de la tecnología que gira entorno a la definición y reutilziación de servicios.

Conceptos importantes de SOA.

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 en el 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.




¿Qué es un Servicio en SOA?
Un servicio en SOA es una función de aplicación empaquetada como un componente reutilizable para ser usado en un proceso de negocio.

El servicio proporciona información o facilita el cambio de datos de negocio de un estado válido y consistente a otro.

Un servicio SOA es autocontenido y sin estado.

La implementación concreta de un servicio SOA no es importante. A través de protocolos de comunicación bien definidos, los servicios pueden ser invocados de manera que se hace hincapié en la interoperabilidad y en la transparencia de localización

Beneficios de SOA

El mayor beneficio para las empresas es la agilidad. Las grandes empresas siempre están cambiando: o adquieren compañías, o hay nuevas adquisiciones de productos, o hay afinamiento de procesos de negocios, entre otras. El problema es que la industria de la tecnología tiene sistemas muy rígidos, y es difícil cambiarlos al mismo ritmo de la empresa. SOA otorga la posibilidad de hacer estos cambios de forma más rápida y flexible, agregando más dinamismo. Una empresa más flexible debiera ser una empresa más rentable.

2 comentarios:

Yair Peña dijo...

Hola Leandro:

Algunos estábamos ansiosos por que comenzaras con la publicación de tus artículos sobre tecnologías IT, arquitectura de software, metodologías de desarrollo, análisis y otros.
Espero que dentro de éstos, incluyas los patrones de diseño y una sección de consultas.

saludos y éxito..

cvalen dijo...

Hola Leandro
Super interesante tu articulo de SOA. Espero nos mantengas actualizado de tus experiencias implementando SOAs