AsyncAPI, la especificación que está revolucionando la arquitectura EDA
Que la motivación sea el principal motor de las grandes ideas parece una obviedad. Sin embargo, pocas veces nos paramos a pensar que la necesidad es el primer resorte en el proceso de creación. Todo diseño parte de la limitación, del vacío, incluso de la frustración que encuentra el ser humano ante la adversidad. Al menos así nos lo hace saber Maslow en su “Pirámide de necesidades”.
En el mundo actual, donde la tecnología parece ofrecernos todo tipo de alternativas que resuelven nuestras dudas y necesidades, se hace cada vez más complicado percibir las piedras en el camino, los muros, a veces invisibles que dificultan las tareas de nuestro día a día.
Fue precisamente una de estas necesidades aparentemente imperceptibles la que condujo a Fran Méndez a crear una especificación de código abierto que cubriera un vacío existente dentro de la arquitectura software. La ausencia de una estandarización de la comunicación entre máquinas se convirtió en la inspiración que propulsó la creación de AsyncAPI.
Para ello comenzó formulando una “teoría API”, con tantos tipos de APIs interactivas como servicios web RESTful, GraphQL y arquitecturas basadas en mensajes. AsyncAPI es una especificación que construye un lenguaje unificador para los diversos formatos y protocolos existentes. Podemos hablar de una estandarización del lenguaje de comunicación entre APIs asíncronas dentro de la arquitectura de eventos.
Las APIs asíncronas están ganando fuerza en los últimos años, este tipo de APIs permiten el intercambio de información entre máquinas de manera no simultánea, es decir, los participantes no tienen por qué estar conectados en el mismo espacio de tiempo. La comunicación puede hacerse de modo individual o colectivo, como en los foros de una web o el correo electrónico. Además, es más rápida y más barata que las APIs síncronas, ya que hacen un uso más óptimo del hardware para su funcionamiento.
¿Qué es la arquitectura de eventos? También conocida como EDA (Event-driven architecture), este sistema se basa en el uso de software que impulsa la creación, la localización, el consumo y, si procede, la reacción a eventos. Tratándose de un tipo de comunicación asíncrona, su principal hándicap es la incapacidad a la hora de predecir cuándo llegará una petición o una reacción a un evento; éstas podrían ocurrir en cualquier momento. Por este motivo suele ser necesario instaurar un sistema de colas en momentos de tráfico intenso.
Además de todo lo anterior, la arquitectura de eventos permite crear aplicaciones más accesibles y con menos acoplamiento entre servicios, posibilitando así una arquitectura altamente flexible.
AsyncAPI pretende conseguir que trabajar con EDA sea tan fácil como es hoy en día trabajar con APIs RESTful. Uno de los motivos del éxito de las APIs REST ha sido la existencia de estándares como OpenAPI que permiten editar especificaciones, crear documentación automáticamente, generadores de mocks, etc. Y es la contribución a este éxito el principal motor de esta especificación.
Actualmente la estrategia pasa por seguir mejorando, implementando recursos que la hagan más completa y sólida. Esto ha desembocado en la reciente fusión con la Fundación Linux en marzo de este mismo año. Albergar el proyecto en una fundación neutral garantiza la sostenibilidad y el éxito de la iniciativa a largo plazo. Al mismo tiempo supone una auténtica democratización tanto para el proyecto como para su comunidad. El rápido crecimiento que vive actualmente es fruto del apoyo y del trabajo de una gran comunidad.
Otro paso importante que dio la iniciativa hacia su consolidación fue asociarse con Postman a finales de 2020, una plataforma colaborativa líder en el desarrollo de APIs y una referencia dentro del sector en todo el mundo. Esta asociación le permite impulsar el desarrollo de más y mejores herramientas para ayudar a los ingenieros e ingenieras a crear y mantener APIs asíncronas, mientras utilizan sus lenguajes y entornos de trabajo habituales.
AsyncAPI se dirige actualmente a cumplir tres objetivos principales:
1. Unificar todas las especificaciones de las APIs. Nadie hace solo arquitecturas basadas en eventos. La mayoría de los desarrolladores complementan la arquitectura de eventos con APIs REST (OpenAPI), GraphQL, y/o RPC. AsyncAPI pretende que cualquier persona que utilice la especificación y las herramientas de la especificación junto con sus definiciones existentes de OpenAPI, GraphQL y gRPC.
2. Mejorar el funcionamiento de la especificación para que sea cada vez más fluida. Los usuarios y usuarias deberían ser capaces de crear su primera API en cuestión de minutos sin tener conocimientos previos de AsyncAPI.
3. Alcanzar la primera posición entre las especificaciones de APIs más usadas. Para ello será necesario un crecimiento en el número de miembros de la comunidad de entorno a un 400% durante los próximos dos años.
¿Qué aporta AsyncAPI?
Es una especificación extensible y agnóstica del protocolo de comunicación que nos ayuda en cualquier caso basado en mensajes, especialmente albergados en el Internet de las cosas (IoT), entre otros casos de uso. Su principal aportación es la estandarización de la comunicación entre APIs haciendo los mensajes (eventos) más legibles para las máquinas, facilitando así el trabajo de los desarrolladores que desean implementarla.
Tener definida, documentada y aceptada la comunicación entre APIs nos proporciona un control de la información mucho más alto y eficiente. Se trata de una herramienta multicanal por lo que actualmente soporta cualquiera de los protocolos existentes.
Por lo tanto, el conglomerado de herramientas de AsyncAPI permite acelerar el desarrollo de aplicaciones. Su mecanismo de automatización de tareas complejas e imprescindibles facilitan los procesos de generación de códigos, generación de documentación, validadores, etc.
Estamos ante una especificación que facilita, simplifica y acelera el trabajo de los desarrolladores que trabajan con APIs. Como dijo Niels Bohr: “La tecnología ha avanzado más en los últimos treinta años que en los últimos doscientos. El avance exponencial solo continuará”.
Barbaño González Moreno, responsable de comunicación de AsyncAPI