The Extensible Service Proxy
Extensible Service Proxy, a.k.a. ESP is a proxy which enables API management capabilities for JSON/REST or gRPC API services. The current implementation is based on an NGINX HTTP reverse proxy server.
Features: authentication (auth0, gitkit), API key validation, JSON to gRPC transcoding, as well as API-level monitoring, tracing and logging. More features coming in the near future: quota, billing, ACL, etc.
Easy Adoption: the API service can be implemented in any coding language using any IDLs.
Platform flexibility: support the deployment on any cloud or on-premise environment.
Superb performance and scalability: low latency and high throughput
ESP can Run Anywhere
However, the initial development was done on Google App Engine Flexible Environment, GCE and GKE for API services using Open API Specification and so our instructions and samples are focusing on these platforms. If you make it work on other infrastructure and IDLs please let us know and contribute instructions/code.
Common prerequisites used irrespective of operating system and build tool chain are:
To download the Extensible Service Proxy source code, clone the ESP repository:
# Clone ESP repository git clone https://github.com/cloudendpoints/esp # Initialize Git submodules. git -C esp submodule update --init --recursive
- doc: Documentation
- docker: Scripts for packaging ESP in a Docker image.
- include: Extensible Service Proxy header files.
- src: Extensible Service Proxy source.
- google and third_party: Git submodules containing dependencies of ESP, including NGINX.
- script: Scripts used for build, test, and continuous integration.
- test: Applications and client code used for end-to-end testing.
- tools: Assorted tooling.
- start_esp: A Python start-up script for the ESP proxy. The script includes a generic nginx configuration template and fetching logic to retrieve service configuration from Google Service Management service.
To find out more about building, running, and testing ESP, please review
Your contributions are welcome. Please follow the contributor guidlines.