Ciao, e benvenuto nella settima puntata della quarantunesima stagione. Nelle scorse puntate abbiamo visto Redis conservare, ricordare, ordinare. Oggi vediamo un mestiere di natura diversa: far parlare tra loro le parti di un sistema. Perché un'applicazione moderna non è un blocco unico: è fatta di tante parti che devono comunicare e passarsi il lavoro. E Redis offre due modi eleganti per farlo: i messaggi trasmessi a chi ascolta, e le code di lavori da smaltire. Oggi capiamo entrambi, e perché cambiano il modo di costruire.
Partiamo dal ricordare che le applicazioni sono fatte di parti, perché è il presupposto. Un'applicazione grande non è un monolite: è un insieme di pezzi, ciascuno con un compito, che devono collaborare. Un pezzo riceve gli ordini dei clienti, un altro manda le email, un altro prepara i documenti, un altro elabora i pagamenti. Perché il tutto funzioni, questi pezzi devono comunicare: dirsi cosa è successo, passarsi il lavoro da fare. Il come si scambiano queste informazioni è una delle scelte più importanti nel costruire un sistema. E Redis, grazie alla sua velocità, è un ottimo tramite per questo dialogo tra le parti.
Voglio mostrarti il primo modo, la trasmissione, perché è elegante. Il primo modo si chiama pubblica e sottoscrivi, e funziona come una trasmissione radio. Una parte del sistema annuncia un messaggio, per esempio è arrivato un nuovo ordine, e lo trasmette. Tutte le parti che sono in ascolto su quel canale ricevono l'annuncio, nello stesso momento. La cosa bella è che chi trasmette non deve sapere chi sta ascoltando, né quanti sono: lancia il messaggio nel canale, e chi è interessato lo raccoglie. Come una stazione radio che manda in onda una notizia: non sa chi ha la radio accesa, ma tutti quelli sintonizzati la sentono. È un modo per disaccoppiare chi parla da chi ascolta.
Voglio mostrarti il secondo modo, la coda, perché è ancora più usato. Il secondo modo è la coda di lavori. Una parte del sistema deposita dei compiti da fare in una fila; altre parti, chiamiamole gli operai, prendono i compiti dalla fila, uno alla volta, e li svolgono. È come la fila dei numeri alla salumeria, o una lista di cose da fare condivisa tra più lavoratori: i compiti si accumulano in ordine, e gli operai li smaltiscono man mano che sono liberi. Chi deposita il lavoro non deve aspettare che sia finito: lo lascia nella fila e va avanti. Gli operai lavorano al loro ritmo, prendendo il prossimo compito quando hanno finito il precedente.
Voglio farti apprezzare perché questo cambi tutto, perché è la vera potenza. Ecco il punto: la coda ti permette di fare il lavoro lento più tardi, e altrove. Immagina che, quando un cliente compra qualcosa, si debbano fare cose lente: mandare un'email di conferma, generare una fattura, aggiornare vari registri. Se il cliente dovesse aspettare che tutto questo finisca prima di ricevere una risposta, il clic sembrerebbe lentissimo. Invece, con la coda, l'applicazione deposita quei compiti lenti nella fila e risponde subito al cliente, abbiamo ricevuto il tuo ordine, mentre il lavoro pesante viene svolto in sottofondo dagli operai, presi dalla coda. Il cliente ha una risposta immediata; il lavoro lento accade dopo, dietro le quinte, senza farlo aspettare.
Voglio darti l'immagine che rende chiara questa idea, perché è quotidiana. Pensa a un ristorante. Il cameriere non cucina: prende l'ordine e lo appende a una rastrelliera in cucina. I cuochi staccano gli ordini dalla rastrelliera quando sono liberi, e cucinano al loro ritmo. Così la sala e la cucina lavorano ciascuna alla propria velocità: il cameriere non resta bloccato ai fornelli, e può continuare a servire i tavoli, mentre la cucina smaltisce gli ordini in coda. La rastrelliera degli ordini è la coda di lavori; il cameriere è chi deposita; i cuochi sono gli operai. Separare chi prende l'ordine da chi lo esegue fa funzionare tutto più fluido.
Voglio trarre la lezione generale, perché è un principio fondamentale. Far comunicare le parti di un sistema attraverso messaggi e code, invece di far aspettare ogni parte su tutte le altre, è uno dei principi cardine per costruire cose veloci e capaci di crescere. Disaccoppiare, cioè fare in modo che le parti non dipendano l'una dai tempi dell'altra, permette a ciascuna di lavorare al proprio ritmo, e di essere potenziata da sola quando serve. È il segreto per cui un sistema può reggere carichi enormi: le richieste rapide restano rapide, e il lavoro lento si accumula ordinatamente in coda, per essere smaltito senza bloccare nessuno. Redis, veloce e affidabile, è un tramite perfetto per orchestrare questo dialogo.
Per oggi ci fermiamo qui. Un mestiere diverso di Redis è far parlare tra loro le parti di un sistema. Due modi eleganti: la trasmissione, pubblica e sottoscrivi, dove una parte annuncia un messaggio e tutte quelle in ascolto lo ricevono, come una radio; e la coda di lavori, dove una parte deposita compiti in una fila e altri, gli operai, li smaltiscono al loro ritmo. La coda ti permette di fare il lavoro lento più tardi e altrove: rispondi subito al cliente, e sbrighi dietro le quinte l'email, la fattura, come un cameriere che appende l'ordine e lascia cucinare la cucina. La lezione: disaccoppiare le parti con messaggi e code è la chiave per sistemi veloci e capaci di crescere. Nella prossima puntata affrontiamo una domanda onesta: la persistenza, cioè cosa succede ai dati in memoria. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.