Etiqueta: SOA

Arquitectura Orientada a Servicios

Principios de la Arquitectura Orientada a Servicios SOA

Este artículo compila los Principios de la Arquitectura Orientada a Servicios SOA màs importantes, incluye las referencias a material oficial explicando en detalle cada principio.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Manifiesto SOA

El manifiesto SOA es una serie de principios desarrollado por un grupo de profesionales y especialistas en el tema que encontraron la necesidad de describir correctamente en términos de principios las buenas prácticas que los Arquitectos SOA deben cumplir a fin de lograr la adopción SOA con las mejores características.

En las siguientes secciones se abordarán estas buenas prácticas y principios.

Para conocer el manifiesto SOA completo siga este vínculo.

Algunos de los principios fundamentales que se deben considerar en el momento de realizar una Arquitectura SOA son:

  • Los servicios deben ser reusables.
  • Los servicios deben proporcionar un contrato formal.
  • Los servicios deben tener bajo acoplamiento.
  • Los servicios deben permitir la composición.
  • Los servicios deben de ser autónomo.
  • Los servicios no deben tener estado.
  • Los servicios deben poder ser descubiertos.

Una palabra que se usará mucho en las siguientes secciones será servicio y aquí servicio puede referirse a un servicio web pero en general se debe entender como una capacidad que los sistemas ofrecen para realizar alguna tarea, tenga esto en mente cuando lea las siguientes secciones.

2. Servicios y contratos

Cuando un servicio es implementado como un Servicio Web, el contrato del servicio puede estar compuesto por una definición WSDL, múltiples definiciones de esquemas XML, políticas, y documentos complementarios, tal como un ANS.

Contratos de servicios
Figura 1. Contratos de servicios

De forma similar, los contratos deben estar catalogados en inventarios que hagan fácil su ubicación y determinar sus características y usos. Una buena forma de inventariarlos es por proyectos, como se muestra en la siguiente figura, sin embargo debe considerarse la conveniencia de tener diferentes dimensiones para catalogar como aplicaciones o módulos o grupos de funcionalidad.

Inventarios de servicios
Figura 2. Inventario de servicios

Este Principio de la Arquitectura Orientada a Servicios SOA, que impulsa que los servicios tengan contratos impulsa el enfoque del “contrato primero” para la entrega del servicio, por el cual los contratos se desarrollan de forma personalizada (antes del desarrollo de la lógica del servicio) de acuerdo con los estándares de diseño que aplican a todos los servicios dentro de un inventario dado de servicios.

Principio del contrato primero
Figura 3. Principio del contrato primero

3. Centralización de servicios

Este Principio de la Arquitectura Orientada a Servicios SOA asegura que los consumidores tengan un único punto de acceso a la capa de lógica, de esta manera se asegura que los consumidores estén llegando a la versión correcta y publicada del servicio y su contrato, por lo cual la documentación también es importante centralizarla.

Centralización de servicios
Figura 4. Centralización de servicios

4. Acoplamiento de servicios

En general los servicios se acoplan cuando se usan y esto puede dar lugar a un acoplamiento positivo o negativo y esto último tiene que ver con el impacto que se genera en los consumidores especialmente cuando existen cambios.

La siguiente imagen resume los tipos de acoplamiento, su generación y características como Principio de la Arquitectura Orientada a Servicios SOA.

Acoplamiento de servicios
Figura 5. Acoplamiento de servicios

5. Ocultamiento de servicios

Este Principio de la Arquitectura Orientada a Servicios SOA aboga por el ocultamiento deliberado de información del servicio, de tal forma que una mínima cantidad de información sobre el servicio es accedida por el mundo exterior.

Ocultamiento de servicios
Figura 6. Ocultamiento de Servicios

6. Control de acceso a servicios

Los procedimientos de control de acceso son un Principio de la Arquitectura Orientada a Servicios SOA, por consiguiente se pueden convertir en un requerimiento, el cual necesitaría ser orientado sobre un nivel organizacional, a través de la introducción de procesos nuevos o modificados.

Control de acceso
Figura 7. Control de acceso

7. Composición de servicios

La aplicación de este Principio de la Arquitectura Orientada a Servicios SOA puede convertir, efectivamente, a un servicio en una “caja negra”, donde la única información que esté disponible acerca del servicio es la que está publicada en su contrato.

Como resultado de este principio, los diseñadores del programa consumidor del servicio puede no ser conscientes que un servicio está componiendo a otros.

Esto coloca un gran énfasis en la fiabilidad de un servicio (lo cual también plantea cuestiones en cuanto a lo que debería publicarse en los ANS del servicio).

Composición de servicios
Figura 8. Composición de servicios

8. Reutilización de servicios

Dentro de la orientación de servicios y como Principio de la Arquitectura Orientada a Servicios SOA, la reutilización representa una característica primaria y central del diseño que esta ligada a la meta de alcanzar un ROI. Proporcionar los servicios como recursos empresariales reutilizables se relaciona con el patrón de diseño Centralización de la lógica.

Figura 9. Reutilización de servicios

9. Autonomía de servicios

La autonomía de los servicios individuales es especialmente importante para la efectividad de las composiciones del servicio. Debido a que un servicio que compone a otro automáticamente pierde autonomía, el nivel de autonomía entonces también depende de la composición de servicios.

Autonomía de servicios
Figura 10. Autonomía de servicios

10. Artículos de Interés

Servicios Web e Integración entre Aplicaciones

Este artículo aborda los Servicios Web como mecanismo fundamental para la Integración entre Aplicaciones, además establece los protocolos y lenguajes fundamentales utilizados por los profesionales para lograr el objetivo que los sistemas se comuniquen entre si.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. Definición de Servicios Web

El término “servicios web” se refiere a una tecnología que permite que las aplicaciones se comuniquen en una forma que no depende de la plataforma ni del lenguaje de programación. Un servicio web en escencia agrega una capacidad a las aplicaciones para que las mismas interactuen.

Un servicio web describe un conjunto de operaciones accesibles por la red a través de mensajería como XML (aunque no necesariamente sea la única) y  usa protocolos (como HTTP) con el objetivo de describir una operación para ejecutar  acciones o datos para intercambiar información con otro servicio web.

Servicios Web
Figura 1. Servicios Web

Por lo tanto, la finalidad de los Servicios Web son entre otras, las siguientes:

  • Proporcionar mecanismos de comunicación estándares entre aplicaciones, que interactúan entre sí.
  • Proporcionan interoperabilidad y extensibilidad para el intercambio de información entre aplicaciones.

Cuando los Servicios Web se agrupan resulta el concepto denominado API (Application Programming Interface) que permite referirse a todas las capacidades de comunicación que tiene una aplicación con el mundo externo.

En la misma API se definen muchos conceptos que ayudan a la administración, uno de los clave es el versionamiento que permite evolucionar el API sin necesidad de cambiar todos los clientes que consumen en un mismo momento.

2. Ciclo de vida de un Servicio Web

Teniendo presente que un Servicio Web es expuesto por una aplicación y consumido por otra, se da un ciclo de vida en función de los cambios que se produzca, este ciclo de vida se ilustra en el siguiente gráfico.

Ciclo de vida de los Servicios Web
Figura 2. Ciclo de vida de los Servicios Web

3. Lenguajes de intercambio de información XML, JSON, Binario

En general, el intercambio de información se da en algún tipo de formato que la codifique, el formato que primero se puede establecer es el binario pero este implicaría que la interpretación de información tenga un estándar definido, incluso que los sistemas de información se hubiesen programado con un mismo lenguaje para facilitar la interpretación, como lo anterior no ocurre, es decir un mismo lenguaje de programación y estandarización entre sistemas de información, se requiere formatos como XML y JSON.

A continuación se listan algunas características de estos formatos y se muestra una gráfica de ejemplo de cada uno de ellos.

  • El lenguaje extensible de marcado (XML) y JSON (JavaScript Object Notation) permite el modelamiento en un formato legible por el humano.
  • XML como tal es tan potente que permite desde el modelamiento de bases de datos hasta la configuración de sistemas de información, además sirve como superconjunto para otros formatos como HTML muy utilizado en páginas web.
  • JSON es un formato alternativo y similar a XML para representar información más fácil de procesar para una máquina e igualmente sencillo de leer para un humano.
  • En general JSON ofrece menor overheading que XML, es decir menos información para describir cada parte del dato lo cual lo hace mejor para transmisión por redes de datos y procesamiento de máquina.
XML y JSON
Figura 3. XML y JSON

4. Protocolo SOAP

Se trata de un protocolo basado en XML, que permite la interacción entre aplicaciones y a la vez tiene la capacidad de transmitir información compleja. Puede transmitir información a través de HTTP, SMTP, u otros.

El protocolo SOAP (Simple Object Access Protocol) permite la comunicación entre diferentes sistemas intercambiando paquetes formados de forma específica.

El mensaje SOAP está compuesto por:

  • envelope (sobre)
  • header  (cabecera)
  • body (cuerpo)
Paquete SOAP
Figura 4. Paquete SOAP

El protocolo SOAP utiliza un estándar denominado WSDL (Web Service Description Language) para definir las operaciones de un servicio web así como la información que el servicio recibe y la que entrega. La imagen siguiente muestra el detalle técnico de como se encuentra descrito una operación dentro de un servicio web y este a su vez donde se encuentra dentro del XML descrito por el WSDL.

WSDL y las operaciones descritas
Figura 5. WSDL y las operaciones descritas

Para mayor claridad considere que cuando nos referimos a un Servicio Web este puede conformarse por diferentes acciones a realizar cada una de ellas denominada operación (en términos de programación puede llamarse también métodos o funciones) por lo cual el WSDL describe todas estas operaciones del servicio web, note además que cada operación puede tener datos de entrada y salida que son descritos en el mismo WSDL.

Así como existe WSDL, en SOAP se define el concepto de UDDI (Universal Description, Discovery and Integration) son las siglas del catálogo de servicios cuyo registro se hace en XML. UDDI es una iniciativa industrial abierta enfocada en el contexto de los Servicios Web.

UDDI es por tanto un repositorio donde se almacenan los diferentes WSDL que expone una aplicación a fin que sus servicios web puedan ser descubiertos de forma programatica.

UDDI
Figura 6. UDDI

Para consumir un servicio web SOAP se requiere un poco de programación o utilizar un cliente como SOAPUI que permite armar los XML de datos y enviarlos a los servicios web.

Para descargar SOAP UI siga este enlace.

5. Protocolo REST

REST significa “REpresentational State Transfer”, cuya traducción es: “transferencia de representación de estado” y es un patrón de diseño para la implementación de servicios web que utiliza HTTP y en general JSON y no requiere un envelope como el caso de SOAP lo cual mejora el rendimiento sustancialmente.

La palabra clave de REST es que un servicio REST no tiene estado (es stateless), lo que quiere decir que, entre dos llamadas, el servicio pierde todos sus datos. Esto es, que no se puede llamar a un servicio REST y pasarle unos datos (p. ej. un usuario y una contraseña) y esperar que los “recuerde” en la siguiente petición.

REST se ha vuelto muy utilizado por su facilidad de implementación y consumo y hoy día se vuelve un estándar para diseño de aplicaciones y sus API.

Para consumir servicios web REST basta usar el navegador para peticiones tipo GET o para operaciones más complejas puede usar clientes como postman.

Si desea descargar postman siga este link.

6. Protocolo GraphQL

De forma más reciente se tiene GraphQL, que es similar a REST o SOAP sin embargo permite obtener exactamente lo que se necesita, este lenguaje creado por Facebook se encuentra muy orientado al consumo de información por parte del frontend de las aplicaciones, sin embargo también es útil para la integración entre aplicaciones.

Este lenguaje permite realizar las consultas y especificar la data almacenada en bases de datos, con lo cual resulta en aplicaciones muy eficientes y rápidas de construir.

7. SOAP vs REST

Algunas de las consideraciones que debe tener en cuenta cuando hable de SOAP y REST, son:

  • Lenguajes de programación: PHP, Java, .NET, Ruby, Python, etc
  • Intercambios de información: XML, JSON
  • Protocolos: SOAP, REST
  • Exposición de servicios: UDDI
  • Contratos: WSDL, WADL
Comparativa SOAP y REST
Figura 7. Comparativa SOAP y REST

8. Artículos de Interés

SOA Arquitectura Orientada a Servicios

Las Arquitecturas Orientadas a Servicios SOA constituyen un paradigma que si bien no es nuevo, si ha estado vigente durante la revolución informática. Este concepto ha sido estudiado y se ha buscado la forma de implementarlo por muchas empresas a fin de guiar la forma en que se organizan los sistemas de información en una empresa, este artículo explora este concepto.

Si quieres aprender a programar en java sigue este link.

Si quieres aprender a programar frontend en VUE sigue este link.

1. El Software en la Empresa

En general una empresa cuando necesita un sistema a fin de sistematizar o automatizar un proceso tiene varias opciones:

  • Desarrollo a la medida con lo cual el sistema será especifico para la necesidad
  • Comprar un software para la necesidad y adaptar el proceso
  • Utilizar una plataforma low code
  • Utilizar una plataforma estándar con un proceso personalizado como un software tipo BPMS

Hacía los años 80 la premisa era desarrollar en los lenguajes disponible, hoy día aun se conserva esta opción, pero en menor medida. En 90 se realizaba mucha compra de paquete y el proceso se adaptaba para que funcionara de tal manera.

Esto genero que las empresas tuvieran diferentes sistemas de información y fuese necesario pensar en integrarlos, fue aquí en el inicio del milenio donde aparece las tecnologías para integración y marcos de trabajo como EIA (Enterprise Integration Application) y SOA (Service Oriented Architecture) como soluciones, y desde entonces la tendencia a sido hacia la composición que permita que los software vayan de la mano del paradigma de la Gestión por Procesos.

2. Definición de SOA

Aunque pueden existir muchas definiciones de SOA, una buena aproximación se logra desde su impacto, SOA como filosofía define un marco para organizar las aplicaciones o sistemas de información en una empresa.

Algunas de las características que encontramos en la definición de SOA se listan a continuación.

  • Proporciona servicios a clientes por medio de interfaces basadas en estándares, públicas y visibles.
  • Las aplicaciones pueden ligarse a servicios que evolucionan y mejoran en el tiempo.
  • No son necesarias modificaciones a las aplicaciones que consumen los servicios.
  • Proporciona un modelo claro para integrar sistemas de información dentro y fuera de la organización.
  • Constituye la base para la construcción de aplicaciones globales sobre el concepto de interoperabilidad.

Así mismo, la siguiente gráfica muestra que SOA no solo se refiere a Sistemas de Información, de manera que su impacto va más allá y contempla Personas, Procesos, Plataformas y Prácticas.

SOA
Figura 1. SOA

En definitiva podemos definir SOA como: la arquitectura que permite organizar los sistemas de información heterogéneos en las compañías bajo un marco de interoperabilidad.

La siguiente imagen muestra el momento de aparición histórico de SOA, aquí es importante observar que EIA (que básicamente se trata de archivos planos esta limitado y tiene un techo, adicionalmente que SOA aparece antes que BPMS y que hoy día se habla de conceptos como CEP (Complex Event Processing) y Web 2.0.

Aparición histórica de SOA en el tiempo
Figura 3. Aparición histórica de SOA en el tiempo

Finalmente es conveniente observar que SOA puede tener diferentes significados en función de que tipo de profesional este hablando del tema, para mayor detalle de este concepto se deja este artículo al lector.

Ambiguedad SOA

3. Arquitecturas de Aplicaciones

Las arquitecturas de aplicaciones en el marco SOA tienen dos dimensiones importantes: el nivel de desacoplamiento y la estandarización, el desarrollo de estos conceptos en las aplicaciones permitirá obtener uno de los puntos más relevantes de SOA que es la Interoperabilidad.

Las siguientes imágenes muestran como estas arquitecturas han evolucionado con el tiempo, que para este caso coinciden con el eje horizontal.

Arquitecturas de aplicaciones bajo la óptica de SOA
Figura 3. Arquitecturas de aplicaciones bajo la óptica de SOA
Tecnologías de Integración e Interoperabilidad para arquitecturas de aplicaciones
Figura 4. Tecnologías de Integración e Interoperabilidad para arquitecturas de aplicaciones

4. El proceso de Adopción SOA

Cuando una compañía organiza sus sistemas usando SOA debe realizar un proceso denominado Adopción SOA, en este proceso normalmente se sigue una hoja de ruta que incluye revisar y evaluar los siguientes aspectos:

  • Esquema SOA
  • Controles al crecimiento de TI
  • Administración de infraestructura de servicios
  • Gobierno SOA
  • Composición, reutilización y agilidad
  • Control de la guerra de dependencias

En este proceso de adopción, el Arquitecto SOA se puede asimilar al Arquitecto urbanista que busca optimizar los servicios de la ciudad incluyendo movilidad, acueducto, iluminación entre otros, por lo tanto hay que diferenciar de la Orientación al Servicio de la Arquitectura Orientada al Servicio, la palabra Arquitectura define articulación y organización alrededor de muchos conceptos de interes.

El Arquitecto SOA como Urbanista
Figura 5. El Arquitecto SOA como Urbanista

5. SOA y BPMS

En las compañías que se hace uso de estas dos tecnologías se pueden encontrar muchas mejoras en concreto los siguientes aspectos son impactados.

5.1. Productividad

En cuanto a productividad se refiere SOA y BPMS se mezclan para potenciar esta características de las empresas, recordemos también que esta caracteristica se refiere a la cantidad de tareas producidas o ejecutadas de forma correcta (los errores no cuentan!), en general se obtiene:

  • Modelado, diseño, construcción, despliegue y puesta en marcha de los procesos de forma sencilla.
  • Construcción de procesos mediante reutilización de componentes.
  • Catálogo de servicios y acciones ampliable con los componentes de la organización.
  • Minimizar los tiempos de Implantación y Formación.
  • Aplicación de protocolos y estándares de forma racional.
  • Romper la brecha entre el analista de negocio y el equipo de TI.
  • Los analistas “programan” las acciones de cada tarea sin necesidad de bajar a código.

5.2. Flexibilidad

En cuanto a flexibilidad se refiere una empresa debe amoldarse a las condiciones cambiantes de su entorno, por lo cual, la fusión entre SOA y BPMS potencia esta característica así:

  • Aplicación práctica de las tecnologías BPM y SOA
  • La utilización de estándares que faciliten la interoperabilidad tanto interna como externa.
  • Integrable en la estrategia SOA corporativa.
  • Neutralidad tecnológica y multiplataforma.
  • Construcción de procesos sobre servicios corporativos o de terceros.
  • No hay modelos propietarios ni tecnologías propietarias.
  • Separación entre capas de presentación y de aplicación.

5.3. Potencia

La potencia la podemos definir en este contexto como la capacidad de la organización para ejecutar procesos, por lo cual las siguientes características son obtenidas al unir SOA y BPMS:

  • Conjunto completo de módulos para la definición, diseño, construcción, despliegue, ejecución y administración de procesos BPM.
  • Capacidad para diseñar y mantener sistemas de información complejos en términos manejables de tiempo y costo.
  • Actualización a las últimas tecnologías.
  • Adecuación a requisitos funcionales.
  • Capacidad de integrar distintos componentes software y distintas arquitecturas de productos.
  • Capacidad para definir modelos verticales: Administración Electrónica, Banca Electrónica, Captura Documental, CMMI, Calidad.

5.4. Costos

Finalmente los costos, que son uno de los aspectos más importantes a evaluar cuando se introducen Arquitecturas Orientadas a Servicios, algunas de las ventajas que se pueden obtener se listan a continuación:

  • Minimizar los tiempos de implantación y formación.
  • Reducir costos adicionales de desarrollo.
  • Posibilitar la obtención de resultados visibles a corto plazo. Agilizar la incorporación de procesos de negocio.
  • Mejorar los costos de mantenimiento de aplicaciones.
  • Evitar instalar y mantener múltiples productos.
  • Reducir costos de licencias y mantenimiento.
  • Alinear las arquitecturas de la organización a las necesidades del negocio para definir procesos integrados.
  • Acelerar el “Time To Market”.

7. Artículos de Interés

© 2025 ochoscar's blog

Tema por Anders NorenArriba ↑