API Gateways & API Managements
API Gateways são como proxies HTTP inteligentes que intermediam todas as requests HTTP dos softwares existentes. São inteligentes porque tem capacidade de processar as requests, alterá-las e filtrá-las com base em esquemas de autenticação, autorização e accounting (AAA).
Eles também tem as mesmas funcionalidades de softwares Proxies Reversos (Reverse Proxy) e Balanceadores de Carga (Load Balancers)
Fiz algumas pesquisas dos API gateways mais famosos e de suas funcionalidades. Dê uma olhada na tabela abaixo.
*Estrelas do github coletadas em 23/05/2020
Nome | Linguagens/Ferramentas | Autorização? | Billing? | Rate Limiting? | Dashboard? | GitHub Stars |
API Umbrella | Lua, Ruby, Nginx, OpenResty | Sim | Não | Sim | Free | 1800 |
Gravitee.io | Java, Spring | Sim | ? | Sim | ? | 1400 |
Netflix Zuul | Java | 11900 | ||||
Spring Cloud Gateway | Java, Spring Boot, Spring Webflux, Project Reactor, Redis (opcional) | ? | ? | Sim | Não | 3500 |
Kong CE | C, Lua, Nginx, OpenResty, PostgreSQL (opcional), Cassandra (opcional) | Sim | ? | Sim | Pago ou Konga (free) | 31800 |
Apache APISIX | ? | |||||
express-http-proxy | NodeJS + Express | DIY | DIY | DIY | Não | 1000 |
node-http-proxy | NodeJS | DIY | DIY | DIY | Não | 12700 |
Fusio | ? | ? | Sim | Sim | ? | 1100 |
KrakenD CE | Go | ? | ? | ? | ? | 603 |
Tyk | Go, Redis | ? | ? | ? | Pago | 7300 |
apiman | ? | ? | ? | ? | ? | 550 |
WSO2 API Manager | ? | ? | ? | ? | ? | 675 |
HAProxy | C, Lua | DIY | DIY | Sim | Não | 2800 |
Envoy | C++, Lua | DIY | DIY | Sim | 19500 | |
Istio | Envoy | DIY | DIY | 30200 | ||
OpenResty | C, Nginx, Lua | DIY | DIY | Sim | Não | Nginx 16300 Openresty 10400 |
Go (puro) | Go | DIY | DIY | DIY | Não | |
Janus | Go | Sim | DIY | Sim | Não | 2300 |
Referências
11 Opensource API Gateways
https://techbeacon.com/app-dev-testing/you-need-api-management-help-11-open-source-tools-consider
Discussão sobre os API Gateways
https://news.ycombinator.com/item?id=18785067
14 Opensource API Gateways
https://geekflare.com/api-gateway/
Nginx + OpenResty
Hello World com OpenResty
https://blog.openresty.com/en/or-hello-world/
Criando módulos Lua com OpenResty
https://blog.openresty.com/en/or-lua-module/
Criando um API Gateway com OpenResty
https://medium.com/@tumulr/building-an-api-gateway-with-nginx-lua-e3dff45e6e63
https://medium.com/@tumulr/enhancing-api-gateway-through-openresty-and-lua-6c156785f0f4
Tutorial Openresty Digital Ocean
https://www.digitalocean.com/community/tutorials/how-to-use-the-openresty-web-framework-for-nginx-on-ubuntu-16-04
HAProxy
HAProxy as an API Gateway
https://www.haproxy.com/blog/using-haproxy-as-an-api-gateway-part-1/
https://www.haproxy.com/blog/using-haproxy-as-an-api-gateway-part-2-authentication/
https://www.haproxy.com/blog/using-haproxy-as-an-api-gateway-part-3-health-checks/
NodeJS
API Gateway em NodeJS, uma perspectiva de um desenvolvedor
https://medium.com/sharenowtech/node-js-api-gateway-a-developer-perspective-8defe575ed21
API Gateway usando Express + http-proxy-middleware + http-proxy
https://medium.com/geekculture/create-an-api-gateway-using-nodejs-and-express-933d1ca23322
API Gateway usando express-http-proxy
https://medium.com/caquicoders/criando-um-simples-api-gateway-com-nodejs-e-express-2ec5369e975d
Biblioteca Express Gateway (abandonada)
https://github.com/ExpressGateway/express-gateway
Java e Kotlin com Spring
Spring Cloud Gateway
https://spring.io/projects/spring-cloud-gateway
Tutorial Spring Cloud Gateway
https://lalverma.medium.com/spring-boot-microservices-api-gateway-e9dbcd4bb754
Tutorial Spring Cloud Gateway 2
https://medium.com/@niral22/spring-cloud-gateway-tutorial-5311ddd59816
Tutorial Spring Cloud Gateway 3
https://aboullaite.me/spring-cloud-gateway/
Go
Criando um API gateway com Go puro
https://itnext.io/why-should-you-write-your-own-api-gateway-from-scratch-378074bfc49e
Documentação do Janus
https://hellofresh.gitbooks.io/janus/content/