White Paper

WHITE PAPER

07/2016

Convergencia soa – api. Estrategia y tácticas.

por Chris Haddad

1. Introducción

A pesar de que todo el mundo reconoce que la adopción de una Arquitectura Orientada a Servicios (SOA) y las API son los enfoques más apropiados para un gran número de desarrollos y soluciones en sistemas empresariales, las curvas de aprendizaje y adopción pueden ser muy pronunciadas. Para obtener beneficios a nivel corporativo, los equipos TI deben entender los objetivos de negocio, definir la visión adecuada tanto SOA como API, describir cómo se implementarán los objetivos de negocio y las API públicas además de definir las prácticas de gobierno de los servicios.

SOA es una disciplina de diseño que se centra en la implementación de funcionalidades compartidas como servicios reutilizables. La principal premisa SOA es mantener una separación clara entre lo concerniente a la implementación de funcionalidades compartidas en forma de servicios y las aplicaciones que los consumen.

Este enfoque de diseño permite a cualquier tipo de aplicación consumir los servicios. Se ocultan los detalles de implementación de la capa de servicios a las aplicaciones que los consumen y permite una mayor flexibilidad y una mayor capacidad de adaptación de los sistemas. La unidad básica del diseño en arquitecturas SOA es un servicio reusable que implementa una pieza de funcionalidad separada.

Los servicios exponen sus funcionalidades mediante una interfaz bien definida. Cualquier aplicación que requiera esa funcionalidad puede consumir el servicio usando implementaciones estándares por lo que un único servicio puede ser utilizado en múltiples aplicaciones sin necesidad de que éste sufra ninguna modificación. En la actualidad las APIs son un componente estratégico para dar sentido a una iniciativa SOA completa.

Cuando los equipos de desarrollo publican las APIs separan el interfaz de la implementación del servicio. La administración de los endpoints de cada API son proxis ligeros que permiten reforzar la seguridad, monitorizar el uso y limitar o modular el tráfico. El proxy API permite una clara separación entre el contrato del interfaz del consumidor y la implementación del back-end del servicio.

¿Qué proporciona una API correctamente administrada?

  • Está activamente anunciada y preparada para que las aplicaciones se subscriban.
  • Está disponible con un acuerdo asociado y publicado a nivel de servicio (SLA).
  • Es Segura, incorpora Autenticación y Autorización.
  • Se puede monitorizar y monetizar gracias a herramientas de análisis.

2. Objetivos de negocio SOA y API.

En el pasado cuando nació la SOA-manía, los defensores de esa nueva corriente de diseño y desarrollo de sistemas distribuidos atribuían multitud de beneficios en aspectos de negocio y perspectivas técnicas. Los beneficios son reales, pero sin embargo, en la mayoría de ocasiones difíciles de obtener, ya que requieren un gran cambio de mentalidad en los departamentos TIC y en la mayoría de aspectos corporativos. En la actualidad sorprendentemente los defensores de las API, en sus argumentaciones expresan beneficios similares a aquellos que se otorgaban a SOA, pero más enfocados a la ejecución.

3. Perspectivas de negocio SOA y “ecos” de la Economía API.

El paradigma SOA puede ser usado como estrategia para alinear los activos de TIC con las capacidades, los recursos y los procesos de negocio. El enfoque principal de la filosofía SOA es el intercambio y la reutilización para optimizar el uso de los activos disponibles TIC en la empresa. En origen algunas de las promesas de SOA eran desconcertantes, ya que prometía la reinvención de las interacciones business-to-business, permitir mejores relaciones entre partners y dar soporte a las redes de procesos. Los servicios externos fueron vistos como un mecanismo para mejorar aspectos económicos empresariales mediante la reducción de costes de integración e interacción, facilitando la incorporación de capacidades de negocio externas, permitiendo la especialización en las aplicaciones empresariales y creando soluciones de alto valor añadido para extender los procesos propios de la empresa a través de una red de socios1.

El actual negocio de la Economía API2 recoge las propuestas de valor de negocio que ofrece SOA a lo que se le añade lecciones ya aprendidas anteriormente sobre SOA, y usa tendencias tecnológicas populares en la industria cómo REST, Internet of Everything, móvil y Servicios en la nube.

4. Perspectivas técnicas SOA y especialización API.

Desde una perspectiva técnica, una arquitectura SOA debe presentar tres principios clave en su diseño; orientación al servicio, separación clara de conceptos y bajo acoplamiento. La orientación al servicio se mide por la reutilización de servicios, la granularidad y la simplicidad arquitectónica.

La separación de conceptos la podemos evaluar mediante pruebas de separación entre la lógica de negocio y la infraestructura, entre la interfaz y la aplicación y entre la interfaz y las competencias. Por último un débil acoplamiento se evalúa por la interoperabilidad, el control de las transacciones, y la mediación de las interacciones.

Superficialmente las API REST son simplemente una versión especializada de servicios web y proporcionan beneficios técnicos similares. Tanto el diseño de la API REST como de los servicios SOA tienen la intención de exponer funcionalidades individuales a través de una interfaz bien definida. El endpoint de una API y el de un servicio sirven ambos como una pieza core de diseño, y los equipos de desarrollo ofrecen soluciones técnicas mediante el acceso, la agregación, la composición y la orquestación de las interacciones entre ellos.

Una solución exitosa y escalable ya esté cimentada en API o en servicios SOA requiere una óptima infraestructura mensajería, gestión de niveles de servicio y seguridad.

5. Cisma entre API y SOA y la Reconciliación pragmática

A pesar de que ambas propuestas API y SOA tienen objetivos de negocio y técnicos similares, se está produciendo una ruptura cada vez más evidente entre las dos tecnologías. El cisma desde el punto de vista pragmático API REST y SOA está causado por las diferencias en el enfoque estratégico.

Los equipos de desarrollo ‘que hacen REST’ y ‘construyen APIs’ habitualmente se enfocan en superar las barreras de adopción tecnológicas y de negocio mediante build-outs incrementales y demos concretas de casos de uso del core de negocio sin la introducción de complejidades (y complicaciones) tecnológicas. En cambio los equipos SOA comúnmente se centran en: la obtención de eficiencias a escala para lograr la estandarización de los sistemas empresariales, la centralización de las decisiones, y en satisfacer complejos requisitos no funcionales.

6. Enfoque Pragmático REST API

REST es un estilo de arquitectura de desarrollo de sistemas que impone una serie de restricciones entre las interacciones de servicios. Todas juntas, estas restricciones permiten que emerjan propiedades como la simplicidad, la escalabilidad, la capacidad de modificación, la fiabilidad, la visibilidad, el rendimiento y la portabilidad. Los Sistemas que satisfacen estas restricciones son RESTful. Un diseño RESTful puede fomentar muchos beneficios:

  • Hacer que los datos y los servicios sean accesibles al máximo.
  • Entrada en el entorno, sencilla y con pocas barreras.
  • Ampliación del alcance dirigido a la mayor audiencia posible.
  • Hacer que los servicios/API sean consumidos por el mayor número de agentes posibles.
  • Hacer que datos y los servicios evolutivos.
  • Extender el sistema en tiempo de ejecución.
  • Alterar los recursos sin impactar a los clientes.
  • Dirigir el comportamiento del cliente dinámicamente.
  • Hacer los sistemas escalables, fiables y de alto rendimiento.
  • Simplificación.
  • Cacheable.
  • Atomización.

Mientras que los beneficios del diseño RESTful soportan los objetivos SOA, el foco de la estrategia pragmática REST difiere de muchas iniciativas SOA. Los equipos de diseño de REST API se centran en adopción de escenarios bottoms-up , formatos y protocolos accesibles (p.ej. HTTP, JSON, DNS), definición de interfaces permisivas y modelos de interacción simples.

7. Enfoque Pragmático SOA

El enfoque pragmático SOA se centra en los patrones de la orientación a servicios para aumentar el valor de los recursos del software.

Los fundamentos de los patrones de la orientación a servicios son:

  • Compartir y reutilizar recursos.
  • Consolidar las funcionalidades redundantes para conseguir un menor número de partes “transportables”.
  • Conformar los proyectos pensando en estándares comunes y buenas prácticas.

La aplicación estos tres patrones reducirá la complejidad dentro de un entorno TI y proporcionará mayor agilidad de desarrollo, es decir, la habilidad de construir aplicaciones en el menor tiempo posible y modificarlas rápidamente para redirigir los cambios requisitos que se produzcan. El patrón de orientación a servicios fuerza a los equipos de desarrollo a evaluar como las capacidades de los recursos de software satisfacen las necesidades de los intereses de negocio. Los equipos con enfoques SOA Pragmáticos ofrecen capacidades de negocio útiles, reducen las fricciones en la adopción del sistema y proporcionan valores de servicio excepcionales.

Estos equipos no predican difíciles buenas prácticas. Simplifican su adopción haciendo mentoring y entregando el gobierno del servicio de manera automatizada que hace fácil de hacer al equipo, lo que hay que hacer. Los equipos de SOA “pragmático” son conscientes de las carencias en las capacidades que pueden sufrir sus integrantes y los obstáculos y dificultados en la adopción de las tecnologías, y es por este motivo que habitualmente ofrecen packs de “aceleración” (infraestructuras, herramientas, frameworks, bloques de construcción de API/service) que reducen la formación, aumentan la “auto-adopción” y, por lo tanto, aceleran la entrega del proyecto.

Para conseguir esos resultados se debe de equilibrar la balanza entre el gobierno “de negocio” y la autonomía del proyecto. En lugar de erigir barreras de registro y desarrollo, estos equipos tienen éxito cuando promueve el desarrollo, intercambio y adopción del servicio mediante la introducción de mecanismos que promuevan su uso, que medien las interacciones, que endurezcan los niveles de servicio y que faciliten la adopción vía el autoservicio. Estos mecanismos se reconocen como el núcleo de la gestión de la API.

8. La reconciliación pragmática

REST es diferente a, aunque no incompatible con, SOA. Los servicios pueden ser RESTful, y los recursos RESTful pueden ser servicios. Como SOA, REST es una disciplina arquitectónica definida por un conjunto de principios de diseño, y también impone un conjunto de restricciones. REST usa un modelo centrado en los recursos el cual es lo contrario a un modelo centrado en los objetos, es decir, comportamientos encapsulados por recursos. En REST cada “cosa” de interés es un recurso. Cuando se modela un servicio RESTful (aka API), las capacidades del servicio están encapsuladas y expuestas como un conjunto de recursos.

Debido a que SOA presenta una arquitectura cuyo objetivo es contrario a un portfolio de sistemas legacy TI de largo recorrido, se convierte en un viaje arquitectónico a largo plazo, y no una iniciativa puesta en práctica para obtener un resultado a corto. A causa de las capacidades de interconexión interna y externa de las APIs, éstas pueden proveer una plataforma para las empresas sponsors TI interesadas en renovarse y una ejecución empresarial pragmática.

9. Definiendo una mentalidad apropiada SOA y API

SOA representa un cambio de paradigma significativo en las técnicas de desarrollo de aplicaciones. SOA es una disciplina de diseño de software en la cual aplicación y la funcionalidad de la infraestructura están implementadas como como servicios compartidos y reusables. Cada servicio implementa una tarea concreta, y cada aplicación que necesita realizar la tarea usa el servicio compartido para hacerlo. Los equipos de desarrollo crean aplicaciones ensamblando los servicios apropiados, posteriormente se implementan las funcionalidades de negocio como servicios, para que una organización, sus partners, y sus clientes puedan ser capaces de mezclar y encontrar esos servicios y rápidamente crear una aplicación que soporte requisitos de negocio cambiantes. La economía API y los mensajes API negocio/desarrollador refuerzan la propuesta tradicional de valor de SOA. Los beneficios de usar la plataforma WSO2 para implementar estos servicios incluyen:

Debido a que SOA presenta una arquitectura cuyo objetivo es contrario a un portfolio de sistemas legacy TI de largo recorrido, se convierte en un viaje arquitectónico a largo plazo, y no una iniciativa puesta en práctica para obtener un resultado a corto. A causa de las capacidades de interconexión interna y externa de las APIs, éstas pueden proveer una plataforma para las empresas sponsors TI interesadas en renovarse, una ejecución empresarial pragmática y beneficios económicos rápidos.

Los últimos diez años de promoción, implementación y evaluación SOA han cultivado dos caminos diferentes de aproximación a esta arquitectura; La mentalidad “Big SOA” y la mentalidad “Small SOA”. En relación a las estrategias API actuales existen dos aproximaciones la mentalidad API-Access y la mentalidad Empresarial API-Centric.

10. Mentalidad “Big SOA”

Las organizaciones que quieren adoptar “Big SOA” requieren escalar el proceso de adopción a través de múltiples consumidores estableciendo un conocimiento compartido para dominar la lógica de negocio y la tecnología. Cada servicio es una parte de la gran fotografía, y un servicio bien diseñado conecta con procesos de negocio existentes y da solución a requisitos de negocio definidos.

Una adopción de servicios efectiva en na empresa requiere un esfuerzo significativo en la planificación, la coordinación y el gobernó de la solución.

Las iniciativas “Big SOA” se enfocan en el gobierno de los procesos empresariales, en la reutilización global empresarial y la consolidación del portfolio de servicios. La consecución de estos grandes objetivos requiere cambios estructurales en tiempo de diseño de los procesos y la superación de significativas diferencias culturales que conducen a la inhibición de diseño, contabilidad, control y ramificaciones operacionales. Las iniciativas “Big SOA” tradicionales pueden tener éxito, pero solo si tienen apoyo de la organización al más alto nivel que permita superar la inercia organizacional y los silos de los equipos de proyecto para crear puentes entre ellos y operar como un solo equipo

Cuando un equipo de desarrollo se plantea el uso de Big SOA, es necesario encontrar un punto de entrada efectivo. Algunos equipos comienzan con una iniciativa impulsada desde el propio departamento TI o siguiendo la estela de alguna importante iniciativa de transformación impulsado por la misma lógica de negocio. El acercamiento a Big SOA a través de iniciativas salidas de TI puede ser muy efectivo cuando se centra en construir infraestructuras de servicios compartidas, tales como seguridad, identidad, autoría, monitorización o gestión de la nube. Estos esfuerzos pueden proporcionar rápidas recuperaciones de la inversión (ROI), y no requieren una extensa colaboración con las unidades de negocio para el éxito. Por otro lado, este acercamiento retrasa la participación de los departamentos de negocio y puede que se reconozca una rentabilidad de la inversión mínima, a no ser que se incorpore en iniciativas empresariales más visibles como la gestión de riesgos, ciber-seguridad o la experiencia de usuario.

El acercamiento a Big SOA cuando se impulsa desde negocio es muy a menudo se desencadena por imperativo de la cúpula para rediseñar los procesos de negocio y/o la experiencia de usuario. Por diseño, estos esfuerzos de transformación de negocio deben ser fuertemente coordinados a través del departamento TI y de las distintas unidades de negocio implicadas. Big SOA, en este caso sigue la estela de una inversión en la cartera de servicios que ofrece la empresa.

Una iniciativa Big SOA es debe ser tomada como un proyecto corto de tres o cuatro meses, sino un que debe seguir un programa de varios años, que contará con muchos pasos en su roadmap. Para maximizar y acelerar el éxito, el equipo que se embarque camino a Big SOA debe incorporar un programa de transformación estructurada:

  • Elaborar un grupo multifuncional de trabajo.
  • Desarrollar un plan de adopción SOA.
  • Definir la cartera de servicios objetivo.
  • Desarrolla un Caso de Negocio.
  • Planificar y recaudar fondos para una infraestructura SOA.
  • Establecer los nuevos roles.
  • Planificar la formación y el plan de “mentoring” para el personal.
  • Desarrollar políticas corporativas, guías y Buenas prácticas.
  • Instituir los procesos de Gobierno SOA.
  • Establecer nuevas iniciativas buscando un buen comportamiento.
  • Identificar proyectos Candidatos.
  • Establecer prioridades.
  • Re-evaluar el Ciclo de Vida de Desarrollo de Software (SDLC).

Muchos equipos que se aventuran hacia el establecimiento de una arquitectura SOA no tienen la autoridad, el control del ámbito dónde se quiere instaurar, o la influencia para implementar las actividades necesarias Big SOA. Sin posibilidad de obtener éxito en la instauración de Big SOA que muchas organizaciones padecen, los miembros de los equipos que quieren “hacer SOA” y demostrar el valor que ello aporta al negocio focalizan sus esfuerzos en el Small SOA.

11. Mentalidad “Small SOA”

Una aproximación a Small SOA implementa los principios SOA basado en Proyecto-porproyecto. Esta aproximación incurre en menos riesgos, pero produce un retorno más pequeño. Típicamente hay coordinación limitada entre proyectos y además no requiere “forcejeos” entre departamentos o cambios en la política global de la empresa. El uso de un proceso Small SOA permite a la organización crear la cartera de servicios más despacio, pero con una coordinación limitada, los procesos son menos propensos a ser reusados o compartidos entre múltiples consumidores.

Las iniciativas Small SOA a menudo se focalizan en aspectos “run-time” en lugar de en aspectos “design-time”, es decir se busca más el resultado en ejecución y no se realiza un diseño profundo de la solución.

Las inquietudes más frecuentes en entornos “run-time” es habilitar un estilo de comunicación flexible, patrones de interacción y mecanismos de mediación que faciliten la integración y promuevan una articulación flexible. Los ejemplos de estilos de comunicación incluyen sincronía, a sincronía y peticiones de mensajes de respuesta.

Los patrones de interacción soportados más comunes incluyen peer-to-peer, entrega negociada (broker delivery), hub-and-spoke, publicación/subscripción (publish/subscribe) y orquestación de procesos, los cuales son usados como puente para cerrar el espacio entre la disponibilidad, la confiabilidad y la topología consumidor-proveedor

Los mecanismos de mediación reducen la necesidad de proveer plataformas de mensajería simétrica dónde ambos, consumidor y proveedor se comunican usando el mismo protocolo, formato de mensaje y estilo de comunicación. Los mecanismos de mediación también encapsulan los detalles de la implementación relacionados con la localización, el versionado y el dominio de identidades (identity domain).

Con la adopción de Small SOA conducido desde el punto de vista TI requiere una aproximación cautelosa para no dejar que el esfuerzo se focalice exclusivamente en la tecnología en lugar de en diseño, cultura y objetivos TI.

Los equipos que quieran adoptar Small SOA desde una aproximación TI tendrán éxito cuando fomenten seguimientos de adopción de consumo de los servicios y de subscriptores, as fomentar historias de adopción de consumo, los suscriptores del servicio de pista, y dar a conocer el crecimiento del uso de los servicios en la organización.

Con la adopción de Small SOA conducido desde el punto de vista TI requiere una aproximación cautelosa para no dejar que el esfuerzo se focalice exclusivamente en la tecnología en lugar de en diseño, cultura y objetivos TI.

Los equipos que quieran adoptar Small SOA desde una aproximación TI tendrán éxito cuando fomenten seguimientos de adopción de consumo de los servicios y de subscriptores, as fomentar historias de adopción de consumo, los suscriptores del servicio de pista, y dar a conocer el crecimiento del uso de los servicios en la organización.

Un enfoque Small SOA impulsada desde negocio, puede dar lugar a casos de éxito atractivos, los cuales ayudarán y propiciarán la adopción de SOA. Sin embargo los activos de negocio son de dudosa reutilización sin la colaboración entre equipos y la promoción. Los esfuerzos descoordinados y sin gobierno de proyecto-a-proyecto pueden generar una situación caótica que resulta en un poco e incluso nula, reutilización de lo implementado, ¿Cuántos de los servicios desarrollados son compartidos?, y ¿Cuántos servicios son simplemente una forma de facilitar integraciones punto a punto?

12. Mentalidad API-Access

Similar al Small SOA conducido desde negocio, la aproximación API-Access es el resultado de casos de éxito convincentes, lo que favorece aún más la adopción. Proporcionando una plataforma tecnológica API-Restful accesible para que los equipos que integren TI y conocimientos de negocio con apps móviles, aplicaciones Javascript basadas en el navegador o Shell scripts máquina-máquina (M2M).

Mientras que la tecnología API puede ser un adelanto de una estrategia SOA, las APIs no necesitan seguir los principios SOA (por ejemplo, débil acoplamiento, separación de intereses, orientación a servicio), y los equipos API se pueden fija de manera predominante en preocupaciones derivadas de las integraciones que refuerzan los silos de capacidades. Los equipos de proyectos API abarcan el control de dominios e integran APIs externas para dar soluciones al proyecto.

13. Mentalidad Empresarial API-Centric

En lugar de centrarse en el intercambio de información y en las inquietudes por la reusabilidad (un enfoque más SOA), los defensores de la tecnología API evangelizan cómo los equipos pueden rediseñar su negocio, aumentar el crecimiento de los ingresos y retener a los clientes mediante de una Empresa API-Centric. (Empresa con la tecnología API como centro de sus esfuerzos TI y de negocio)

Las empresas API-Centric se mueven más allá de un destino ecommerce para abrazar descentralización, personalización, contextualización, gamification, y los canales de distribución dinámicos. Las tendencias tecnológicas engloban estos conceptos incluyendo los canales móviles, M2M (machine-to-machine), P2P (person-to-person), B2D (businessto-developer). En cada caso, las APIs son el pegamento que conecta los distintos actores y componente distribuidos de la solución. Los equipos tecnológicos en las empresas API-Centric usan las API para montar rápidamente soluciones utilizando bloques de construcción internos y externos. Debido a que las API extienden la accesibilidad, facilitan el consumo y reducen las barreras técnicas, los usuarios avanzados de negocio y los desarrolladores pueden ajustar rápidamente soluciones conjuntas. Estos bloques preconstruidos API incluyen, por ejemplo, módulos de clientes, pedidos, productos, logística, mapas, email, SMS, clima o tráfico.

En adición a los beneficios de ganancia interna en la productividad, las empresas APICentric consiguen más clientes y generan una actividad de negocio mayor. Las APIs facilitan la interconexión de procesos de negocio a través de una cadena de valor extendido. Socios, proveedores, distribuidores y clientes pueden aprovechar rápidamente una capacidad de negocio ofrecida como una API, y aumentar la interacción de negocio sobre el canal API.

14. Construir Servicios y APIs

Los equipos de desarrollo, en lugar de crear una arquitectura consistente de servicios y demostrar la capacidad de re-utilización de los servicios, a menudo producen de manera inadvertida solo un conjunto de Web Services (Just a Bunch of Web Services, JBOWS) o un conjunto de Servicios REST (Just a Bunch of REST Services, JBORS).

Una aplicación frecuentemente consume un servicio y una web de conexiones “spaghetti” uno-a-uno entre los endpoints del proveedor del servicio y los consumidores. Muchos equipos encuentran que un desarrollo enfocado en SOA o REST puede no mejorar la agilidad TI, pero esto resulta en un simple intercambio de herramientas TI, formatos de mensajes y protocolos.

La infraestructura TI, el diseño de procesos, el gobiernos, la cultura y los incentivos deberían ayudar a conseguir los objetivos de negocia SOA y API incentivando la compartición de recursos y la reutilización, consolidando la funcionalidad y la conducción de la adopción tecnológica por parte del equipo de desarrollo.

Para crear un mejor entorno para la arquitectura y ganar agilidad API-Centric, los equipos deben entender:

  • Cuándo crear servicios
  • Cuándo crear APIs
  • Cómo acercar gobierno de servicio y de API
  • Cómo los servicios y las APIs impactan en el gobierno de la aplicación

15. ¿Cuándo Crear un Servicio?

Se debe crear un servicio cuando se quieren compartir capacidades o información de negocio entre aplicaciones de red o limitar las aplicaciones en tiempo de ejecución. Un servicio debe implementar una tarea de negocio autónoma de manera razonable y no estar diseñado de manera excesivamente granular como un componente con interdependencias con otros componentes. Desarrolladores y analistas de negocio son más cercanos a entender el propósito del servicio cuando éste expone una tarea ligada con un proceso de negocio. Diseñando servicios para tareas de negocio la granularidad reduce la complejidad de las interacciones del servicio y simplifica el mantenimiento de la aplicación.

Ejemplos de tareas de negocio que son compatibles con una aproximación orientada a servicio incluye “tramitar un pedido”, “recuperar un registro de cliente” y “pagar una factura”. El servicio debe exponer sus competencias a través de múltiples estilos de interfaces (HTTP/JSON, XML/JMS, SOAP/SML, asíncrono, síncrono), y las APIs RESTful son solo un estilo de interfaz. Idealmente, el estilo del interfaz es solo un tipo de implementación con características de gestión importantes (seguridad, cumplimento del nivel del servicio, seguimiento de uso) estarán disponibles entre todos los canales de los interfaces (por ejemplo, orientación a recurso, publish/subscribe, método de invocación). La Ilustración 1 Ilustra el patrón de implementación de fachada (facade)

Ilustración 1: Patrón API façade

Ilustración 1: Patrón API façade

La separación del contrato y los protocolos externos de la representación interna impacta positivamente en la habilidad de evolución de la implementación del servicio en el tiempo. Cuando existe una clara separación de la interfaz con respecto a la implementación, un desarrollador puede modificar la implementación sin impactar las aplicaciones que llaman y usan el servicio.

Sin embargo, desacoplar el consumidor y el proveedor desde una plataforma de aplicación compartida, y desacoplar interfaz de implementación hace que surjan aspectos adicionales a tener en cuenta. Por ejemplo, las dificultados aparecen cuando se intentan flujos continuos en operaciones semánticas (seamlessly flowing), es decir, identidad, niveles de servicio, autorización entre plataformas diferentes y entornos distribuidos. Los equipos confían en infraestructuras middleware para enlazar las semánticas entre todas las partes participantes y los componentes.

Porque separar interfaz de implementación introduce complejidad y esfuerzos de desarrollo extra, muchos equipos deciden vincular estrechamente la interfaz a la implementación. Siguiendo buenas prácticas arquitectónicas e introduciendo fachadas API o Proxy endpoints (con desarrollo automatizado), los equipos aumentan la capacidad de mantenimiento y adaptación de la solución.

16. Cuándo crear APIs RESTful

En general se crea una API Restful cuando compartimos un servicio fuera de un dominio controlado, es decir, unidades de negocio, organización, etc…, considerando que va dirigido y orientado a conseguir al mayor alcance y consumos posibles, ofreciendo el servicio a través de una infraestructura web nativa o con el interés de maximizar la evolución asimétrica entre los clientes de servicios, interfaces e implementación.

Cuando los equipos de desarrollo publican fachadas API delante de los servicios existentes, explícitamente separan el interfaz del servicio de la implementación del servicio. Los endpoints API son proxies ligeros que refuerzan la seguridad, monitorizan el uso y distribuyen el tráfico. El proxy permite una clara separación de conceptos entre el contrato del interfaz de consumo y la implementación del “back-end” del servicio.

Mientras los servidores de aplicación, los nodos del bus de servicios empresarial o los hosts de servicios de datos pueden publicar API endpoints, las API gateways son el mecanismo preferido para la entrega. Una API gestionada está:

  • Publicitado activamente y es suscribible.
  • Disponible con un SLA asociado y publicado.
  • Asegurado, Autenticado, Autorizado y protegido.
  • Monitorizado y monetizado con analíticas.

Las APIs RESTful exponen un interfaz orientado a recurso. El interfaz es un conjunto de recursos, cada uno exponiendo una API uniforme. Para crear una API RESTful:

  1. Dar a todo un “ID”.
  2. Enlazar todas las cosas entre ellas.
  3. Usar métodos HTTP estándar.
  4. Permitir la representación en múltiples formatos de mensaje.
  5. Reducir el estado compartido.

17. Cómo acercar Servicio, API y Gobierno de la aplicación

El éxito de una iniciativa SOA requiere la creación de conexiones consumidor-proveedor poco acopladas, rebajando la separación de aspectos en los que estén involucrados ambos, exponiendo un conjunto de servicios reusables y compartibles y consiguiendo la adopción tecnológica por parte del consumidor del servicio.

Muchos equipos de desarrollo publican servicios, mientras en paralelo siguen peleando por crear una arquitectura de servicios que pueda cumplir los requisitos SOA, compartida, reusable y adoptable entre los distintos equipos de desarrollo internos. En su lugar, sin proponérselo, en lugar de crear esa arquitectura de servicios consistente de la que hablábamos producen sólo un grupo de servicios web o de servicios REST (JBOWS o JBORS).

Una aplicación frecuentemente consume un servicio y una web de conexiones “spaghetti” uno-a-uno entre los endpoints del proveedor del servicio y los consumidores. Muchos equipos encuentran que un desarrollo enfocado en SOA o REST no mejoraría la agilidad TI, y el resultado es en un simple intercambio de herramientas TI, formatos de mensajes y protocolos. El Gobierno SOA, el Gobierno API y el Gobierno de la Aplicación pueden cerrar la brecha y mejorar la coherencia en la arquitectura del sistema.

18. Gobierno SOA

En muchas organizaciones, las iniciativas SOA acaban siendo soluciones en integraciones punto-a-punto en lugar de arquitecturas, generalmente porque no existen programas de gobierno que mitiguen los factores de riesgo y soporten los principios SOA. Retrasar la creación del gobierno en los proyectos a menudo resulta en la creación de servicios que no pueden ser re-utilizados posteriormente, la proliferación de múltiples definiciones de dominios de negocio y el aumento del mantenimiento del coste del catálogo de servicios de la empresa.

Un Gobierno SOA efectivo controla el desarrollo y el operativo de los sistemas orientados a servicios, y está implementado usando políticas, procesos, métricas y organización:

  • Las políticas especifican la forma “correcta” de hacer las cosas, éstas codifican leyes, regulaciones, guías corporativas y buenas prácticas.
  • Los procesos son actividades que proporcionan una oportunidad de probar un proyecto o artefacto conforme a las políticas y permiten tomar la decisión de avanzar o no. Algunos procesos son automáticos y son dirigidos por el sistema y otros requiere esfuerzo humano.
  • Las métricas proporcionan visibilidad en el programa de Gobierno y son requeridas para medir y verificar cómo se cumple la aplicación de las políticas.
  • La organización debe alentar una cultura empresarial que de soporte y aliente unas buenas prácticas en el Gobierno.

Un programa de Gobierno SOA debería proporcionar la guía para el ciclo de vida integral del servicio, incluyendo la creación, las pruebas, el aprovisionamiento, el uso, la gestión y el versionado. Los componentes de una infraestructura de Gobierno SOA proporcionan herramientas y servicios que dan soporte a un programa de Gobierno, ofrecen mecanismos para: gestionar y mantener las políticas y para imponer unos checkpoints durante varias fases del ciclo de vida de desarrollo de software (SDLC) verificando que los servicios, las APIs y/o los proyectos cumplen con esas políticas. También proporciona mecanismos que permiten la aprobación manual y automática y la gestión de excepciones de los procesos. Todo esto permite al Gobierno SOA la integración con las herramientas del ciclo de vida de desarrollo tradicional (SDLC) y de los sistemas de gestión y gobierno habituales de las tecnologías de la información (TI).

Algunos componentes de la infraestructura de Gobierno SOA están dirigidos al gobierno del tiempo de desarrollo, y otros componentes al gobierno están destinados al gobierno a nivel de ejecución (runtime). Por ejemplo el componente “Service registry” permite un puente entre los componentes desarrollo y los de ejecución.

19. Catálogo de Servicios objetivo SOA

Un objetivo clave para las iniciativas SOA es conseguir un portfolio de servicios que exhiba una arquitectura clara. Los modelos de negocio técnicos e industriales verticales son puntos de inicio útiles para el desarrollo de un catálogo de servicios único para una organización. El diseño de servicios e interfaces son pequeñas piezas de un conjunto de programas más grandes que deben ser gestionados para establecer una altamente efectiva manera de entrega, colaboración y confiabilidad de los servicios TI.

Iniciando proyectos complementarios como la gestión de los procesos de negocio (BPM), aplicaciones de racionalización o arquitecturas empresariales son excelentes mecanismos para entender las dinámicas TI, descomponer los dominios de negocio, y determinar que activos de software (¡y servicios!) pueden soportar los procesos de negocio.

20. Gobierno API

El Gobierno API está fuertemente influenciado por los objetivos de negocio IT. Las plataformas líderes en Gobierno API proporcionan analítica que permiten la evaluación de los valor de negocio IT. La plataforma debe capturar información sobre las suscripciones en la capa de servicio, recolectar estadísticas de uso, presentar métricas de productividad e integrarse con sistemas de facturación y pago.

El Gobierno API engloba las suscripciones y la promoción de meta-data API. Las actividades de gobierno en lo que se refieren a la promoción de los metadatos API incluyen la racionalización de las etiquetas y keywords usadas para categorizar las APIs, y la gestión de los contenidos de la documentación de desarrollo. Por otra banda los procesos de gobiernos deben mejorar la revisión en tiempo de diseño antes de la publicación definitiva de la API.

Las métricas de economía API incluyen la adopción de la tecnología y su uso, y es el gobierno API el que establece cómo se realizan las políticas, las métricas y los procesos de adopción (por versión, o por API) y el uso (por versión o por API). Entendiendo la adopción y el uso de una API, los propietarios de negocio y los arquitectos pueden invertir de manera más inteligente en futuros recursos de desarrollo, planificar convenientemente una infraestructura API escalable y racionalizar el catálogo de las APIs.

21. Convergencia entre el Gobierno API y el Gobierno SOA

Para la entrega eficiente y efectiva de soluciones IT, los equipos deben sincronizar las actividades del Gobiernos API y del Gobierno SOA. La gestión de las API proporciona un sencillo conjunto de estados en el ciclo de vida (por ejemplo, creado, publicado, obsoleto, retirado, bloqueado) que pueden ser adaptados por el equipo de desarrollo.

Los registros facilitan la gestión de los metadatos del servicio y el gobierno en el diseño, la implementación, el testeo y las operaciones en tiempo de ejecución.

Ilustración 2: Intersección de las dos vistas del Gobierno.

Ilustración 2: Intersección de las dos vistas del Gobierno.

22. Descripción de las necesidades habituales

Cuando desarrolladores consumen, incorporan, orquestan o componen APIs o servicios entre organizaciones, las limitaciones, la documentación y los contratos que describen cómo interactuar con la API o el servicio, lo que llamamos la adopción toma especial relevancia. Los defensores de la tecnología API proponen evitar los contratos de interfaz de servicios pesados y cambiarlos por documentación ligera y fácilmente inteligible por las personas. Los paradigmas “RESTafari” en contra de los lenguajes descriptivos, los esquemas y las políticas machine-readable clásicos comienzan a disminuir.

Las buenas prácticas REST, se están comenzado a ver influenciadas por el diseño y la descripción, por lo que se construyan servicios SOA o RESTful APIs, los equipos deben de considerar los siguientes puntos:

  • No publicar endpoints que expongan modelos de dato rígidos y que requieran complicados patrones de interacción.
  • Documentar cómo la sesión de contexto y el estado de la sesión influencia las interacciones.
  • Documentar el modelo de mensaje.
  • Describir las limitaciones de uso y las inquietudes de seguridad, es decir credenciales de autenticación aceptables, protocolos de autorización, etc...
  • Las tácticas de ocultación los detalles internos de la interfaz exterior SOA y API deberían incluir frameworks de metadatos y de políticas que provean los cimientos requeridos para identificar, clasificar y describir los candidatos a consumir nuestros servicios o APIs. Las políticas se utilizan para asignar metadatos a cada caso y a los endpoints de los servicios desplegados. Los metadatos pueden abarcar los siguientes aspectos:
    • Visión general (nombre, descripción, …)
    • Atributos del ciclo de vida (versión, relaciones entre las versiones, estado en relación al ciclo de vida)
    • Clasificación (básico, compuesto, de infraestructura, de negocio, …)
    • Atributos del endpoint desplegado(protocolos, localización, especificaciones WS-*)
    • Modelo de datos (esquema JSON, RAML, esquema XML, WSDL, versión propiedades semánticas, validaciones)
    • Políticas y requisitos a nivel de Servicio (disponibilidad, capacidad, respuesta, seguridad, tasa de transacción)
    • Mediación (routing, queuing, caching, transformación, etc…)
    • Atributos de dependencia (para APIs, servicios, bases de datos, directorios, frameworks)
    • Instancias de dependencias físicas (por ejemplo, plataforma de la aplicación, seguridad, gestión)
    • Modelo de Proceso de Negocio o BPEL (Diagrama UML, clasificación de negocio, etc…)
    • Información del contrato (por ejemplo, consumidores, proveedores, usos)
    • Guías de uso (momento del día, disponibilidad, número de usuarios, rendimiento)
    • Opciones contables y de remuneración (pago por uso, suscripción, devoluciones, etc…)

Los Metadatos permiten una descripción formal de los endpoints y alientan el descubrimiento y la reutilización por parte de otros equipos.

La mayoría de las organizaciones no comienzan con un esfuerzo completo de inventariar los servicios o APIs, en su lugar simplifican el ámbito del proyecto. Las empresas trabajan en describir cada candidato a servicio/API que es core de negocio para la empresa, redefiniendo los metadatos de taxonomía, ganando de esta manera la aceptación por parte de los equipos que ofrecen soluciones para la posible reutilización.

23. Gobierno equilibrado

Conseguir un equilibrio productivo entre orientación útil y control asfixiante requiere entender los impedimentos y la cultura propia del equipo involucrado. Las iniciativas SOA/ API se estancan principalmente por:

  • Insuficiente educación, formación o mentoring.
  • Falta de confianza o de colaboración entre departamentos u organizaciones.
  • Incentivos o iniciativas contradictorias.
  • Un pobre diseño del servicio o API.
  • Falta de métricas.
  • Falta de Gobierno.

Es necesaria una orientación, pero si los procesos de gobierno son molestos y caros, hará que el resentimiento y la resistencia.

Cuando sea posible, los procesos deben ser transparentes y automáticos. Por ejemplo las comprobaciones de conformidad pueden ser realizadas durante el alta o el registro al servicio. Muchos sistemas de gestión de políticas proporcionan herramientas para verificar el cumplimiento de las políticas de manera automática. Se deben buscar productos que se integren perfectamente con las herramientas de desarrollo para que, de esta forma, sea lo más sencillo posible para los desarrolladores la detección, la identificación y la solución de incidencias relacionadas al cumplimiento de las políticas.

Los sistemas de gestión de contrato pueden ser muy valiosas como apoyo para la gobernabilidad del proceso de aprovisionamiento de los consumidores, de la misma manera que para la gestión del ciclo de vida del proceso, las peticiones de evolutivos y el control de versiones de servicio.

Las iniciativas ya sean de mentalidad Big SOA, Small SOA, API-access o API-Centric tienen éxito cuando se produce una adopción generalizada por todos los participantes, se comparte, y se reúsa entre los distintos silos de proyecto, los dominios organizacionales y las comunidades de desarrollo.

Las iniciativas de gobierno tienen éxito cuando implementan las siguientes iniciativas:

  • Establecer una tabla de revisión del diseño.
  • Se controlen los modelos de información, y clases.
  • Se adopte un modelo de financiación compartida.
  • Se implemente la monitorización del cumplimiento de las políticas (compliance).
  • Crear definiciones comunes en el acuerdo de nivel de servicio.
  • Crear un inventario de activos de aplicaciones y conexiones de integración.
  • Implementar procesos de revisión del gobierno para gestionar cambios en el inventario.
  • Extender el gobierno del ciclo de vida del desarrollo del software para que permita la orientación al servicio.

24. Conclusión

SOA puede ser una estrategia que alinee los recursos TI con las capacidades, los recursos y los procesos de negocio. SOA se focaliza en compartir y en la reutilización que puede optimizar el uso de los activos TI. Las iniciativas SOA se comprometen a reinventar las interacciones B2B y permitir así, mejores relaciones con los partners y apoyo a redes de proceso, lo que lo convierte inicialmente en desconcertante. Los servicios externos son vistos como un mecanismo para extender el alcance económico de la empresa mediante la reducción de costes de interacción, incorporando capacidades de trabajo externos, permitiendo así especialización empresarial y la creación de soluciones de mayor valor que extienden los procesos de negocio entre la red de socios empresariales.

El actual negocio de la API economy vincula la propuesta de valor de SOA, añade lecciones aprendidas e incorpora tendencias populares en la industria, como son, REST, Internet of everything, servicios en la nube y tecnología móvil.

Las APIs son un componente estratégico para ayudar en tu iniciativa SOA. Superficialmente, las APIs RESTful son simplemente una versión especializada de Web Services, y proporcionan unos beneficios técnicos similares. Ambos diseños REST API y SOA pretenden exponer una funcionalidad clara mediante un interfaz bien definido. Ambos modelos API y Servicios para que sean exitosos y escalables requieren endpoints gestionados.

REST es un estilo de arquitectura de desarrollo de sistemas que imponen una serie de restricciones en la interacción con los servicios. Todo junto, las restricciones permiten propiedades beneficiosas para emerger, simplificar la nomenclatura, escalar, modificar, afianzar, visibilizar, aumentar el rendimiento y la portabilidad. Los sistemas que satisfacen estas restricciones son RESTful.

Mientras los beneficios de diseño RESTful ayudan a los objetivos SOA, el foco estratégico del pragmatismo REST difiere en muchas de las iniciativas SOA. Los equipos que usan diseños REST API Pragmáticos se centran en escenarios de adopción bottom-up(ver def. 3), protocolos y formatos accesibles (p.ej. HTTP, JSON, DNS), definiciones de interfaz permisivas y simplificación de modelos de interacción (es decir, garantía de entrega y reentrega).

Los equipos que “hacen REST” y “construyen APIs” normalmente se enfocan en superar las barreras técnicas y en la adopción por parte de negocio mediante la creación de muchas versiones que demuestren soluciones concretas a casos de uso del core de negocio sin introducir complejidad tecnológica. Los equipos SOA comúnmente se centran en obtener eficiencia en escalado, conseguir estandarizar la compañía, centralizar las decisiones y satisfacer complejos requisitos no funcionales.

Las aproximaciones al enfoque pragmático SOA y al enfoque pragmático API se superponen y un significado parecido. Los equipos que traten de seguir cualquiera de los dos enfoques no fuerzan el uso de los estándares más comunes (y complicados), no predican buenas prácticas difíciles, equilibran el gobierno de negocio con la autonomía del proyecto y son conscientes de las deficiencias en habilidades y los obstáculos de adopción. Una estrategia de adopción SOA efectiva require cambios fundamentales en el diseño de la aplicación y en las técnicas de desarrollo y reducir los problemas de adopción de las tecnologías (API o Service). El Gobierno SOA, el Gobierno API y el Gobierno de la Aplicación pueden cruzarse y coexistir en una organización para avanzar en el objetivo de conseguir una arquitectura racional.

Debido a que SOA representa la consecución de una arquitectura a largo plazo en la mayoría de ocasiones entra en conflicto con tener una cartera de recursos TI de larga vida, en resumidas cuentas SOA no ofrece soluciones rápidas, ni puede estar fundamentada como iniciativa a corto plazo, sino que es un viaje arquitectónico con resultados futuros. Debido a las APIs interconectan distintas capacidades empresariales hacia dentro y hacia fuera de la organización, las API pueden proporcionar una plataforma para que los que las estructuras comerciales patrocinen una renovación empresarial TI, así como una ejecución desde el punto de vista de negocios pragmática.

Similar a las iniciativas Small SOA conducidas desde negocio, una aproximación a la tecnología API con mentalidad API-access resulta en la compilación de casos de éxito, los cuales animen futuras adopciones. Las APIs RESTful proporcionan una plataforma tecnológica accesible para los equipos de integración TI y de negocios con el fin de acercase a las aplicaciones móviles, aplicaciones Javascript basadas en navegadores o scripts máquina-a-máquina (M2M).

Las organizaciones con mentalidad empresarial API-Centric llegan a más clientes y generan mayor actividad de negocio.

Las APIs facilitan la interconexión con procesos de negocio entre una cadena de valor extendida. Parnerts, proveedores, distribuidores, y clientes pueden acceder de manera sencilla a una capacidad de negocio ofrecida por una API, y aumentar la interacción de negocios a través del canal API. Las empresas con mentalidad API-Centric van más allá de una solución de comercio electrónico como finalidad, sino que abrazan la descentralización, la personalización, la contextualización y la gamification, así como los canales de distribución dinámicos. Entre las tendencias tecnológicas actuales que abarcan estos conceptos se incluyen los canales: móvil, machine-to-machine (M2M), person-to-person (P2P), business-to-developer (B2D). En cada uno de estos casos las APIs son el pegamento a través de los actores y los componentes de una solución distribuida.

25. Referência

  • [1] The Only Sustainable Edge, John Hagel III & John Seely Brown, 2005
    https://www.johnseelybrown.com/readingTOSE.pdf
  • [2] La economía API (The API Economy) Se puede definir como el intercambio comercial de recursos de información facilitado por: La exposición de la información de entidades “core” a un ecosistema de desarrolladores a través de una API basada en internet y por la combinación de recursos de información expuestos por otras entidades API para construir nuevos recursos de información.

Para mais detalhes de nossas soluções ou discutir algum requisito especifico, entre em contato conosco.

x

Interessado em um conteúdo similar?