Que es Service-oriented architecture (SOA)

SOAEn los últimos años hemos escuchado haber de SOA por todas partes, SOA aqui SOA alla y SOA por todas partes, Pero que es realmente SOA ya que en ocasiones confundimos SOA con alguna tecnología o algún producto. Sin embargo no es mas un tipo de arquitectura de software la cual esta diseñada para los ambientes de integración, Pero antes de entrar a detalle me gustaría hacer un poco de historia.

Antes del debut de SOA teníamos la Arquitectura de ManFrame y Cliente-Servidor las cuales no quiero decir que sean obsoletas o pasadas de moda ya que cada un ofrece ventajas y desventajas que pueden ser decisivas según nuestro escenario de negocio.

Mainframe

Bien, ManFrame es una arquitectura que su enfoque central radica en un servidor super potente capas de hacer miles de transacciones por si sola y administrar miles de usuarios concurrentes desde una única ubicación. Esto desde luego es una gran ventaja pero tenia el gran inconveniente que todo es centralizado.

Cliente-Servidor

A diferencia de Mainframe el cliente servidor es una arquitectura mas fácil de encontrar ya que muchos de los aplicativos que usamos en muestra computadora la utilizan, Este tipo de arquitectura se caracteriza en que una parte del programa se encuentra instalada en nuestra computadora y esta otra parte llamada Servidor la cual es otro software que atiende las peticiones le cliente por medio de un protocolo como TCP/IP. Esta arquitectura ayuda en que parte del procesamiento se realiza por parte del cliente pero para almacenar o realizar consultas en tiempo real se comunicaba con el servidor.

Service-oriented architecture (SOA)

Como observamos en las arquitecturas anteriores estas se enfocan únicamente en si mismas sin importarles mucho la forma en la cual nos comunicamos con otras aplicaciones, ya que cada una tenia un protocolo único de comunicación  y era difícil interactuar con otros sistemas.

Sin embargo SOA es diferente ya que esta diseñado no solo para complacer al sistema al cual estamos diseñando si no también ve un poco mas y esto es por que se preocupa por la forma en que este sistema se deberá comunicar con los demas, ya sea consumiendo servicios de proveedores externos e internos o simplemente exponiendo servicios para que otras aplicaciones se puedan comunicarse con el.

La principal ventaja que ofrece SOA es que su activo principal no son las aplicaciones o sistemas si no los Contratos que expone y es que con una definición correcta de un contrato podríamos incluso cambiar el aplicativo por otro y nadie se diera cuenta. Un contrato define la forma en que se realizara la comunicación, establece el formato de entrada del servicio y de salida lo que ayuda a que cualquier cliente pueda interpretarlos sin ningún problema.

Otra de las ventajas que ofrece SOA es que utiliza protocolos de comunicación Estándar como WebServices lo cual le permite comunicarse con cualquier aplicación sin importar en que lenguaje este desarrollada.

Cada servicio que se desarrolla en SOA se realiza bajo la premisa de que sera reutilizado al máximo y que sera de utilidad para otros sistemas por lo cual cada servicio deberá ser planeado con cuidado para que sea lo mas simple posible y a si aumentar el grado de re-utilización que tendrá.

A continuación les dejo un esquema muy simple de como la arquitectura SOA nos puede ayudar en las integraciones de los diferentes sistemas que se encuentran en una empresa.

SOA

 

Del lado derecho tenemos las aplicaciones a las cuales necesitamos comunicarnos para realizar un proceso de integración y cada una tiene expuesto un conjunto de servicios, En el medio tenemos la capa de orquestación donde creamos servicios de integración a partir de otros servicios existentes. y del lado izquierdo tenemos las aplicaciones las cuales requieren una integración con algún sistema interno o externo.

 

En resumen SOA es una arquitectura diseñada para la integración de todos los distintos aplicativos que conforman la infraestructura del cliente, pero también busca la integración con aplicativos externos como de proveedores.

 

Si quieres conocer mas de SOA y de Integraciones con BPEL aquí te dejo algunos links de otros de mis Post.

Que es una composición SOA

Que es la virtualizacion de servicios

Como crear un BPEL

Artículos relacionados

Concurrencia VS Paralelismo A pesar de que hoy en día casi todas las aplicaciones trabajan con múltiples hilos de ejecución y que los programadores saben utilizarlos, muy poca ge...
SOAP vs REST ¿cual es mejor? SOAP vs REST es una comparación que muchos programadores o incluso arquitectos de software suelen preguntarse a la hora de desarrollar las API para su...
Webhook una alternativa al Polling Los Webhook solucionan una de las problemáticas más comunes en la integración de aplicaciones, que es la obtención de actualizaciones en los sistemas ...

Oscar Blancarte

Ideológico, Innovador y emprendedor, Padre, Tecnólogo y Autor, amante de la ciencia y la tecnología en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultoría. Amante de la programación y el Ajedrez.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *