Home Articoli tecnici Cache delle API GraphQL all’edge con hosting senza server sul livello 0 di Limelight
Applications

Cache delle API GraphQL all’edge con hosting senza server sul livello 0 di Limelight

About The Author

Outline

GraphQL è un linguaggio di query diffuso per la lettura e la modifica dei dati nelle API ed è una tecnologia chiave nella tendenza verso siti Web headless. Consente ai Web Builder di rendere il loro livello API flessibile, potente ed efficiente. Tuttavia, gli sviluppatori devono affrontare sfide quando memorizzano nella cache le API GraphQL all’edge della rete. Per questo motivo, Edgio ha sviluppato una soluzione che semplifica il caching edge per GraphQL e consente ai team di ospitare il server GraphQL in un ambiente senza server. Il caching GraphQL colma un vuoto nel mercato delle applicazioni Web headless e API-first e dimostra il valore di Layer0 e Limelight che uniscono le forze.

Cos’è GraphQL

Il linguaggio di query GraphQL migliora le API REST tradizionali e ha registrato un’enorme crescita e adozione tra gli sviluppatori. Originariamente incubato su Facebook e successivamente open source, GraphQL fornisce un recupero dei dati dichiarativo ed efficiente, migliorando significativamente le prestazioni. Inoltre, lo schema fortemente tipizzato tra client e server consente ai team di iterare le proprie API in modo più rapido e indipendente senza incorrere in problemi di controllo delle versioni.

GraphQL può essere utilizzato con qualsiasi framework backend o linguaggio di programmazione. Questo vantaggio, abbinato al suo potente strumento (ad esempio, una forte digitazione e il supporto integrato per l’introspezione), rende GraphQL particolarmente popolare tra gli sviluppatori di organizzazioni aziendali che utilizzano architetture headless o API-first, come Twitter e Airbnb. Nel sondaggio annuale sullo stato di JS , GraphQL ha ottenuto i punteggi più alti per consapevolezza (98%), soddisfazione (94%) e interesse (87%) tra gli sviluppatori rispetto a qualsiasi altra soluzione a livello di dati.

Problemi di memorizzazione nella cache con GraphQL all’edge

Le CDN tradizionali e il software di caching sono stati creati intorno alle API REST, in cui solo le richieste HTTP GET sono memorizzabili nella cache e la chiave cache può essere derivata dall’URL REST. Sfortunatamente, GraphQL utilizza il formato HTTP POST più complesso e le chiavi cache e cache devono essere determinate dal corpo HTTP. Mentre sarebbe fantastico se un semplice flip switch potesse memorizzare nella cache HTTP POST, non è così semplice. Per memorizzare nella cache GraphQL, la CDN deve essere in grado di analizzare e comprendere il formato GraphQL, cosa che non è possibile. Di conseguenza, le prestazioni di GraphQL rappresentano una sfida per gli sviluppatori.

È comune che i team di sviluppo trascorrano del tempo nella creazione di soluzioni alternative da zero alla cache di GraphQL, e anche in questo caso, il caching non è ottimale. Una gestione scorretta di GraphQL può portare a bassi tassi di hit della cache. Tuttavia, se eseguita correttamente, la memorizzazione nella cache di GraphQL all’edge della rete consente di ottenere API più veloci, affidabili e scalabili. Layer0 lo rende facile.

Layer0 risolve i problemi di caching all’edge della rete

Layer0 fornisce il supporto completo per la memorizzazione nella cache delle API GraphQL all’edge, migliorando le prestazioni e riducendo il traffico all’origine. Layer0 risolve la sfida principale della memorizzazione nella cache delle API GraphQL all’edge della rete aggiungendo l’analisi e il supporto di GraphQL per il metodo POST a EdgeJS, un linguaggio dichiarativo ad alte prestazioni basato su JavaScript per la logica edge. Con EdgeJS, i Web Builder possono creare una potente logica di caching personalizzata in base alle proprietà delle query GraphQL e delle intestazioni HTTP, come i cookie e l’autenticazione.

Con EdgeJS di Layer0, uno sviluppatore può memorizzare nella cache informazioni come un ID prodotto in un’API di eCommerce da una risposta GraphQL. Può anche memorizzare nella cache attributi quali lingua, valuta e preferenze di personalizzazione incorporati nelle intestazioni delle richieste. Questi possono essere definiti da altri componenti non-GraphQL nello stack che non sono stati ancora migrati a GraphQL.

Una volta memorizzato nella cache, Layer0 consente di eliminare singole query o raccolte di query dall’edge assegnando chiavi surrogate a ciascuna risposta memorizzata nella cache. Ad esempio, in un’applicazione eCommerce, gli sviluppatori possono utilizzare EdgeJS per dare ai team la possibilità di eliminare selettivamente la cache in base all’ID prodotto, alla categoria di prodotto o a qualsiasi altro attributo prodotto nella console o nelle API di livello 0 (Edgio) della query.

Per comprendere meglio questo aspetto, guardare la demo riportata di seguito che illustra come convertire un’API REST in GraphQL e aggiungere il caching all’edge della rete utilizzando il popolare framework Next.js, Apollo Server e Layer0.

Raggiungere il 100% di percentuale di accessi alla cache

Nessun’altra CDN funziona duro come Layer0 per consentire ai team di massimizzare il tasso di hit della cache. EdgeJS semplifica la configurazione del caching all’interno dell’applicazione, consentendo agli sviluppatori di memorizzare nella cache l’elemento precedentemente non memorizzabile nella cache.

EdgeJS è flessibile e potente e supporta funzionalità di caching moderne come chiavi obsolete durante la riconvalida e surrogate. I nostri clienti hanno già utilizzato le chiavi surrogate per connettere Layer0 ai loro sistemi di gestione degli ordini e dei contenuti per cancellare le singole pagine di prodotto dalla cache quando l’inventario, il prezzo o i contenuti cambiano. Ciò consente loro di mantenere elevati tassi di hit della cache per tutte le altre pagine e API che non sono cambiate quando un singolo elemento cambia.

Inoltre, la piattaforma include anche il riscaldamento automatico della cache del contenuto con il traffico più elevato dopo una distribuzione. La rete Layer0 coordina in modo intelligente l’instradamento e la memorizzazione nella cache tra i POP per massimizzare la probabilità di un errore nella cache. Se un POP non dispone di un dato, lo richiederà in modo efficace da un altro POP prima che la richiesta venga inoltrata al server di origine. Per monitorare facilmente le performance del sito Web e il tasso di hit della cache, gli sviluppatori possono accedere all’osservabilità e alle metriche chiave. Per la granularità, la piattaforma evidenzia in modo proattivo i percorsi delle applicazioni che necessitano di miglioramenti.

Edgio è considerata una delle più grandi società di streaming del mondo, tra cui Premier League Football Club e BYJU. Edgio ha oltre 135 punti di presenza (POP) in tutto il mondo che vanno oltre le funzioni medie di una CDN e coordinano i dati tra loro per riscaldare la cache.

Hosting senza server di GraphQL

Edgio offre anche servizi senza server, tra cui l’hosting GraphQL. I team possono gestire e inviare chiamate di runtime al server GraphQL ospitato in un ambiente senza server su Layer0, eliminando le preoccupazioni relative all’infrastruttura e alla scalabilità.

Incrementate produttività, prestazioni e sicurezza con Edgio

Layer0 aiuta i team di Web Builder ad aumentare la produttività degli sviluppatori, migliorare le prestazioni del sito e migliorare la sicurezza. Layer0 semplifica lo sviluppo e la gestione della logica perimetrale per tutto il ciclo di vita dello sviluppo e la distribuzione di siti Web di secondo secondo tramite il prefetching predittivo dei contenuti dinamici, rendendola la CDN che i team di sviluppo amano utilizzare.

Layer0 include tutto ciò che i team di sviluppo hanno bisogno per implementare un’architettura headless o Jamstack, tra cui hosting, senza server, osservabilità, RUM e integrazione ci/CD. I team possono essere flessibili nel modo in cui sfruttano Layer0. Possono utilizzarlo per memorizzare nella cache le API GraphQL, eseguire il server GraphQL in un ambiente senza server o ospitare l’intera applicazione headless. Layer0 dispone anche di potenti opzioni di routing che consentono ai team di migrare gradualmente le applicazioni legacy a architetture headless o API-first in modo frammentario.

Il supporto GraphQL e la compatibilità con i sistemi legacy rendono Edgio ideale per le grandi aziende che migrano a GraphQL con un mix di componenti tradizionali e moderni.