AsyncAPI-First Design for Event-Driven Architectures: Improve Developer Experience - José Pedro Abreu Silva (2024)
Modern systems, from real-time Sports analyses to Smart houses, have contributed to the growth of the demand for responsive and scalable architectures. The adoption of Event-Driven architectures (EDA) is currently the most used solution to fulfill these demands. Unlike traditional request-response models like REST APIs, these architectures revolve around various events' propagation, detection, and response, from sensor inputs to user interactions. Among all the paradigms in this scenario, the publish/subscribe paradigm is one of the most used and consists of an asynchronous exchange of messages based on a category or topic. This exchange is done using an event bus or a broker. Although these kinds of architectures fulfill most of the needs of modern systems, there are a lot of challenges associated with them. The more severe are related to the complexity of handling the messages and ensuring their overall consistency. In most systems, a message is composed by the event header in a specification like CloudEvents and the event data and is serialized using Avro or JSON format. The field's novelty also makes the number of tools to interact with these architectures low, making the overall design and development harder. This dissertation researches different ways of describing events and explores the development of developer-friendly helper tools to design and visualize these asynchronous and distributed architectures. Their key functionalities include bootstrapping a specification file compliant with the AsyncAPI specification from an easy and intuitive Graphical User Interface (GUI) and the ability to visualize the whole architecture from imported specification files. To evaluate these tools, experiments will be conducted with subjects with different backgrounds of expertise. As organizations increasingly embrace event-driven paradigms, this tool not only contributes to the growing body of knowledge in this field but also offers a more straightforward solution for architects to create responsive and robust systems with more efficiency while having a better experience.