Software open source come API gateway

Buongiorno a tutti, vi scrivo per richiedere un suggerimento.
Vorremmo rendere pubbliche alcuni API relative a servizi del Comune, e contestualmente proteggere, monitorare e gestire le stesse attraverso un API gateway. Avete dei consigli o delle esperienze da condividere sulla eventuale scelta del prodotto utile a realizzare quanto richiesto?
Vi ringrazio in anticipo del tempo dedicato.
Ruggero.

Ciao @ruggero.ruggeri,

non abbiamo ancora un software opensource di riferimento, ma è in roadmap l’individuazione di un api gateway. Alcuni di quelli menzionati dai vari enti sono WSO2, Kong e 3Scale.

Se mi contatti:

  • via mail: roberto@teamdigitale.governo.it
  • o sul canale #api di https://slack.developers.italia.it
    possiamo parlare del tema e metterti in contatto con altre amministrazioni che stanno seguendo lo stesso percorso.

Fai sapere!
R.

Ciao @ruggero.ruggeri e @Roberto_Polli,
in AgID stiamo utilizzando con ottimi risultati Kong.

A disposizione per ulteriori info.

Umberto Rosini
Agenzia per l’Italia Digitale

vedo che la risposta è del 2019, mi domando se ora nel 2021 Kong è ancora la soluzione preferita.
Potreste fornire la vostra esperienza? grazie

Ciao @ruggero.ruggeri.

Ad oggi le amministrazioni usano diversi prodotti: qui abbiamo integrato alcuni contributi https://github.com/teamdigitale/api-gateway-tools/
ma è sempre possibile per chiunque proporre aggiornamenti e modifiche.

Non credo si possa parlare di soluzioni “preferite” ma di quelle che permettono di indirizzare nel modo più efficiente i casi d’uso, che sono diversi ad esempio se si trattano dati sanitari o dati aperti, alti o bassi volumi di traffico, …

Puoi anche provare a chiedere sul canale #api di slack.developers.italia.it

Ciao noi stiamo facendo cose molto semplici con traefik a livello di api e dei siti web: solo rate-limiting basato su ip sorgente (niente autenticazione, livelli diversi di rate-limit per cliente etc…). E’ molto semplice e si sposa bene con il fatto che facciamo deploy con container docker, ma si può usare agevolmente anche senza avere applicazioni dockerizzate.
Oltre al rate-limiting si può fare anche circuit-breaker, alterazioni degli header, mappare versioni diverse delle API dietro a servizi distinti, tracing delle chiamate http tra vari servizi etc… ma ancora non siamo arrivati ad usare nulla di tutto questo :slight_smile:

Il suo punto di forza è la semplicità di configurazione: se avete mai configurato un rate-limiting su haproxy, rimarrete sorpresi di come si possa ottenere un risultato analogo con traefik scrivendo 4 righe in croce :slight_smile:

In una immagine:

In qualche caso specifico stiamo iniziando a sperimentare KrakenD, un vero API Gateway, a differenza di traefik che è un webrouter generico.

Ha sicuramente capacità molto superiori, in particolare sulla manipolazione di quello che gli passa sotto il naso e dai benchmark anche come performance è molto più avanti. Noi lo stiamo (ann)usando davanti a delle API minimali fatte con json-server per delegare la gestione dei JWT Token (firma, controllo firma): nella realizzazione di servizi online per Enti medio-piccoli ci capita spesso di dover esporre rapidamente un dataset che ci arriva in CSV (o peggio) e quindi dobbiamo mettere online rapidamente un’api con poca o nessuna logica, solo esposizione di dati.

Sia krakend che traefik li monitoriamo tramite prometheus, per traefik ci sono delle belle dashboard già pronte all’uso per Grafana, mentre per krakend la dashboard di grafana se la tengono per i clienti a pagamento… :angry:

Ecco uno screenshot di una mattinata un po’ movimentata:

Spero di esservi stato utile.
L

2 Mi Piace

Ciao @lorello , sarebbe interessante capire come gestire gli header di ratelimit indicati nel modello di interoperabilità tramite traefik o krakend: avete fatto qualche esperimento sulla cosa?

Eh, una volta ho chiesto aiuto a uno bravo… che ha fatto pure una pull request :wink: