La arquitectura orientada a servicios (SOA) es un concepto de arquitectura
de software que describe el uso de servicios para proporcionar soluciones a
requerimientos de negocio.
Se define SOA como un paradigma para la organización y la utilización
de capacidades distribuidas que puede estar ofrecido sobre diferentes
dominios. Proporciona una manera normalizada de descubrir, ofrecer e
interactuar con un servicio para obtener los efectos deseados y definidos
por sus precondiciones y poscondiciones.
SOA crea una arquitectura flexible y habilita la implementación de complejas arquitecturas que reflejen la organización. Además, proporciona un mapa
bien definido para la invocación de servicios que habilita la interacción entre
diferentes sistemas (por ejemplo, sistemas propietarios) y servicios externos
(third party services).
¿Cómo funciona la Arquitectura Orientada a Servicios?
Antes de que se empezara a utilizar la arquitectura SOA a fines de los noventa, era muy difícil conectar una aplicación con los servicios alojados en otro sistema, y se necesitaba una integración profunda de punto a punto (conectividad, enrutamiento, traducción de los modelos de datos, etc.). Luego, los desarrolladores debían repetir el proceso para cada proyecto nuevo. Este modelo se conocía como "monolítico", ya que el código para toda la aplicación formaba parte de una sola implementación. Si algo no funcionaba correctamente, había que darla de baja por completo hasta que se solucionaran los problemas, para luego volverla a implementar como una versión nueva.
Dado que la arquitectura SOA expone los servicios utilizando protocolos estándar de red para enviar solicitudes o acceder a los datos (por ejemplo; SOAP, JSON, ActiveMQ o Apache Thrift), no es necesario que los desarrolladores realicen las integraciones desde cero. De hecho, pueden utilizar los patrones llamados buses de servicios empresariales (ESB) para integrar un elemento centralizado y los sistemas de backend, y ponerlos a disposición de todos como interfaces de servicios.
En la arquitectura SOA, los servicios se comunican por medio de un sistema sin conexión directa. Se trata de un método para interconectar los elementos en un sistema o una red, de manera que puedan transmitir información o coordinar un proceso sin depender tanto unos de otros. Como consecuencia, se crea una nueva aplicación.
Ventajas de la Arquitectura Orientada a Servicios
- Comercialización más rápida y mayor flexibilidad: La posibilidad de reutilizar los servicios que ofrece la arquitectura SOA agiliza y simplifica el proceso de ensamblaje de las aplicaciones. Los desarrolladores no se ven obligados a empezar siempre desde cero, como es el caso con las aplicaciones monolíticas.
- Uso de la infraestructura heredada en los mercados nuevos: La arquitectura SOA permite que los desarrolladores tomen las funciones de una plataforma o un entorno y las amplíen e implementen en otros.
- Reducción de los costos gracias a una mayor agilidad y un desarrollo más eficiente.
- Mantenimiento sencillo: Dado que todos los servicios son autónomos e independientes, se puede modificar y actualizar cada uno cuando sea necesario, sin afectar al resto.
- Escalabilidad: La arquitectura SOA posibilita la ejecución de los servicios en varios lenguajes de programación, servicios y plataformas, lo cual aumenta la escalabilidad de forma considerable. Además, utiliza un protocolo de comunicación estandarizado para que las empresas puedan disminuir la interacción entre los clientes y los servicios, lo cual permite ampliar las aplicaciones con menos presiones e inconvenientes.
- Mayor confiabilidad: La arquitectura SOA genera aplicaciones más confiables, ya que es más fácil depurar servicios pequeños que un código de gran volumen.
- Gran disponibilidad: Las instalaciones de la arquitectura SOA están disponibles para todos.
Principios de la Arquitectura Orientada a Servicios
Después de conocer algunas de las ventajas que proporciona SOA debemos entender o por lo menos tener un conocimiento básico en cuáles serían los principios en lo que está basado este marco de diseño:
- Contratos estandarizados: Esto apunta a que todos los servicios cumplan con un estándar de diseño y estén en un mismo inventario de servicios.
- Bajo acoplamiento: lo que permite que puedan ser reusables por diferentes consumidores.
- Abstracción: Sólo contienen la información esencial, sin necesidad de detallar lo que publica el contrato.
- Reutilización: corresponde a todos los servicios con lógica agnóstica, donde puede ser fácilmente reutilizada en diferentes contextos (Proyectos).
- Autonomía: Ejerce un autocontrol sobre el entorno subyacente (Sin dependencias).
- Ausencia de estado: Permite saber si el estado de la información de un servicio esta activa o pasiva.
- Descubribilidad: Es toda la metadata que permite que un servicio pueda ser descubierto e interpretado.
- Composición: Permite formar una lógica más compleja a partir de varios servicios.
Implementación de Servicios basados en la Arquitectura Orientada a Servicios
Cuando describimos la arquitectura orientada a servicios, por lo general nos
referimos a un conjunto de servicios que se despliegan sobre Internet o intranet utilizando servicios web.
Existen diferentes estándares asociados a los servicios web como XML, HTTP,
SOAP, WSDL, UDDI o REST, XML y JSON, aunque SOA no se limita solo a estas
especificaciones. Se puede diseñar un sistema que siga un paradigma orientado a servicios y aplicar un perfil tecnológico diferente del habitual uso de estándares.
En un entorno SOA, los nodos de una red publican sus recursos disponibles a otros participantes como servicios independientes que son
accesibles de una manera estandarizada. Muchas definiciones de SOA
identifican SOA con el uso de servicios web basados en SOAP (WS - *) y
WSDL en su implementación, pero es posible implementar SOA usando
cualquier tecnología basada en servicios.
Hay varios estilos para implementar servicios, las dos familias de servicios web mas usuales son: los servicios web basados en SOAP y
WSDL (WS - *) y los servicios web basados en recursos (RESTful web services).
Ejemplo de la Arquitectura Orientada a Servicios
Un ejemplo de aplicación orientada a servicios podría ser una aplicación B2B
de una gran empresa de la automoción (fabricante de vehículos) que ofrece
sus productos con la información y las posibilidades de personalización de
cada uno.
Por otro lado, un concesionario multimarca, que puede vender vehículos de
diferentes fabricantes o marcas, puede disponer de una aplicación web que
muestre a sus clientes (B2C), con la identidad corporativa del concesionario,
la información de los vehículos (de las diferentes marcas) con las opciones de
personalización. La aplicación del concesionario accederá a los servicios que
ofrece la aplicación B2B del fabricante (u otros fabricantes) para obtener la información de los vehículos, que posteriormente será presentada a los usuarios
con el valor añadido que ofrecen los concesionarios.
Servicios Web basados en SOAP (WS - *)
Un servicio web basado en SOAP es un sistema de software identificado por
una URI, cuyas interfaces públicas y enlaces se definen y describen usando
XML. La definición puede ser descubierta por otros sistemas software, y estos
sistemas suelen interactuar con el servicio web de la manera prescrita por la
definición, usando mensajes basados en XML por medio de protocolos estándar de Internet. En definitiva, un servicio web expone su funcionalidad a posibles consumidores en una URI y proporciona mecanismos para invocar sus
operaciones de manera remota (a través de Internet). El servicio web se puede
implementar en cualquier lenguaje y en cualquier plataforma. Los servicios
web utilizan una serie de especificaciones como SOAP, WSDL y UDDI, que se
describirán a continuación.
SOAP es un protocolo que permite la interacción con servicios web
basado en XML. La especificación de SOAP incluye una sintaxis para
definir los mensajes, reglas de codificación y convenciones para representar los RPC.
Las especificaciones de servicios se pueden hacer utilizando WSDL.
WSDL describe dónde se localiza un servicio, qué operaciones proporciona, el formato de los mensajes que deben ser intercambiados y cómo
se invoca el servicio, además de proporcionar información adicional.
0 Comentarios