APIs are crucial for any microservices-based cloud architecture—as a means of communication between its services. Yet, developing an API from scratch is not a trivial task. You need to provide meta data, write server code, create a DB structure, develop new methods for new objects, etc. Luckily, many of these tasks can be automated. In this blog post, we investigate what are the key criteria for selecting API automation tools for distributed cloud-based apps.
Enabling API automation: research
Dozens of tools have been created over the years, covering various aspects of API development and supporting different technology stacks. By using one or a combination of such tools, you can shorten development cycles and make it easier to maintain the system in the future. The only question is which one to choose.
Recently, our solution architects did some research into API frameworks that can be used for distributed cloud-based systems. The tools were evaluated across 19 technical criteria we considered to be important. Our goal was to find an API tool that would automate the entire development process and significantly shorten the release cycle. The parameters were mostly focused on building APIs for a large-scale Java project based on the Cloud Foundry PaaS.
Key selection criteriaThe following table demonstrates what parameters and why our team considered to be important.
|1. License type / open source||For the sake of customization, we needed open source tools.|
|2. API code generation||The main goal of this research was to find the tools that could automate the process of designing APIs.|
|3. Request-response model and endpoint||Data formats and types of protocols to work with (e.g., JSON, REST) were also under consideration.|
|4. Programming languages/platforms||Our project was Java-based, so all the tools under consideration had to support it.|
|5. Availability as a service||This would give us an ability to test the products and start using them.|
|6. Stateless process||For simpler implementation of a cluster and high level of scalability.|
|7. Authentication and authorization||Support for popular standards (OAuth2, etc.) would enable rapid integration into existing systems.|
|8. Monitoring / logging||Would be nice to have for debugging.|
|9. Scalability||The chosen solutions should run on multiple instances.|
|10. Data storage||The tools should support NoSQL databases, such as Cassandra.|
We started the evaluation with Apache UserGrid, WSO2 API Manager, Cumulocity, MuleSoft API Gateway, and StrongLoop Server. These five tools satisfied most of our initial criteria.
In the end, our selection narrowed down to Apache UserGrid and WSO2 API Manager. If you'd like to know which of the options was selected and why, read our full study, "Comparison of API Automation Tools: Apache UserGrid vs. WSO2 API Manager." There, we provided a scoring framework with all 19 parameters important for evaluation.
Obviously, the list of the parameters for evaluation may vary—depending on a particucal use case. So, what about you, how do you automate API development for your cloud apps?