Icono del sitio Profile Software Services

AsyncAPI: Diseñar APIs asíncronas

AsyncAPI

En este post descubrimos cómo AsyncAPI revoluciona la comunicación entre sistemas al permitir operaciones no secuenciales, mejorando el rendimiento y la escalabilidad de las aplicaciones web. Exploraremos sus características y ejemplos prácticos para comprender su impacto en el desarrollo de aplicaciones.

Qué es AsyncAPI

AsyncAPI es una especificación que permite definir APIs y que se enfoca en Arquitecturas Orientadas en Eventos (EDA, Event Driven Architecture). Una EDA es un paradigma de diseño en el que un consumidor de eventos recibe una notificación de que un evento ha sido publicado en un canal por un publicador también conocido como generador de eventos. 

Es un modelo menos acoplado que el modelo clásico (petición-respuesta) como el de las API RESTful pues el publicador no conoce ni al menos la identidad del consumidor de los eventos. En una EDA los componentes con pobre rendimiento no bloquean a sus consumidores, sino que generan más eventos que son encolados, lo que facilita mejorar el rendimiento de la solución sin necesidad de rediseñar.

Características de AsyncAPI

Se caracteriza por tener enfoque de protocolo agnóstico, de naturaleza open-source y la elevada productividad dada la similitud con OpenAPI y la variedad de herramientas que ofrece. La principal diferencia con respecto a una API síncrona es la infraestructura, poniendo como pieza intermedia un “broker”, por lo que la comunicación no siempre es directa entre consumidor-publicador.

El funcionamiento de AsyncAPI se basa en dos suposiciones: 

Al definir una relación contractual muy específica entre los elementos de la API, los desarrolladores pueden controlar y gestionar con mayor precisión el flujo de estos mensajes y su salida resultante. Dado que estos mensajes generalmente pasan a través de un “broker”, tener un contrato comúnmente definido y aceptado permite un sistema de control granular mucho más alto, lo que resulta en un sistema efectivo, comprensible, y eficiente.

Objetivos de AsyncAPI

AsyncAPI persigue entre sus objetivos lograr que trabajar con EDA sea tan sencillo como con las APIs RESTful, así como mejorar el funcionamiento de la especificación para que sea cada vez más fluida, de tal forma que los usuarios puedan crear APIs rápido y sin conocimientos previos de AsyncAPI.

Aportes

Su principal aporte es la estandarización de la comunicación entre APIs haciendo los eventos más legibles para las máquinas y facilitando el trabajo de los desarrolladores.

Enfoques para documentar 

Impulsores de AsyncAPI mencionan tres enfoques sobre cómo trabajar con el proyecto:

Herramientas y lenguajes

Puedes encontrar una amplia variedad de herramientas en la página de AsyncAPI, entre las cuales se destacan herramientas de comparación, extensiones para entornos de desarrollo, validadores, generadores de códigos, entre otras, y el empleo de varios lenguajes, entre ellos Java, Javascript, C# y Python.

Cada una de estas herramientas aporta al proyecto que trabajemos más calidad y coherencia, pues tienen implícito las buenas prácticas para documentar, versionar, nombrar los elementos siguiendo una nomenclatura sencilla y sugerente y generar código en correspondencia con lo que documentamos. Y principalmente, siguiendo alguno de los enfoques antes mencionado se obtiene un proyecto con alto valor agregado.

Ejemplo

Para comprender mejor AsyncAPI podemos analizar un ejemplo de código basado en el siguiente escenario:

Imagen 1. Ejemplo generado en https://studio.asyncapi.com/

Veamos a continuación algunos elementos de la estructura:

En el siguiente repositorio puedes encontrar varios ejemplos:

https://github.com/asyncapi/spec/tree/master/examples

Salir de la versión móvil