01La trappola dei costi nascosti
Nei precedenti articoli ti ho illustrato l'architettura serverless basata su GitHub Actions e la gestione utenti in modalità stateless. Ma avere un'infrastruttura gratuita non basta se le API che utilizzi hanno limiti severi o costi nascosti.
Molti progetti promettenti muoiono non appena ricevono un po' di traffico perché superano la quota gratuita delle API esterne. Mappe, geocoding, database e ricerca sono le aree dove i costi tendono a esplodere. Per Radar Benzina, ho dovuto operare un bilanciamento chirurgico.
02La ricerca: locale anziché remota
Di solito, quando un utente cerca un comune, il sito invia una richiesta a un backend (es. un database relazionale o un servizio come Algolia), che restituisce i risultati. Con migliaia di ricerche, il backend si satura o la quota API gratuita finisce.
La soluzione in Radar Benzina è scaricare l'intero set di dati della regione (un file JSON compatto) direttamente nel browser dell'utente al primo caricamento. La barra di ricerca esegue una ricerca istantanea lato client usando JavaScript. Risultato? Ricerca iperveloce, zero chiamate al server, zero costi.
03Mappe gratuite e Geocoding in cache
Le API di Google Maps o Mapbox offrono un buon tier gratuito, ma non è infinito. Per mantenere i costi strutturalmente a zero, il progetto usa i Tiles server di CartoDB associati a Leaflet.js, un ecosistema completamente open e libero da vincoli di fatturazione per l'uso statico che ne viene fatto.
Per le coordinate (Geocoding), non chiedo a un'API le coordinate di ogni distributore a ogni richiesta. Il cronjob mattutino si occupa di risolvere le coordinate e le salva in un file osm_cache.json che viene committato nel repository. In questo modo le API esterne di geocoding vengono interpellate solo per i nuovi distributori sconosciuti, riducendo il traffico del 99%.
04Rate Limiting senza Database
Se espongo un endpoint pubblico per l'iscrizione alla newsletter o per l'invio della email di conferma (usando le API Email di Google via SMTP in Python), cosa impedisce a un bot di esaurire la mia quota giornaliera di invii gratuiti di Gmail in 5 minuti?
Ho implementato Cloudflare Turnstile (un CAPTCHA invisibile e gratuito) combinato con i limiti nativi delle Vercel Serverless Functions. Questo "scudo" respinge il traffico automatizzato prima ancora che tocchi la logica Python che gestisce le email.
05Massimizzare il Free Tier
Nonostante Radar Benzina sia un repository privato (per tutelare rigorosamente la privacy delle email nel file destinatari.txt), sfrutta appieno i tier gratuiti offerti dai provider moderni. GitHub Actions offre una generosa quota di minuti mensili gratuiti per i progetti privati, perfetti per i cronjob del progetto. Vercel, dal canto suo, fornisce banda abbondante per l'hosting statico sul piano Hobby. Combinando queste risorse ed eliminando la dipendenza da API a pagamento tramite il caching spinto lato client e nel repository stesso, Radar Benzina può scalare a migliaia di visite senza generare un solo centesimo di spesa.
Nei prossimi articoli (che chiuderanno questa serie tecnica), ci concentreremo sull'ultimo pezzo del puzzle: la sicurezza anti-bot avanzata, essenziale quando si lavora senza il cuscino di protezione di infrastrutture premium. Resta sintonizzato! 🚀