Cloud Native is gaining in popularity as more developers look to build highly scalable and maintainable solutions. But what does cloud native really mean, and how are APIs related?
The Cloud Native Computing Foundation gives the following definition of cloud native:
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.
For how Oracle defines cloud native, see What is Cloud Native?
We can explore multiple concepts and capabilities available for adopting cloud native, but for this post, we’re going to explore the value of APIs and API design.
Cloud native promotes the use of microservices, which are loosely coupled and self-contained. Communication between services takes place using a well-defined interface—an API. As we create services to perform specific tasks, they’re often made to solve a business use case. A challenge for developers is the ability to quickly consume the services and use them to meet their needs.
Here, API design comes in. By designing and describing the API, we can accelerate development and ongoing consumption of the services.
In this post, we focus on web APIs as RESTful web services over HTTP or HTTPs. When building these services, you can easily get something deployed and end up with a difficult API consumption experience as developers try to understand the capabilities of the API and use it. Creating an API description in an implementation-agnostic format can provide the following distinct benefits:
The developers can collaborate, understand, and agree on the behavior of the API before investing in implementation.
Behavior can be rapidly prototyped to better understand the behavior.
Parallel development can take place where the API provider (owner of the API) can implement the API and the API consumer (customer of the API) can develop against the prototype until the implementation is ready.
After release, the API is more consumable. Other developers can discover and understand how to consume the API in future projects.
In the early days of API design, numerous formats existed, including API Blueprint, Swagger, and RAML. Swagger evolved into what is now known as OpenAPI and has become the de facto standard for describing APIs. Multiple companies, including Oracle, support it. As a proud member of the OpenAPI Initiative, we support the interoperability and reusability of APIs, and having a well-supported description format is important.
Our position on OpenAPI might come as a surprise to some, especially because Oracle Apiary created API Blueprint, but being open is more important. As we added API Management capabilities into Oracle Cloud Infrastructure (OCI) API Gateway, we added the support for OpenAPI 2 and 3 as our primary API description format.
OCI API Gateway is a cloud native, serverless gateway service that you can use to provide protected API network endpoints for your cloud native services, implemented in containers or serverless functions.
You can author your API description using any tool available in the market, including Oracle Apiary, which provides a platform for creating, collaborating, prototyping, and documenting your APIs. Apiary, OCI API Gateway, and Terraform provide a complete solution to designing and deploying cloud native APIs.
APIs are a key component of cloud native architectures. To promote high-quality APIs, beginning with a design is important. Using an API description format, such as OpenAPI, can be extremely beneficial in the documentation and understanding of cloud native services. Thanks to the implementation-agnostic nature of OpenAPI, developers are free to use whatever tools they want, and they can deploy cloud native APIs on Oracle Cloud Infrastructure.