← Torna al blog
Tecnica

Webhook vs polling: due sistemi in tempo reale

Webhook vs polling: perché chiedere ogni cinque minuti è spreco, perché conta la firma e cosa deve succedere se il tuo server non risponde.

Di
Blina Desk
Pubblicato
min di lettura
3
  • api
  • integrazioni
  • pmi

Due sistemi che devono lavorare insieme hanno due strade. O il primo chiede di continuo («c’è qualcosa di nuovo?») oppure il secondo si fa vivo quando qualcosa di nuovo c’è. La prima si chiama polling, la seconda webhook. La differenza sembra tecnica e decide, nella pratica, se un’integrazione lavora in silenzio o chiede attenzione tutti i giorni.

Perché il polling è la metà peggiore

Con il polling il tuo sistema chiede a intervalli fissi. Ogni cinque minuti, ogni ora, ogni notte. Ha tre difetti fastidiosi.

È quasi sempre inutile: di 288 chiamate al giorno, forse dodici portano qualcosa. Le altre 276 consumano chiamate che vanno sul tuo limite.

È lo stesso troppo lenta: chi chiede ogni cinque minuti viene a sapere le cose con due minuti e mezzo di ritardo medio. Per un ordine che va in magazzino spesso non cambia niente. Per un incasso che sblocca una spedizione, sì.

Ed è fragile nei dettagli: bisogna ricordarsi fino a dove si è già letto. Se quel segnaposto si sposta (un’esecuzione interrotta, un fuso orario calcolato diversamente), mancano dei dati e non se ne accorge nessuno.

Cos’è davvero un webhook

Un webhook è un indirizzo che registri. Quando succede qualcosa, per esempio nasce, cambia o viene cancellato un documento, il programma manda un messaggio a quell’indirizzo. Niente domande, niente segnaposto, niente giri a vuoto.

Perché regga nel funzionamento quotidiano servono tre cose. Chiedile prima di comprare.

1. Una firma, altrimenti si crede a chiunque

Il tuo indirizzo webhook è raggiungibile da fuori. Senza verifica, chi lo conosce può mandare un messaggio inventato, e il tuo sistema crea un ordine inventato.

Per questo ogni consegna viene firmata: chi la manda calcola una somma di controllo dal contenuto e da un segreto condiviso, e la spedisce insieme. Il tuo sistema rifà il conto. Se non torna, il messaggio si butta.

Un dettaglio che spesso manca: la marca temporale deve stare dentro il contenuto firmato. Altrimenti qualcuno può intercettare un messaggio vero e rispedirlo più tardi: la firma torna ancora. Con la marca temporale firmata, la ripetizione si vede.

2. Ritentativi che si allargano

Prima o poi il tuo server non risponde. Un riavvio, un certificato, la rete: capita. La domanda è cosa fa il mittente in quel momento.

Riprovare subito non serve: chi sta riavviando non c’è nemmeno un secondo dopo. Hanno senso intervalli crescenti: subito, dopo 30 secondi, dopo 5 minuti, dopo mezz’ora, dopo due ore. Così si supera sia il riavvio breve sia il guasto lungo.

E ancora: un errore nella tua richiesta (formato sbagliato, chiave revocata) non si ripete. Mandare cinque volte la stessa cosa non aggiusta un formato: nasconde soltanto l’errore vero.

3. Una fine, quando non ascolta più nessuno

Se un indirizzo smette di rispondere per sempre, il mittente a un certo punto deve fermarsi e dirlo. Altrimenti le consegne finiscono nel vuoto finché qualcuno se ne accorge: di solito settimane dopo, quando mancano dei dati.

In Blina Desk un indirizzo viene sospeso dopo cinque consegne esaurite di fila e va riattivato a mano. «Esaurita» vuol dire che tutti i ritentativi sono finiti: un singolo intoppo non sospende niente.

Cosa deve saper fare chi riceve

Anche l’altra parte ha i suoi doveri, e due si dimenticano regolarmente.

Rispondere subito. Prendi il messaggio, conferma, e poi elabora. Chi prima calcola e poi risponde finisce nei tempi scaduti e si ritrova lo stesso messaggio un’altra volta.

Sopportare i doppioni. Che è proprio il motivo per cui lo stesso messaggio può arrivare due volte. Chi riceve deve reggerlo senza creare l’ordine in doppio: ogni consegna porta un identificativo, e quello o l’hai già visto o no.

La regola pratica

Usa i webhook per tutto ciò che deve succedere in tempi brevi, e tieni un allineamento notturno come rete di sotto. Il webhook tiene i sistemi a passo; l’allineamento recupera quello che è rimasto indietro in una notte con la linea ballerina. Insieme fanno un’integrazione a cui si smette di pensare, e per un’integrazione è il complimento più alto che ci sia.