GitHunt
BO

Extensible Service Proxy

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.

ESP provides:

  • 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.

Prerequisites

Common prerequisites used irrespective of operating system and build tool
chain are:

Getting ESP

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

Repository Structure

  • 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.

ESP Tutorial

To find out more about building, running, and testing ESP, please review

Contributing

Your contributions are welcome. Please follow the contributor
guidlines
.

Languages

C++45.7%Perl29.4%Shell9.1%Python8.4%Go3.7%JavaScript1.8%C1.1%Dockerfile0.5%Perl 60.1%Lua0.1%Gnuplot0.1%HTML0.0%Makefile0.0%
BSD 2-Clause "Simplified" License
Created January 15, 2019
Updated January 17, 2019