domingo, 20 de mayo de 2012

Arquitectura Orientada a Servicios SOA


Encontré mucha definiciones sobre lo que es la Arquitectura Orientada a Servicios SOA, desde mi punto de vista, y después de haber leído varios autores,  básicamente podemos decir que es un paradigma, orientado a la forma que debemos ver a una empresa del giro que sea e independiente de los fines que persiga, él como la información interactúa en todos los aspectos de la empresa y como se debe utilizar.

SOA  es una Arquitectura orientada a Servicios, se basa en la independencia de plataformas de hardware, de sistemas operativos y de lenguajes de programación, fortalece la reutilización de los sistemas actuales que se construyeron y se venido utilizando y crea un ambiente en el que los negocios y la tecnología de la información pueden interactuar entre sí.

SOA se fundamenta en:

• Ejecutar rápido, adaptarse al mercado, ganar ante la competencia.
• Reutilizar los componentes de los procesos de negocios.
• Medir los resultados y tomar acción sobre ellos.
• Garantizar resultados que sean repetibles y predecibles.
• Empezar donde sea necesario (área de negocios - área de tecnología).

  

Un ejemplito …   Para entenderle un poco más

Si analizamos bien las tareas de negocios e identificamos aquellas que podemos repetir, esas tareas las podríamos definir como “Servicios”. Verificar un crédito, abrir una cuenta, comprobar existencias, son tareas de negocio repetibles que podemos denominar servicios. Siendo así, cualquier negocio, independientemente de su industria, posee servicios.
Ahora bien, supongamos que cada uno de esos servicios son “bloques  y veamos cada uno de ellos como un “servicio”, que a su vez, es una tarea de negocios. En teoría con SOA podríamos tomar cada uno de esos bloques y unirlos de la manera que quisiéramos, pues todos encajan. Podemos ensamblarlos y volver a ensamblarlos de manera dinámica, a medida que cambian las necesidades de la empresa.


Cada bloque de equivale a una tarea de negocios dentro de una empresa. Un Gerente de X área  podría tomar algunos bloques y el gerente de otra X área otros, y construir algo diferente utilizando los mismos componentes (o Servicios).

La Arquitectura Orientada a Servicios (SOA) consiste en la forma en que unimos esos bloques (Servicios). 

Un poco de historia … Esto si quieren no lo lean. 


La arquitectura orientada a los servicios no es nueva, pero es un modelo alternativo con respecto a los modelos orientados a los objetos estrechamente acoplados de una manera más tradicional que han emergido en las últimas décadas. Al tiempo que los sistemas basados en SOA no excluyen el hecho de que se puedan construir servicios individuales con diseños orientados a los objetos, el diseño total está orientado a los servicios. Dado que permite objetos dentro del sistema, SOA está basado en objetos, pero no está, en su totalidad, orientado a los objetos. La diferencia está  en las interfaces propiamente dichas. Un ejemplo clásico de un sistema proto-SOA que ha estado alrededor por un tiempo es Common Object Request Broker Architecture (CORBA), que define conceptos similares a SOA.
  
Los servicios de Web no son la única forma de implementar SOA. Tal como se explicó anteriormente, CORBA es otra forma y también sistemas Message-Oriented Middleware

De donde salió…

SOA surge de la necesidad de hacer que los sistemas de negocios de IT sean más ágiles con respecto a los cambios en la empresa. Al permitir relaciones fuertemente definidas, si bien implementaciones específicas flexibles, los sistemas de IT pueden obtener las ventajas de los sistemas existentes y, no obstante, estar lista para cambios futuros en sus interacciones.

Que tecnologías los componen

En sí mismo SOA es un concepto abstracto sobre cómo se debe unir el software, como lo mencione en un principio, considero es un paradigma y nace de las ideas y tecnologías implementadas en XML y en servicios de Web para existir en la forma de software. Asimismo, para funcionar con efectividad, también requiere soporte de seguridad, administración de políticas, un messaging confiable y sistemas contables.
  
Esto sí es importante que lo lean

Para establecer un control apropiado de todo ese messaging, así como también para aplicar las necesidades de seguridad, política, confiabilidad y contabilidad, hay un nuevo objeto de software que entra en la escena de SOA. Es el Enterprise Service Bus (ESB), que es responsable del control y del flujo apropiado, y tal vez también de las conversiones de todos los mensajes entre los servicios, usando cualquier cantidad de protocolos de messaging posibles. No se requiere absolutamente el ESB, pero es un componente vital para administrar apropiadamente sus procesos de negocios en SOA. El ESB propiamente dicho puede ser un único motor o aun un sistema distribuido.

Con respecto al desarrollador, las herramientas que usa necesitan conocer las capacidades de SOA y permitirle trabajar efectivamente con objetos de SOA. Esto incluye el proceso de diseñar el modelo de SOA, desarrollando servicios y objetos de servicio, y probar la aplicación de SOA en su totalidad. De este modo, las herramientas del desarrollador deberán estar listas para Service-Oriented Application Design and Development (SOAD).

Tecnologías SOA

SOA puede interactuar con una cantidad de otras tecnologías, pero con respecto a esto el encapsulado y el agregado de componentes tienen un rol significativo. Tal como se indicó anteriormente, un servicio de SOA puede ser un objeto simple, un objeto complejo, una colección de objetos, un proceso que contiene otros procesos, y asimismo una colección entera de aplicaciones que dan un único resultado.
  
Los servicios se pueden implementar en cualquier lenguaje de programación siempre y cuando pueda generar e interactuar con WSDL. SOAP en sí mismo no es un requisito absoluto, pero es un sistema de messaging común. De este modo, los servicios miembros en SOA pueden ser implementados en casi cualquier variedad de lenguaje de programación y plataforma que dé soporte a WSDL.
  
Los servicios de SOA y de Web son independientes de lenguaje de programación, pero el lenguaje Java está entre los principales lenguajes de desarrollo (por eso vemos Java en el propedéutico de Computación, supongo). La disponibilidad de interfaces de Java bien definidas, así como también las abundantes implementaciones de Java de los varios protocolos, le dan a los desarrolladores de Java una ventaja cuando se construye en este modelo.

Salu2