Introduction
Fran Méndez
2
Email Service
REST API
Slack Notifications
A basic EDA
THE ARCHITECTURE
3
Streetlight #1
(with light sensor)
Control Panel
Streetlight #2
(with light sensor)
A basic IoT EDA
THE ARCHITECTURE
4
Twitter Streaming API
Browser
A basic streaming API
THE ARCHITECTURE
SPECIFICATION
THE ASYNCAPI
6
Event-Driven microservices
Internet of Things APIs
Streaming APIs
…and actually pretty much any system based on messages.
The purpose
THE SPECIFICATION
7
AMQP
Kafka
WebSocket
NATS
MQTT
STOMP
HTTP
Any protocol!
Protocol-agnostic
THE SPECIFICATION
“
Protocol information is important for implementation details but it shouldn’t be a blocker for defining your interface.
8
Info
Servers
Channels
Components
A file per application
THE SPECIFICATION
9
Info
The “info” object is a placeholder where you can define information about your application.
This is very useful for your consumers, especially in large organizations or when you’re sharing it publicly.
Application information
THE SPECIFICATION
10
Servers
The “servers” object is a placeholder where you can define information about the servers where your consumers can interact with your application.
Note that servers can also be message brokers.
Servers information
THE SPECIFICATION
11
Channels
The “channels” object is the trunk of the AsyncAPI document. Channels are also known as topics or routing keys, depending on the protocol you choose for communication.
More importantly, they hold the operation and message objects, which we’ll define next.
Communication channels
THE SPECIFICATION
12
Operations & Messages
Every channel can have two operations: publish and subscribe. They define what consumers can do with your application and how the message looks like.
The “headers” object must contain application-specific headers only and be of type: object.
Publishing and subscribing
THE SPECIFICATION
13
Operations & Messages
Both “headers” and “payload” are defined using JSON Schema Draft-07.
You can use different schema languages like Avro or RAML to define the “payload” by leveraging the schemaFormat attribute.
Publishing and subscribing
THE SPECIFICATION
14
Components
The “components” object is a placeholder for various reusable pieces of the document.
It helps you reduce repetition inside the AsyncAPI document and make it more modular, easy to maintain, and less error-prone.
Reusing components
THE SPECIFICATION
INITIATIVE
THE ASYNCAPI
16
Great compatibility through AsyncAPI message bindings.
Since AsyncAPI is protocol-agnostic, it’s also possible to make it work with NATS.
AsyncAPI has been heavily inspired by OpenAPI. The OpenAPI 3.1.0 schema format is very similar to the AsyncAPI one.
+
CNCF and LF projects
THE SPECIFICATION
17
New Tools
THE INITIATIVE
18
Software Architecture
Trends Report
Technology Radar
2020
RapidAPI Developer Survey and Insights 2020-2021
Recognition
THE SPECIFICATION
19
Postman partnership
On December 8 of the year 2020, we announced a partnership with Postman.
This helps us grow the core team and focus on more ambitious results.
Growth
THE INITIATIVE
20
We joined Linux Foundation early 2021 to guarantee the neutrality of the initiative.
The AsyncAPI Initiative maintains both the specification and the essential tools.
Linux Foundation
Growth
THE INITIATIVE
21
“
AsyncAPI becomes the #1 API specification for defining and developing APIs.
Any kind of APIs.
Our Vision
THE INITIATIVE
22
Our Sponsors
THE FINANCES
23
$74,896.71 USD
💰 Balance
Money Stuff
THE FINANCES
24
11 people
10 issues
$1500 grant
Mentorship Program 2022
THE INITIATIVE
25
Join us!
THE INITIATIVE
@fmvilas
Thank you!