Guida

Gateway API: che cosa sono, a che cosa servono ed esempi

Fare in modo che i gateway API funzionino davvero permette di fornire le giuste applicazioni nel momento giusto al dispositivo giusto. Il che presuppone un livello di gestione capace di armonizzare e legare tutti i microservizi correlati

Pubblicato il 20 Giu 2019

gateway API

Gateway API come cerniera strategica tra la migliore user experience omnicanale e tutto il mondo di microservizi e servizi IT. Servizi che possono includere le più varie funzionalità: da quella barra che consente di fare una ricerca su una pagina on line al suggeritore dei prodotti correlati su un sito di e-commerce fino a includere l’integrazione di Google Maps per spiegare come raggiungere una sede aziendale o un evento.

Come e perché le API fanno la differenza nello sviluppo

Acronimo di Application Programming Interface, le API semplificano tutti i criteri di programmazione, consentendo alle applicazioni software e alle piattaforme digitali di interagire l’una con l’altra, orchestrando lo scambio di richieste tra le varie applicazioni indipendentemente dalle loro architetture di riferimento. Inoltre, se gestite correttamente, le API assicurano un’esperienza semplice e semplificata anche agli sviluppatori.

La sfida è assicurarsi che la corretta gestione dell’API sia parte integrante anche delle attività portate avanti anche dai team di operation IT. In caso contrario, si corre il rischio di interrompere la continuità della programmazione, creando al contempo una possibile falla alla sicurezza.

Dalle applicazioni monolitiche ai microservizi, il ruolo del gateway Api

Le API, dunque, sono una parte essenziale della comunicazione nelle reti distribuite. La trasformazione digitale e altri importanti cambiamenti organizzativi spingono le aziende a fornire applicazioni cross-device e multipiattaforma che non sarebbero possibili senza le giuste API che permettono di collegare queste piattaforme. Tradizionalmente, le interfacce del programma applicativo sono state utilizzate per gestire il traffico tra applicazioni monolitiche e client. Nella cosiddetta app economy, gli sviluppatori possono integrare sistemi interni eterogenei per creare applicazioni costituite da tanti microservizi distribuiti.

Rispetto a un approccio monolitico tradizionale, dunque, un’architettura basata sui microservizi consente di suddividere una app nelle sue funzioni di base. Questo consente allo sviluppatore di poter compilare e implementare ogni funzione in modo indipendente. Il vantaggio di questo tipo di programmazione è che i singoli servizi possono funzionare o non funzionare senza che gli altri servizi ne siano impattati.

Supponiamo di avere un’architettura basata su un sistema che può contare anche più di un centinaio di microservizi. Come si fornisce un punto di accesso unificato a ciascun servizio? La risposta è che il processo viene risolto facilmente con l’aiuto di un gateway API.

Gateway API: definizione e significato

L’API gateway è un’applicazione web sofisticata che consente d’intermediare i servizi (o microservizi) ed esporli in maniera strutturata verso l’esterno. In un’architettura di microservizi, ogni microservizio è predisposto per un set di endpoint specifici. Questo può influire sulla comunicazione da client a microservizio. Quando ogni microservizio ha un endpoint pubblico, non solo si ottiene una migliore integrazione ma si stanno supportando al meglio tutti gli obiettivi aziendali.

Perché i gateway API sono così importanti

Come ricordano gli esperti, la gestione di un’API può essere complessa. Per costruire un’API sicura e agile, è necessario adottare un approccio pragmatico. Utilizzare un gateway API permette di creare in modo ordinato tutta la serie di microservizi associati, organizzando meglio il lavoro di programmazione.

I gateway API consentono agli sviluppatori di incapsulare la struttura interna di un’applicazione in diversi modi, a seconda del caso d’uso.

gateway API

In un’architettura di microservizi, infatti, le app client necessitano in genere di utilizzare le funzionalità di più microservizi. Se questo utilizzo viene eseguito direttamente, il client deve gestire più chiamate agli endpoint dei microservizi. Cosa accade quando l’applicazione si evolve e vengono introdotti nuovi microservizi oppure quelli esistenti vengono aggiornati? Se l’applicazione ha molti microservizi, la gestione di un numero elevato di endpoint dalle app client può essere molto difficoltosa. Questo è il motivo per cui risulta molto più agevole disporre di un livello intermedio di riferimento indiretto, che chiama in causa i gateway API.

Dove un’organizzazione può subire una battuta di arresto è quando gli sviluppatori non riescono a mantenere un gateway di microservizi aggiornato. Ogni volta che un microservizio viene aggiunto o rimosso, infatti, il gateway API deve essere regolato di conseguenza. Per questo motivo, in particolare, il processo di aggiornamento per ogni gateway API relazionato a ogni microservizio deve essere reso il più semplice possibile.

Quando i microservizi sono nativi in cloud

Le grandi organizzazioni affrontano la sfida di migrare dai loro sistemi monolitici esistenti a architetture basate su microservizi. Quando si desideri ridefinire un’architettura esistente traghettandola in un modello incentrato su microservizi cloud-nativi, è necessario apportare queste modifiche senza mostrare alcuna interruzione per gli utenti. In questo caso sarà necessario utilizzare l’applicazione monolitica come gateway.

La vera sfida con i microservizi consiste nell’abilitare la comunicazione tra le applicazioni dei microservizi, andando a granularizzare le varie funzioni per ottenere diversi servizi capaci di comunicare tra loro, abilitando il passaggio dei dati. Il modo in cui la chiamata di un utente viene gestita dal front-end del microservizio rivolto al client è un compito importante. Le API forniscono l’interfaccia che rende possibile la formattazione corretta relativa a ogni richiesta di servizio.

I microservizi cloud-native richiedono rilasci rapidi e convalide aggiuntive che vanno ben oltre una tradizionale linea di sviluppo lineare. Queste complessità possono essere gestite solo con l’ausilio di API. I grandi fornitori di cloud riconoscono l’importanza delle API nella gestione delle applicazioni basate su container. Secondo Red Hat, l’integrazione distribuita, i contenitori e le API rappresentano i tre pilastri dell’integrazione Agile. Una volta che il codice dell’applicazione è stato rifattorizzato nel modo microservizi e l’infrastruttura è distribuita tramite container il passo successivo consiste nel completarli con un livello API efficace. Questo consente a ciascun servizio di essere esposto al mondo esterno in modo prevedibile e sicuro.

Problemi di gestione dell’API

Affidarsi alle API sta diventando un passo obbligato per la programmazione. Di conseguenza, gli sviluppatori che hanno il compito di creare un’architettura API corretta si concentrano più sull’estensibilità che sul linguaggio di programmazione.

Gli esperti hanno stilato le best practice utili a evitare di incappare in una serie di errori:

#1 Interruzione degli endpoint API esistenti

Un’interruzione (break change) avviene quando una API viene aggiornata e la modifica provoca un’interruzione in un’altra API esistente. Questo accade quando non c’è coerenza nella progettazione dell’API. Per evitare i break change è necessario stabilire quale sarà il design di una API dall’inizio. È un approccio che dovrebbe essere parte integrante di una buona cultura della programmazione, indipendentemente dal team di appartenenza degli sviluppatori o dalla loro anzianità nell’organizzazione.

#2 Non separare le API dall’app

Con i gateway API c’è un assunto di base: se l’applicazione utente guidata dall’API funziona correttamente, quella API è perfetta. Se l’applicazione incontra dei problemi, gli sforzi per gestire un’API dovrebbero essere separati dall’applicazione. In questo modo è più facile capire se l’API funziona come previsto o meno. Il consiglio degli esperti è di non testare una tua API come utente finale. Anche se un’API funge da interfaccia tra due applicazioni o servizi, dovrebbe essere pensata come un’applicazione definita. Per questo è opportuno verificare se quella determinata API semplifica l’integrazione o se scala i volumi reali di traffico degli utenti. Il test dell’API automatizzato è un punto di partenza, ma dovrebbe anche essere integrato con le API di test in condizioni reali su vari dispositivi mobili e in condizioni di picco dei carichi.

#3 Inadeguatezza della sicurezza

Quando si tratta di sicurezza, molte API vengono tirate in causa e messe all’indice. Con attacchi di denial-of-service distribuiti, bombe XML, cross-site scripting e altre minacce avanzate che si verificano frequentemente, l’autenticazione delle chiavi API di base potrebbe non essere sufficiente. È necessario aggiungere una combinazione di tecniche di crittografia avanzate come Token Web JSON e OAuth per garantire zero compromessi (per inciso, OAuth è il protocollo che consente a Twitter di inviare tweet all’account Facebook dell’utente, senza utilizzare la password di Facebook).

#4 Non identificare i possibili incidenti legati alle future integrazioni

Le integrazioni, almeno all’inizio, sembrano attività semplici e dirette. Quando un’applicazione si ridimensiona, con strumenti in continua evoluzione, gli sviluppatori devono affrontare molte sfide nella creazione e nella manutenzione delle integrazioni. Ad esempio, uno sviluppatore che inizialmente costruisce un’integrazione a senso unico perché quella era la necessità del momento avrà molte difficoltà nel momento in cui avrà la necessità di supportare gli aggiornamenti a due vie. Inoltre, gli strumenti vengono aggiornati ogni pochi mesi. Ogni cambiamento nell’integrazione creerà più problemi nella tracciabilità. Infine, quando l’integrazione fallisce, tutta l’organizzazione ne risente. Per questo è importante non perdere di vista sia i modelli di progettazione che gli anti-pattern che cambiano, coinvolgendo il team di test e mappando le integrazioni. È questo che evita ai nuovi sviluppatori entranti di sentirsi degli alienati quando devono farsi carico di gestire le API create da altri sviluppatori.

Gateway API alleati dei microservizi

Chiunque lavori su una base di codice monolitica cerca una migliore manutenibilità del codice e ciò significa fare uso di API. Lo stesso vale per chiunque inizi a esplorare i numerosi vantaggi dei microservizi. In questo contesto, i gateway API sono un alleato importante degli sviluppatori, aiutandoli a gestire le interazioni, ad adattarsi ai cambiamenti, supportandoli nell’evolutiva della programmazione, illuminando nuovi orizzonti applicativi e nuovi servizi.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4