La mejor manera de comenzar a explicar SOA, es explicar qué NO es:
- SOA no es un software, no es un MOM, no es un EAI, aunque una arquitectura SOA puede apoyarse en un conjunto de herramientas como MOMs o EAIs para conseguir su objetivo.
- SOA no es una metodología de proyecto, aunque a la hora de iniciar un proyecto orientado a conseguir una arquitectura SOA en mi empresa, algunas metodologías se ajustan mejor que otras: es preferible seguir un modelo en iteraciones (no confundir con iterativo como UP), como las metodologías ágiles (XP, etc..), que seguir metodologías Waterfall
- SOA no es otra forma de llamar a los WebServices, aunque los webservices son una herramienta válida para conseguir una arquitectura SOA, incluso una arquitectura SOA podría apoyarse en la programación distribuida (DCOM, CORBA, RMI, EJBs...)
¿Qué es SOA – Service Oriented Architecture?
La palabra de moda en los últimos años en el área de
desarrollo de software ha sido SOA – Arquitectura Orientada a Servicios.
¿Pero qué significa SOA en realidad?
Básicamente
SOA es un cambio significativo en la manera en que nosotros diseñamos y
construimos aplicaciones. Esta arquitectura toma la naturaleza abierta
de la Web y la convierte en una nueva manera de pensar acerca de las
arquitecturas de aplicaciones.
SOA significa
integración a través de sistemas diversos. SOA utiliza protocolos
estándar e interfaces convencionales – usualmente Web Services – para
facilitar el acceso a la lógica de negocios y la información entre
diversos servicios. SOA nos brinda los principios y la guía para
transformar el conjunto de recursos de TI de la compañía – los cuales
son por lo general heterogéneos, distribuidos, inflexibles y complejos
- en recursos flexibles, integrados y simplificados, que pueden ser
cambiados y compuestos para alinearse más fácilmente con los objetivos
del negocio. Podemos decir entonces, que SOA no es una herramienta, no
más bien es un conjunto de patrones de construcción de las nuevas
aplicaciones de la empresa – más dinámicas y menos dependientes.
SOA
es la evolución del modelo de programación orientado a componentes, ya
que SOA agrega herramientas de computación distribuida a estas
tecnologías que hemos venido utilizando por años. Podríamos decir que el
cambio más grande es filosófico: en lugar de pensar en el diseño de
aplicaciones individuales para resolver problemas especificos, SOA ve el
software como un patrón que soporta todo el proceso del negocio. Cada
elemento de un servicio es un componente que puede ser utilizado muchas
veces a través de muchas funciones y procesos dentro y fuera de la
empresa. Los servicios se pueden actualizar y escalar conforme sea
requerido, o se pueden cambiar a una librería de terceros, sin afectar
la operación del negocio – esto se da por que el componente clave de SOA
no es la aplicación o el componente en uso si no más bien el contrato
de uso, la interface.
La idea detrás
de todo esto es que es más efectivo trabajar con servicios que con
aplicaciones. Todos los componentes de una infraestructura de TI
tradicional permanecen en una implementación de SOA, pero esta vez en
lugar de que una aplicación soporte una funcionalidad, esta se pone
disponible para todo el negocio.
Esta idea de
aplicaciones como servicios alineadas a los procesos del negocio no es
nueva, solamente que en esfuerzos anteriores se requería mucho esfuerzo
para integrar las aplicaciones heterogéneas, además de que cada uno de
estos esfuerzos tenían su propio API y su forma propietaria de
comunicarse; por ejemplo CORBA y COM+.
Sin
embargo, esta solución moderna que llamamos SOA, toma mucho de estos
esfuerzos y de los estándares abiertos de Internet para posibilitarnos
llevar a cabo esta tarea. Al día de hoy XML se ha convertido en la
lengua de facto entre máquinas, lo que permite a los arquitectos ligar
nuevas herramientas con aplicaciones “legacy”, y desarrollar el B2B –
Business to Business - alrededor del mundo. Esta intercomunicación no
es solo entre componentes, ya que incluso se pueden describir procesos
de negocio con documentos XML, utilizando lenguajes de orquestación como
BPEL.
A nivel del servicio, la información se
maneja como mensajes XML, definidos por un esquema XML, mientras que las
interfaces de la aplicación pueden ser servicios web. XML y Servicios
Web son soportardos por Java y .NET, y estan empezando a ser soportadas
por muchas más tecnologías.
En la siguiente
imagen podemos ver la composición de una arquitectura orientada a
servicios y la interacción de sus diversos componentes. En esta imagen
faltan los elementos de infraestructura tales como el ESB, BPEL, etc.
En esta imagen se puede ver que una arquitectura orientada a servicios agrega una interface de servicios ( capa lógica de servicios ) sobre los objetos de negocio y sobre las aplicaciones legacy que están alineados con los procesos del negocio. Estos objetos de negocio a su vez tienen una capa de acceso a datos la cual es la que se encarga de abstraer el acceso a las diversas fuentes de datos que utiliza la empresa.
FUENTES DE INFORMACION
http://www.theserverlabs.com/folletos/Folleto%20SOA
No hay comentarios:
Publicar un comentario