Hola chicos!
Di recente abbiamo ripreso in mano un nostro vecchio progetto:
Do It! – frasi motivazionali
La prima versione dell’app risale al 2017 e ne avevamo già parlato sul blog, mentre qui vi lascio l’articolo dell’ultimo rilascio:
Sviluppando la nuova sezione Shop dell’app ci siamo soffermati a riflettere su una cosa particolare: abbiamo usato la CDN per fare cache delle API ????????????
A pensarci bene potrebbe sembrare un paradosso, e forse lo è… ma perché attivare una cache CDN, che per sua natura funziona con elementi statici, su delle API che sono decisamente molto più dinamiche?
Ovviamente perché fornisce dei vantaggi:
- le chiamate API sono velocissime, quindi anche l’app risulta molto performante
- il backend non viene sovraccaricato, quindi può trattarsi di un semplice hosting economico
- facilità di gestire i picchi di richieste
Non è tutto oro quello che luccica
Chiaramente bisogna stare attenti, non è adatto a tutti e in ogni situazione!
Dobbiamo rispettare la dinamicità delle API.
Nel nostro caso specifico, ad esempio, i dati ritornati dalle API che alimentano l’app variano solo per pochi parametri, che restano fissi per una giornata intera e per tutti gli utenti.
L’API delle citazioni, ad esempio, ha i seguenti parametri:
- lingua: che per tutti è italiano
- data di inizio: che di default è il giorno corrente
- numero di citazioni richieste: che ha un numero fisso per l’app
- offset: anche questo parametro è fisso per l’app
Analizzando i parametri disponibili è chiaro che tutti gli utenti che apriranno l’app oggi invieranno gli stessi parametri per avere le ultime citazioni a partire proprio da oggi.
Usare la cache ci permette di salvare la prima richiesta e mantenerla per tutta una giornata facendo si che il nostro piccolo “serverino” possa dormire sonni tranquilli e che il lavoro pesante venga svolto dalla CDN.
La nostra scelta
Noi ci siamo affidati a CloudFfront, tool nella suite di servizi AWS.
Si configura prima l’indirizzo della sorgente backend, si definiscono poi i vari endpoint da supportare e per ognuno è importantissimo definire i parametri in input che determineranno le diverse risposte da dare al client.
CloudFront valuterà i parametri ricevuti e verificherà se ha in cache una risposta aggiornata da ritornare, oppure se dovrà effettuare una nuova chiamata al backend.
Altra cosa su cui ragionare è la durata della cache, che va calibrata secondo le varie esigenze:
Troppo lunga: la cache si riempirà di dati inutili che nessuno più richiederà aumentando inutilmente i costi.
Troppo corta: la CDN effettuerà molte più richieste del necessario al backend e finiremo per sovraccaricare il nostro server economico annullando i benefici della cache.
Nel nostro caso specifico ad esempio la abbiamo impostata a 24h.
La stessa logica la applichiamo anche alle immagini presenti nell’app, così da beneficiare appieno della potenza della CDN.

Conclusione
Tirando le somme la CDN è un ottimo strumento molto potente e utile, anche in quei casi che a prima vista potrebbero non sembrare adatti, come le nostre API.
E voi che fate? Usate la CDN anche per le API?