Managing APIs evolution while maintaining System Interoperability - Alves, Fábio Alexandre Carneiro (2023)
Flutter Entertainment, a global sports betting company, has experienced a significant increase in online transactions due to the preference for online solutions and its recent acquisitions. Additionally, with the recurrent improvement of current features and the development of new ones, more components are being created and more updates are being done to existing components. This growth in both the number of APIs and development features have made it challenging to manage the Web APIs’ and their interactions. Additionally, the manual management of API contracts and the necessity to sync the APIs’ changes between the clients and the APIs’ owners have resulted in both increased development time and incidents. Moreover, due to the high volume of manual operations and the rapid pace of system evolution, the documentation quickly becomes outdated which exacerbates the problem. With all of these issues, the low system interoperability is becoming increasingly apparent which is the problem that this work aims to address. The main objective of this work is to explore the issue of handling APIs evolution while maintaining system interoperability. For this, some topics must be addressed such as APIs documentation, schema registry and versioning. That said, work is carried out to explore architecture APIs patterns and good practices, system interoperability architectures and current interoperability solutions. Additionally, a proof of concept that satisfies the problem and its evaluation is presented. After careful consideration of the available market options, the solution with the most benefits for the context of this case study is AsyncAPI, being this specification use as a proof of concept for two specific APIs of the tennis flow, namely TMT and IMG. To handle versioning, it is used Semantic Versioning. Additionally, specific API lifecycle steps were established and are being used in the documentation of APIs. This documentation is generated automatically using the AsyncAPI specification and is kept up-to-date through the implementation of GitHub workflows. To manage the API contracts, a dedicated GitHub repository is utilized, containing all the necessary schemas referenced within the specification. Lastly, the Microcks tool is used as a solution to handle validation and API testing, enabling contract testing to be performed on the APIs and the implemented work. In conclusion, the main objective of studying solutions to maintain system interoperability with evolving APIs have been achieved through the successful development of a comprehensive proof of concept. All identified topics are effectively addressed, and the evaluation of the user experience, both before and after the implementation, proves it. Overall, a notable improvement is observed in the system’s interoperability and functionality.