API Management: ¿qué es y para qué sirve?

Los productos de API Management y en general la gestión de APIs están cobrando cada vez más importancia en las arquitecturas software modernas, y es rara la organización que a día de hoy no tiene en su hoja de ruta IT la implantación de un sistema bajo este propósito. En este post hablaremos de este tipo de herramientas, y de cómo las organizaciones están adoptando sus estrategias IT en el ámbito de las Web APIs, especialmente en cubrir y extender su propiedad intelectual, e incluso como fuente de ingresos. ¿Pueden mis APIs financiar mis desarrollos futuros?

Definición de API

Una API (application programming interface) especifica cómo deberían interactuar los diferentes componentes software. Además de para facilitar el acceso a componentes hardware o bases de datos, una API puede utilizarse para facilitar el trabajo de desarrollo. En la práctica, las APIs a menudo incluyen dentro de sus librerías especificaciones para manejar subrutinas, tipos de datos, clases y variables. En algunos casos, especialmente en servicios web, una API es únicamente una especificación para que los usuarios remotos puedan consumir los servicios.

En términos generales, las APIs hacen posible la interconexión de módulos y aplicaciones, facilitando el acceso a sus backends y permitiendo la reutilización de servicios. Es importante distinguir API “de servicio”, siendo una API la manera con la que se interactúa y se consume dicho servicio. Haciendo una analogía con un ejemplo cotidiano, una API podría ser el enchufe de nuestra casa y el servicio la electricidad que nos proporciona la empresa distribuidora.

Un gran número de organizaciones, cada vez más amplio, está centrando sus esfuerzos en la publicación de APIs. Cada vez más empresas e incluso organismos del sector público quieren rentabilizar sus APIs, no llegándose a alcanzar este objetivo en muchas ocasiones. Ello es debido a que es necesario entender, en primer lugar, la complejidad tecnológica que este tipo de estrategias acarrea, y en segundo a valorar en su justa medida los servicios ofertados y la facilidad de uso de las APIs expuestas.

La estrategia empresarial en la gestión de sus APIs debe ser la palanca sobre la que pivotar otro tipo de estrategias IT: Mobility, IoT, Cloud…

Expansión y crecimiento de las APIs

En la actualidad, hay una media de dos dispositivos conectados a Internet por persona, pero en 2020 (a la vuelta de la esquina como quien dice) se prevé que el número se duplique superando los cuatro por habitante del planeta. Todos estos dispositivos consumen APIs de manera proactiva de diferentes proveedores:

Para hacernos una idea del crecimiento de las APIs basta con ver los siguientes gráficos:

API Economy

El ecosistema de APIs especifica de qué manera el uso de estas micro aplicaciones por terceros puede beneficiar a una organización, bien por alquiler o por venta de sus propios desarrollos:

  • Pay per use (“API as a Service”): Obtención de beneficios mediante la exposición de APIs de servicios que son valiosos para terceros y están dispuestos a pagar por su uso.
  • API Products: Desarrollo de herramientas encargadas de facilitar la exposición e integración de aplicaciones a través de sus APIs.

Para hacernos una idea de los beneficios que una API Strategy puede aportar a una organización, es importante recordar el ejemplo de Amazon. Alrededor de 2002, Jeffrey Preston Bezos, director ejecutivo de Amazon, envió un correo a sus empleados con los siguientes puntos:

⦁ Todos los equipos expondrán sus datos y funcionalidad a través de interfaces de servicios.
⦁ Los equipos deben comunicarse entre sí a través de estas interfaces.
⦁ No se permitirá otra forma de comunicación: ni vinculación directa, ni acceso directo a bases de datos de otros equipos, ni memoria compartida ni utilización de ningún tipo de puerta trasera. Sólo se permitirán comunicaciones a través de llamadas que utilicen interfaces de red.
⦁ La tecnología empleada por cada equipo no debe ser un problema.
⦁ Todas las interfaces de los servicios, sin excepción, deben ser diseñadas con el objetivo de ser externalizables. Esto es, el equipo debe planear y diseñar sus interfaces para los desarrolladores del resto del mundo. Sin excepciones.

El correo finalizaba de la siguiente manera: “Todo aquel que no siga las directrices será despido. Gracias, ¡pasad un buen día!”. Desde hace ya varios años Amazon es el primer proveedor IaaS mundial distanciado significativamente de sus competidores.

API Managament System 

Podemos definir API Management como el proceso de publicar, promocionar y supervisar APIs en un entorno seguro y escalable. Asimismo, incluye todos aquellos recursos enfocados a la creación, documentación y socialización de las APIs.

En general, un API Managament System está conformado de los siguientes componentes:

  • Intercambiador de APIs: Componente cuya principal función es la de habilitar la interconexión entre los servicios y los consumidores, a través de las APIs publicadas en él.
  • Gestor de APIs: Componente cuya principal responsabilidad es la de ofrecer a los proveedores capacidades de alta configuración y publicación de sus APIs en el componente API Gateway.
  • Portal de APIs: Componente dedicado a recopilar toda la información necesaria para los consumidores sobre las APIs publicadas en el API Gateway.

Elementos de un API Gateway  

  • Routing: Enrutamiento de mensajes a diferentes destinos dependiendo del contexto o del contenido del mensaje.
  • Soporte muti-protocolo: Protocolos soportados tanto para la publicación de APIs en el componente Gateway como para el enrutamiento a los servicios internos.
  • Soporte multi-formato: Componentes destinados a transformar los datos de un formato a otro, o de su enmascaramiento.
  • Monitoring: Monitorización del tráfico de entrada y salida.
  • Políticas de seguridad: Otorga a las API características de autenticación, autorización y cifrado utilizando estándares o tecnologías conocidas como el cifrado de transporte mediante HTTPS, la suite de seguridad WS-Security para SOAP o el estándar de autorización OAuth para interfaces REST. Compatibilidad con sistemas de gestion de identidades: Active Directory, LDAP, JDBC, etc.
  • Políticas de uso: Capacita a las APIs para gestionar políticas de consumo, rendimiento, fallos, etc. para asegurar SLAs y sistemas de pago por uso.

Elementos de un API Manager

  • Publicación: Publica las APIs en el componente API Gateway definiendo su endpoint.
  • Edición: Herramienta para el diseño tanto de la interfaz de la API.
  • Gestor del ciclo de vida: Permite gestionar los diferentes estados por lo que pasa una API, así como su versión o deprecación.
  • Gestor de politicas de uso: Herramienta para la configuración de reglas de uso tales como pay per use, SLAs, QA, etc.
  • Consumo: Monitorización del uso de las APIs y sistema de configuración de alertas según los parámetros de consumo.
  • Gestor de políticas de seguridad: Gestiona todas la configuración de seguridad de una API.

Elementos de un API Portal 

  • Comunidad de desarrollo: Publicaciones de noticias y comentarios referentes al uso, configuración, errores y soluciones de las APIs pubicadas.
  • Navegador interno: Buscador de API registradas en el sistema, con varios filtros de consulta como estado, version, mejor valoración, etc.
  • Tienda: “APIs’ Store”, donde se localizan las API publicadas, accesos directos a las comunidades de consumidores, herramientas de testing, monitorización, recomendaciones de usuarios, etc.
  • Probador: Sistema integrado de testeo de cada API.
  • Documentación: Repositorio de documentación referente a las APIs publicadas.
  • Estadísticas de uso: Sistemas de monitorización y análisis desde la perspectiva del consumidor: timing, status…

gartner-magic-quadrant-appilcation-services-governance

Lenguajes de modelado de APIs 

Tras el intento de WADL como lenguaje de definición de APIs, en los últimos años han surgido tres lenguajes que permiten el modelo de APIs REST, cada una de ellas esponsorizadas por un fabricante:APIs1 7

Cada uno de estos lenguajes presenta sus pros y contras, siendo muy importante a la hora de seleccionar un API Managamanet System estudiar qué lenguaje/s de modelado soporta y si se adaptan a los requisitos de la organización.

¿Qué hay en una API?

 

 

 

Arquitecto de software con más de 10 años de experiencia, especializado en la conceptualización global de la solución. Amplio background en definición de arquitecturas de backend y de desarrollo. Especialista en el ecosistema Spring/ JEE con intereses particulares en arquitecturas de microservicios así como en los productos y lenguajes de definición y gestión de APIs

Ver toda la actividad de Raúl Galán Gómez

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

7 comentarios

  1. Luis Garcia dice:

    Hola Raul,

    Gracias por el articulo, es muy ilustrativo. Creo que el cuadro de Gartner que has incluido no es de API Management, ni de API Governance, sino de cloud.

    Un saludo,
    Luis

  2. Luis Hernandez dice:

    Muy buen articulo Raúl, expones de modo concreto lo que se puede lograr a través de API’s y sus componentes. Si acaso tuvieras información de un modelo de implantación sugerido en relación a la gestión del cambio y procesos para poder adoptar los nuevos paradigmas y roles que conlleva este tipo de plataformas lo agradecería.

    Y también el mismo comentario que Luis García, el gráfico es incorrecto

    Un saludo

  3. Emilia dice:

    Hola Raúl! Gracias por este post! Es muy completo y útil. Quisiera saber si me puedes ayudar con una duda que tengo. No me queda claro si una API es compatible para todos los lenguajes, por ejemplo si desarrollo una API en PHP luego la puedo usar en un sistema desktop C# o un mobile Android? Desde ya gracias!! Saludos!

    • Raúl Galán Gómez dice:

      Hola Emilia.

      Una API es el contrato que un sistema expone para que otros sistemas puedan comunicarse con él y es independiente del lenguaje de programación. La implementación del servicio, si deberá ser realizada en un lenguaje de programación concreto.
      En respuesta a tu pregunta, podrías publicar una API cuyo servicio se implemente en PHP y consumir dicho servicio, a través de la API, por ejemplo desde C# o el lenguaje que prefieras.

      Un saludo.

Escribe un comentario