viernes, 14 de abril de 2017

SOLUCIÓN AL MAL ENTENDIMIENTO DE CONCEPTOS SOA


Buen día luego de un tiempo regreso a escribir un poco sobre un tema que considero importante y que hace unos días, conversando con algunos compañeros, he notado que persiste la problemática y/o desconocimiento de muchos conceptos que derivan de SOA.

Uno de ellos y el cual me enfocaré en esta oportunidad es sobre el problema que se tiene con los conceptos de: SERVICIO, WEBSERVICE, REST, APLICACIÓN. Mucho colegas ingenieros ya sean Consultores, Arquitectos, etc, utilizan estas definiciones muy por usar, aparentemente sin conocer la realidad de cada uno y a que está enfocado, y lo que hacen es por ejemplo para hablar de un SERVICIO, mencionan WEBSERVICE, o para hacer referencia a un WEBSERVICE de un tipo específico lo llaman como APLICACIÓN y eso está realmente mal. 

El objetivo de este artículo es justamente dar a conocer las diferencias entre estas definiciones, para que los que aún tienen problemas con dichos conceptos, sepan aplicarlos correctamente al explicar y/o graficar sus arquitecturas a futuro.

A continuación detallaré con mis propias palabras, el concepto utilizado a nivel de TELCOS y en realidad el estándar que debería ser utilizado en cualquier rubro respectivamente:

APLICACIÓN:
Una Aplicación se hace referencia al software que interactúa con el usuario por medio una interface gráfica (el Front-end), está puede estar construida en cualquier lenguaje de programación como JAVA o .NET (últimamente: Angular JS + Bootstrap). En una Arquitectura SOA las Aplicaciones son las encargadas de interactuar por medio de la ejecución de sus componentes HTML (Links, Botones, etc), con un 'inventario de servicios' expuestos por detrás.

SERVICIO:
Un Servicio debe ser considerado como un 'activo de la empresa' y puede ser considerado como Servicio  a nivel de tecnología por ejemplo: un WebService, un EJB, un MDB, etc. El objetivo es que cumplan el objetivo para los que fueron construidos y así mismo sigan sobre todo los principios SOA. Finalmente, es importante saber que un Servicio en base a su tipo (muy independientemente del lenguaje en que se desarrolle: JAVA, BPEL) pueden ser de tipo:
  • Presentación: Servicios que dan la cara a la aplicación (No tienen lógica de negocio), redireccionan.
  • Negocio:  Servicios que orquestan a nivel de sus flujos, la lógica de negocio definida para el proceso.
  • Utilitario: Servicios que su objetivo es la reutilización, para el acceso a BackEnd y/o funcionalidades por ejemplo: BD, Plataformas Legacy, Envío de correos, Generación de logs, etc (No tienen lógica de negocio), aquí entran a tallar como parte de este tipo los conceptos de servicios de: ''Conectividad' y 'Datos'. 
WEBSERVICE:
Un Webservice es un tipo de Servicio, pero que cumple los protocolos como: SOAP & REST. Si hablamos del primer protocolo estos pueden manejar: SOAP 1.1 o SOAP 1.2 y manejar su comunicación tipo: Síncrono, Asíncrono y Oneway (XML en realidad). Así mismo, el segundo protocolo puede manejar una comunicación basada en XML & JSON (Formatos distintos) y si cumple en su manejo con las operaciones estándar: GET, POST, DELETE, etc, se le conoce como RESTfull.


De esta manera se ha tratado de explicar de la manera más amigable los diferentes conceptos SOA que usualmente generan controversia en su entendimiento.