Now that you’ve had a thorough overview of App Engine, let’s transition to Cloud Endpoints and Apigee Edge. These are management tools for Google Cloud’s application programming interface, or API. So what exactly is an API? A software service’s implementation can be complex and changeable. If other software services had to be explicitly coded in detail in order to use that service, the result would be brittle and error-prone. So instead, application developers structure the software they write so that it presents a clean, well-defined interface that hides unnecessary detail, and then they document that interface. That’s an application programming interface. The underlying implementation can change, as long as the interface doesn’t, and other pieces of software that use the API don’t have to know or care. Sometimes you do have to change an API, perhaps to add or deprecate a feature. To cleanly make this kind of change to the API, developers create versions. For example, version 2 of an API might contain calls that version 1 does not. This means that programs that consume the API can specify the API version they want to use in their calls. Supporting an API is a very important task, and Google Cloud provides three API management tools: Cloud Endpoints, API Gateway, and Apigee Edge. Cloud Endpoints is a distributed API management system that uses a distributed Extensible Service Proxy, which is a service proxy that runs in its own Docker container. The goal is to help you create and maintain even the most demanding APIs with low latency and high performance. Cloud Endpoints provides an API console, hosting, logging, monitoring, and other features to help you create, share, maintain, and secure your APIs. You can use Cloud Endpoints with any APIs that support the OpenAPI Specification. Cloud Endpoints supports applications running in App Engine, Google Kubernetes Engine, and Compute Engine. Clients include Android, iOS, and Javascript. API Gateway is another API management tool. Web-based services today provide a huge variety of functionality, meaning everything from map, weather, and image services, to games, auctions, and many other service types. Service providers have many options for how to implement, deploy, and manage their services. For example, one service might be developed in Java or .NET, while another uses Node.js. Backend implementations can also vary for a single service provider. A service provider might have legacy services implemented using one architecture, and new services implemented using a completely different architecture. API Gateway enables you to provide secure access to your backend services through a well-defined REST API that is consistent across all of your services, regardless of the service implementation. Clients consume your REST APIS to implement standalone apps for a mobile device or tablet, through apps running in a browser, or through any other type of app that can make a request to an HTTP endpoint. Another Google Cloud platform available for developing and managing API proxies is Apigee Edge. Unlike Cloud Endpoints, Apigee Edge has a specific focus on business problems, like rate limiting, quotas, and analytics. In fact, many Apigee Edge users provide a software service to other companies. Backend services for Apigee Edge don't have to be in Google Cloud, and as a result, engineers also often use it to take apart legacy applications. So, instead of replacing a large, important application in one move, they can use Apigee Edge to peel off its services individually instead. This allows them to stand up microservices to implement each in turn until the legacy application can finally be retired.