spinner

Paradigma SOA, disrupción de arquitecturas orientadas a servicios

En la actualidad, la reducción del time-to-market se ha convertido en un objetivo a alcanzar dentro de casi todas las áreas de una organización, sobre todo en aquellas responsables del desarrollo de productos y/o servicios. Con esto, se busca poner al alcance de los clientes productos o servicios y obtener la mayor cantidad de valor en el menor tiempo posible. El presente artículo se centra en el desarrollo de servicios de software.

Recordemos un poco como se llevaban a cabo los desarrollos a través del modelo waterfall, en donde pasaban días, meses, incluso años en los que no se generaba valor a los usuarios, sin embargo la revolución de la cultura Ágil ha llegado para ayudar a las organizaciones a alcanzar el objetivo de reducir el time-to-market. Ser ágil hoy en día significa adaptarse de forma más rápida a las nuevas y cambiantes necesidades de una organización y de sus clientes. La agilidad pretende resolver problemas integrando a los stakeholders en el desarrollo de software, impulsando la colaboración, los acuerdos y los incrementos de valor en periodos cortos de tiempo, teniendo siempre presente la calidad.

En BBVA Next Technologies hemos visto enormes resultados al aplicar de manera eficiente una cultura Ágil en el desarrollo. Con esta agilidad, el diseño e implementación de aplicaciones con arquitecturas de servicios se han visto beneficiados, logrando mejorar la productividad y la eficiencia de sus consumidores. A la agilidad la acompañan herramientas que soportan este nuevo mindset de trabajo. La combinación de cultura, herramientas, la correcta aplicación de mejores prácticas, patrones de diseño, arquitecturas existentes, el uso de nuevos paradigmas (como microservicios) y plataformas, ayudan a potencializar el desarrollo, a minimizar los tiempos, a optimizar los recursos de las organizaciones y a maximizar la entrega de valor.

Pero, ¿qué es un servicio?

Un servicio en términos coloquiales se define como un conjunto de acciones que satisfacen una necesidad específica. En el ámbito de TI, podemos definir un servicio como una abstracción de funcionalidades de negocio concretas, expuestas a través de una interfaz previamente diseñada y plasmada mediante un contrato (SOA). “Un servicio es una unidad funcional de software para realizar una tarea específica”.

Ahora, ¿qué es SOA?

SOA (por sus siglas en inglés Service Oriented Architecture), puede entenderse como un nexo entre las metas de negocio de una organización con su software. Su papel es aportar flexibilidad, con la automatización de la infraestructura y herramientas necesarias, consiguiendo al mismo tiempo reducir los costes de integración.

Dentro del manifiesto SOA (Thomas Erl, 2009), se define a este como un paradigma que permite la orientación a servicios, con el objetivo de incrementar la agilidad, escalabilidad y efectividad ante los constantes cambios que demandan los negocios.

1. Valor comercial sobre estrategia técnica
2. Objetivos estratégicos sobre beneficios específicos del proyecto
3. Interoperabilidad intrínseca sobre integración personalizada
4. Servicios compartidos sobre implementaciones de propósito específico
5. Flexibilidad sobre optimización
6. Refinamiento evolutivo sobre la búsqueda de la perfección inicial

Ha pasado mucho desde la creación de este manifiesto.

En la actualidad, hablar de SOA y compararlo con nuevas tecnologías orientadas a servicios es tan controversial como hablar de política, religión o deportes. Existen enormes diferencias de opinión y puntos de vista muy válidos. Estas opiniones son generadas y defendidas a partir de la experiencia que cada developer, cada equipo de desarrollo y que cada organizaciones ha adquirido con este paradigma.

Con más frecuencia, SOA es desvirtuada a tal grado de calificarla como una tecnología vieja, monolítica y casada directamente con el patrón SOAP; pero esta es una concepción equivocada si se analiza detenidamente su propósito, el que se menciona en el manifiesto.

Dentro de las muchas opiniones, algunos consideran que el final de SOA ha llegado, que sufre de obsolescencia. Pero nada más alejado de la realidad. En la actualidad, muchos equipos de desarrollo siguen basando su arquitectura de servicios en este paradigma y están aprovechando al máximo los beneficios que SOA ha logrado a con el correr de los años. Además SOA sigue cobrando relevancia dentro de las organizaciones y a continuación se comenta el porqué.

SOA en las empresas

En el mundo enterprise actual, SOA es tan vigente como lo son las nuevas tecnologías. Es innegable que empresas que llevan operando hace años, tienen mucho, o quizá la mayor parte, de sus flujos de negocio bajo este paradigma. (Ñáñez, G. José, 2014)

Conforme una empresa crece, la complejidad inherente también crece y su necesidades dictan el uso de tecnologías y paradigmas diversos. Esta complejidad ha requerido resolverse mediante la integración de SOA con muchas otras tecnologías. ESBs, bases de datos, colas de mensaje, seguridad, monitoreo, auditoría, son algunas de estas tecnologías y funcionan muy bien. Si bien la integración de tecnologías con SOA podría calificarse como compleja (si se compara con la simplicidad ofrecidas por nuevos paradigmas como REST), es indiscutible que la utilidad de SOA para los negocios en la actualidad es mucha.

Si se parte del propósito original de SOA (simplicidad, funcionalidad específica, flexibilidad) y se combina su desarrollo con la cultura y herramientas ágiles, se podrían potenciar el rendimiento de los desarrolladores, se mejoraría la relación y comunicación entre los stakeholders y como se dijo anteriormente se mejoraría el time-to-market.

Pero, “¿por qué esta magnífica tecnología científica, que ahorra trabajo y nos hace la vida más fácil nos aporta tan poca felicidad? La respuesta es esta: simplemente porque aún no hemos aprendido a usarla con tino”. (Albert Einstein, 1879-1955)

REST, una evolución de SOA

Adoptar SOA no es algo trivial, y es en esa «no trivialidad» de SOA que han surgido principios que deben cumplirse para que alguna sea considerada una buena arquitectura SOA. Y esta experiencia en la aplicación de estos principios ha servido como un modelo de desarrollo de nuevos estilos arquitectónicos distribuidos. Un ejemplo de paradigmas beneficiados con esta experiencia son los, hoy de moda, servicios REST.

Imagen 1.1.- Representación SOA

La imagen anterior demuestra cómo SOA (visto como paradigma y no como SOAP), forma la base de diversas tecnologías de servicios, destacándose como gobierno y administración (idea del API management en REST) de los servicios, sin importar la arquitectura y/o patrones de diseño con el cual se desarrollen estos últimos.

Similitudes y diferencias entre SOA y REST

Los microservicios (sobre todo los desarrollados con REST) son un patrón de diseño de software con mucho auge en la actualidad. Se basan principalmente en el desarrollo de funcionalidades y componentes desplegados de manera independiente, comunicados principalmente por API’s agnósticas a su ejecución.

  • Desarrollos basados en SOA son comúnmente catalogados como de mayor latencia y lentos en las comunicaciones.
  • Los microservicios son enfocados a funcionalidades específicas e independientes.
  • SOA ofrece versatilidad en funcionalidades empresariales complejas.
  • Tanto SOA y Microservicios pueden ser coordinados.
  • SOA ofrece buenas bases para mantener un buen gobierno de servicios.
  • La implementación de SOA puede ser costosa.

¿Usar SOA o REST?

“Aprendizaje de camino recorrido como factor de cambio y mejora continua”.

Ambos paradigmas de diseño de servicios han demostrado a lo largo del tiempo, y con su uso, que son excelentes soluciones para proyectos que cubren las necesidades de los negocios.

Ambos paradigmas son válidos, se adaptan fácilmente y son escalables. La implementación de uno u otro depende de las necesidades mismas de la organización (desarrollos nuevos, mantenimiento, integración con otros servicios, etc.), del conocimiento y adaptabilidad de los equipos de desarrollo en estos paradigmas. La experiencia es una pieza clave que ayuda decidir sobre qué paradigma y/o arquitectura implementar los servicios.

Imagen 1.2. Imagen Representativa

Finalmente ¿Hacia dónde nos dirigimos?

Se puede observar que el crecimiento de tecnologías relacionadas con servicios ha sido exponencial, comenzando por SOAP, el conjunto de estándares WS-*, Rest API hasta nuevos enfoques como GraphQL. Y conforme las necesidades de las organizaciones y sus cliente vayan creciendo y evolucionando, las tecnologías también lo harán.

SOA ofrece muchas bondades. No hay duda de su importancia. SOA aporta una enorme enseñanza a nivel organizacional, permite mantener bases firmes sobre la cual una capa de servicios puede ser constituida y deja entre dicho que esté del todo en el inframundo. Lejos de quedar en el olvido, SOA sigue estando presente en la actualidad en su composición, mejores prácticas y gobierno.

Como SOA, REST y otros estilos de arquitectura de servicios (RPC, REST-RPC híbridos) son válidos, eficientes, escalables, desde el punto de vista de cada equipo de trabajo, desde la naturaleza de cada proyecto, desde el ámbito en el que tiene participación una organización que desea implementar soluciones bajo estas arquitecturas. Todo depende.

Existen muchas similitudes entre las «arquitecturas» SOA y REST, lo que deja ver en claro la evolución y cambio de paradigmas en el diseño y desarrollo de arquitecturas de software.

Finalmente la diversificación de estos conceptos, paradigmas, estándares, arquitecturas o plataformas, lejos de generar controversia, deberían generan un enorme aporte para continuar mejorando el desarrollo de servicios dentro de las organizaciones. Si en lugar de la confrontación se buscará una sinergia entre cultura/herramientas agile y los paradigmas de arquitectura de servicios comentados en este artículo, se generaría mayor valor y transversalidad para los clientes que consumen dichos servicios, eligiendo lo que mejor se acople a sus necesidades tecnológicas, se aportaría valor en menos tiempo y se reduciría el time-to-market.

Bibliografía

Thomas Erl. (2009). SOA Manifestó. Febrero, 25, de soa-manifesto Sitio web: http://www.soa-manifesto.org/default.html

Ñáñez, G. José. (2014). Importancia del Gobierno SOA en la Organización. Febrero, 27, de IBM Sitio web: https://www.ibm.com/developerworks/ssa/library/govSOA/index.html

Albert Einstein. (1879-1955). Científico. Febrero, 27, de es.wikiquote.org Sitio web: https://es.wikiquote.org/wiki/Cient%C3%ADfico

 

Imagen principal: Pexels

Las opiniones vertidas por el autor son enteramente suyas y no siempre representan la opinión de BBVA Next Technologies.

¿Quieres saber que más cosas hacemos en BBVA Next Technologies?

Utilizamos cookies propias y de terceros para mejorar nuestros servicios, brindarle una grata experiencia y mostrar a los usuarios publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continúa navegando por este sitio web, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información accediendo a nuestra política de cookies aquí.