Implementare il monitoraggio delle API per un'infrastruttura efficiente

Al giorno d'oggi le infrastrutture si affidano fortemente alle API. Per mantenere le prestazioni, evitare l'interruzione dei flussi di lavoro e garantire la massima sicurezza di tutti i servizi dipendenti, è importante testarle e monitorarle.

Che cos'è il monitoraggio delle API?

API è l'acronimo di Application Programming Interface (Interfaccia di programmazione di un'applicazione) e consente a due o più computer di comunicare tra loro. Di solito viene creata insieme al software per consentire agli utenti esperti o ad altri sviluppatori, interni ed esterni, di utilizzare e sfruttare i servizi offerti da quel software.

Va da sé che il monitoraggio delle API è lo sforzo cumulativo e la pratica di monitorare il buon funzionamento di tale interfaccia. Gli strumenti di monitoraggio delle API sono progettati per analizzare le prestazioni delle API e la correttezza dei dati restituiti. L'ultima parte è fondamentale, poiché altri componenti o software si affidano alle API per rispondere correttamente e restituire i dati attesi. In caso contrario, non funzionano o producono risultati inaspettati.

Le API sono come blocchi di costruzione di strutture software più grandi. Devono funzionare adeguatamente per essere utilizzabili da numerosi utenti e devono restituire il giusto tipo e la giusta quantità di dati per essere affidabili. Il monitoraggio delle API garantisce che entrambe le cose siano vere.

Che cos'è il test delle API?

Mentre il monitoraggio delle API si concentra sulle API in stato di produzione, il test delle API viene prima. È un processo idealmente integrato nello sviluppo di ogni API e ne accompagna l'ulteriore perfezionamento. Il test delle API non riguarda tanto la stabilità e l'affidabilità, quanto piuttosto la garanzia che il nuovo codice non interferisca con le funzionalità o che non abbia un impatto significativo sulle prestazioni complessive.

Viene utilizzato anche per evitare bug che si insinuerebbero in produzione in un secondo momento, verificando passo dopo passo che tutte le funzioni e gli endpoint (ciascuno dei nodi con cui ci si può interfacciare) dell'API precedentemente funzionanti restituiscano ancora dati validi. Il test degli endpoint dell'API controlla tutti i punti che possono essere richiamati in un'API per assicurarsi che nessuno sia rotto o restituisca risultati inaspettati.

Una volta che l'API è considerata stabile e completa, viene messa in produzione e controllata dagli strumenti di monitoraggio dell'API. La fase di test è terminata e con essa il test delle API diventa il monitoraggio delle API.

illustrazione che mostra un puzzle circondato da diversi esagoni

Come funziona il monitoraggio delle API

Il modo più semplice per eseguire il monitoraggio delle API è chiamare ciascun endpoint e verificare che risponda, restituisca i dati corretti e abbia prestazioni accettabili. In poche parole, questo è il monitoraggio degli endpoint API, che costituisce la maggior parte del monitoraggio delle API. Esistono però soluzioni più avanzate per il monitoraggio degli endpoint, come la scrittura di test sintetici che emulano il modo in cui gli utenti interrogano un'API con robot scritti su misura. Questo fa parte del monitoraggio sintetico, che va ben oltre il semplice monitoraggio delle API, ma è spesso usato per avere un metodo più automatizzato e personalizzato.

Indipendentemente dalle possibilità offerte dallo strumento di monitoraggio delle API scelto, ci sono alcune aree importanti che devono essere controllate quando si esegue il monitoraggio delle API.

Disponibilità: Se uno o più endpoint API smettono di rispondere, questo è il problema più importante di cui occuparsi. Gli avvisi che vengono attivati non appena un endpoint smette di rispondere sono essenziali per il monitoraggio degli endpoint API.

Prestazioni: Anche se tutti gli endpoint restituiscono correttamente le chiamate, un'API è poco utile se le sue prestazioni non sono all'altezza. Occorre verificare che i codici di ritorno HTTP siano corretti e monitorare i tempi di risposta per assicurarsi che non vi sia un degrado che possa segnalare un problema crescente. Si devono anche considerare le differenze di prestazioni tra gli ambienti di sviluppo e quelli di produzione, in quanto possono fornire indicazioni sui bug.

Convalida dei dati: Un'API è inutile se gli endpoint restituiscono dati diversi da quelli attesi o mostrano comportamenti casuali. Devono corrispondere alle aspettative degli utenti e dei servizi che dipendono dall'API. La convalida dei dati restituiti con un insieme di dati validi è facilmente realizzabile con la maggior parte degli strumenti di monitoraggio delle API e può essere eseguita rapidamente anche con test sintetici.

Queste sono le basi del monitoraggio delle API. Sia che si stia monitorando un'API REST o qualsiasi altro tipo di API, questi tre aspetti non devono essere trascurati in nessun approccio al corretto monitoraggio delle API.

Vantaggi del monitoraggio delle API

Il monitoraggio delle API e il suo "figlio" più comune, il monitoraggio delle API REST, possono aiutarti non solo con le tue API, ma anche con le integrazioni. Gli strumenti di monitoraggio delle API possono fornirti informazioni sulle API di fornitori e partner di terze parti, come i servizi cloud che utilizzi o un sistema di pagamento per il tuo sito di e-commerce. Questo non solo aiuta a identificare i problemi che non sono di tua responsabilità, ma anche a responsabilizzare i tuoi partner.

Allo stesso modo, se utilizzi un'API esterna e ti affidi ad essa per fornire una serie specifica di dati, il monitoraggio dell'endpoint dell'API può identificare immediatamente i cambiamenti nelle funzionalità. Se un endpoint dell'API cambia, risponde alle chiamate in modo diverso o viene completamente rinominato, sarai informato e potrai agire di conseguenza per evitare interruzioni del servizio. I percorsi degli utenti si basano spesso su diverse API e concatenano una richiesta dopo l'altra. Se una di queste API introduce modifiche o subisce un'interruzione temporanea, i flussi di lavoro critici per l'azienda possono essere interrotti. Il monitoraggio di ogni endpoint API è la chiave per evitare interruzioni minori o maggiori.

Anche la sicurezza delle API è un argomento importante. I malintenzionati spesso sfruttano le vulnerabilità e manomettono gli endpoint API o ascoltano le chiamate all'API. Con il monitoraggio delle API, puoi assicurarti che l'autenticazione funzioni e che la sicurezza delle API a cui ti connetti non sia compromessa, osservando i comportamenti anomali. Se si verificano comportamenti anomali, è possibile che vi sia già una violazione della sicurezza e occorre prestare molta attenzione ai dati che si trasferiscono con l'API.

Infine, il monitoraggio delle API REST è particolarmente importante per gli sviluppatori che devono creare servizi che dipendono da altri, assicurandosi che l'API sia efficiente e perfettamente funzionante in modo che questi servizi continuino a funzionare. Se hai sviluppato un'API di questo tipo, dovresti assicurarti che non ci siano problemi per preservare la tua reputazione di fornitori di API.

Metriche API chiave da tenere d'occhio

Indipendentemente dal fatto che si stia monitorando un'API REST o un altro tipo di API, ci sono alcune metriche chiave condivise. Abbiamo accennato brevemente all'argomento in precedenza, ma ora vogliamo entrare più nel dettaglio.

La disponibilità e il tempo di attività devono essere la prima preoccupazione. Un'API deve funzionare e il monitoraggio della sua costante disponibilità è la prima metrica chiave da controllare. Allo stesso tempo, monitorando il tasso di errore dei singoli endpoint, è possibile determinare la frequenza con cui un'API non riesce a fornire i risultati desiderati a causa di errori di autenticazione, di rete o di codice. Questo potrebbe indicare un problema con l'API o con i servizi a cui l'API accede e deve essere indagato ulteriormente.

Anche le metriche relative alle prestazioni sono fondamentali e devono essere esaminate regolarmente per garantire che l'API funzioni correttamente. Si tratta almeno dell'utilizzo della CPU e della memoria dei server che ricevono le chiamate API e della latenza di risposta dell'API nel suo complesso. I grandi picchi di utilizzo o di latenza devono essere controllati il prima possibile per evitare problemi crescenti.

È inoltre importante monitorare il consumo complessivo dell'API. Si tratta del numero totale di richieste al minuto o al secondo che l'API gestisce. Questo dato è importante per la capacità, in quanto consente di sapere se l'API dispone di risorse sufficienti per servire tutte le chiamate o se è in corso un cyberattacco che, ad esempio, sta causando un picco di richieste.

Le sfide del monitoraggio delle API

Il monitoraggio delle API può diventare piuttosto complesso e rappresenta una sfida crescente per gli amministratori IT. In primo luogo, esistono diversi tipi di API. Il monitoraggio delle API REST è forse il più popolare, ma non l'unico da considerare. GraphQL è un'aggiunta più recente che consente un controllo più granulare delle richieste di dati, il che introduce alcuni problemi aggiuntivi durante il monitoraggio. L'architettura delle API può essere monolitica o basata su microservizi o serverless computing, ognuno dei quali pone una serie di sfide agli amministratori IT. Un'API monolitica può diventare un collo di bottiglia per l'infrastruttura se le prestazioni non vengono monitorate attentamente. Tuttavia, è anche più facile da monitorare rispetto a centinaia di microservizi, che possono essere più agili e scalabili, ma sono anche più complessi.

A volte le API vengono create in modo da non divulgare alcune informazioni, soprattutto per proteggere i dati proprietari. Una parte dell'infrastruttura potrebbe non essere affatto disponibile come API o non fornire un quadro completo delle sue prestazioni. Nel caso del monitoraggio delle API, bisogna considerare quanto sia possibile controllare dall'esterno se l'API che si sta monitorando è un'API di terze parti.

Meno comuni, ma comunque possibili, sono le soluzioni di monitoraggio che occupano troppe risorse o non sono adeguatamente adattate ai requisiti del software. Ciò può rallentare i server di monitoraggio o sovraccaricare la rete utilizzata dall'infrastruttura API.

Il monitoraggio delle API può rilevare un calo delle prestazioni che non è dovuto alle API stesse, ma le riguarda semplicemente. Dipende molto da come è impostata l'infrastruttura di monitoraggio.

I dati siloed sono una sfida più frequente del monitoraggio delle API. Si verificano quando vengono utilizzati diversi tipi di dati da diverse parti del sistema. Se un'API cerca di connettere dispositivi che utilizzano un formato o un tipo di dati diversi, possono verificarsi errori che inducono gli amministratori IT a pensare che l'API stessa abbia dei bug. Questi errori devono essere evitati o corretti prima che raggiungano la fase di monitoraggio dell'API, idealmente nella fase di test dell'API.

Monitoraggio API e monitoraggio sintetico

Il monitoraggio delle API può essere eseguito con diversi strumenti, anche se si tratta per lo più di un monitoraggio reattivo: gli endpoint di un'API vengono controllati ricorsivamente per verificarne la disponibilità, gli errori e la correttezza. Un metodo più attivo per monitorare gli endpoint delle API consiste nell'utilizzare test sintetici che sfruttano la potenza del monitoraggio sintetico. Con una soluzione capace come Checkmk Synthetic Monitoring, è possibile simulare richieste e azioni provenienti da tutto il mondo verso la propria API. Le richieste e le operazioni reali normalmente effettuate dagli utenti finali o dagli sviluppatori su un'API possono essere simulate con i test eseguiti dal monitoraggio API di vostra scelta.

Il monitoraggio sintetico è utile in tutte le fasi dello sviluppo dell'API: sia durante il test dell'API che in seguito durante il monitoraggio dell'API. La possibilità di sviluppare test personalizzati, adattati all'uso previsto dell'API, è preziosa per scoprire bug e migliorare l'esperienza di utilizzo dell'API. Inoltre, potresti semplicemente voler avere un maggiore controllo sulle modalità di monitoraggio di un fornitore di terze parti da cui dipende la tua infrastruttura.

Checkmk Synthetic Monitoring incorpora la flessibilità del framework di testing della Robot Foundation, noto nella comunità open source per la scrittura di test sintetici, per consentire efficienti funzionalità di monitoraggio sintetico per il monitoraggio delle API e altro ancora.

FAQ

Qual è la differenza tra API SOAP e REST?

SOAP (Simple Object Access Protocol) è una specifica per un protocollo di messaggistica. Viene utilizzato per scambiare informazioni strutturate tra computer e reti. Non è un'API né una guida per configurarne una. REST (Representational State Transfer), invece, è uno stile architettonico per la progettazione e lo sviluppo di strutture software, comprese le API. Un'API REST è un'API costruita secondo i principi di REST. SOAP e REST sono quindi concetti completamente diversi che perseguono obiettivi completamente differenti.

Qual è la differenza tra API GraphQL e REST?

Le API GraphQL e REST sono entrambe utilizzate per costruire servizi web, ma con approcci e caratteristiche diverse. GraphQL è un linguaggio completo per interrogare un'API per ottenere dati. A differenza delle API basate su REST, dove gli endpoint vengono interrogati per ottenere i dati, con un'API GraphQL viene creata una query per richiedere più informazioni, indipendentemente dall'endpoint. GraphQL utilizza un singolo endpoint ma più query, spesso piuttosto complesse, per accedere all'API. Le API REST, invece, sono basate su endpoint, più semplici da interrogare, ma con numerosi endpoint disponibili.