Ciao, e benvenuto nella quarta puntata della quarantasettesima stagione. Oggi vediamo la capacità più distintiva di gRPC, quella che il modo che pensa in risorse fatica a fare in modo naturale: tenere una conversazione lunga, un flusso continuo, invece di una sola domanda seguita da una sola risposta. Oggi capiamo il canale sempre aperto: la conversazione invece della domanda.
Partiamo dal modello classico, perché è quello che conosci. Il modo che pensa in risorse si fonda su uno schema semplice: fai una domanda, ricevi una risposta, finito. Un andata e ritorno per ogni scambio. Chiedi, ti rispondono, la conversazione è chiusa. Se vuoi sapere altro, apri un nuovo scambio da capo. È un modello a domanda e risposta, pulito e semplice, e per moltissime cose va benissimo. gRPC sa fare anche questo, il caso semplice: chiami una funzione, ricevi un risultato. Ma sa fare anche qualcosa di più.
Voglio mostrarti le quattro forme, perché è qui che si apre. gRPC conosce quattro forme di conversazione, e te le dico a parole semplici. La prima è quella semplice: una domanda, una risposta, come una normale chiamata di funzione. La seconda è il server che continua a parlare: tu chiedi una volta sola, e lui ti manda indietro un flusso di risultati nel tempo, come iscriversi a degli aggiornamenti. La terza è il client che continua a parlare: tu mandi su un flusso di cose, e ricevi una sola risposta alla fine, come caricare una serie di misurazioni. E la quarta sono entrambi insieme: tutti e due mandano liberamente, una conversazione a due sensi in tempo reale, come una chiacchierata dal vivo tra programmi.
Voglio spiegarti perché gRPC può farlo e l'altro fatica, perché la ragione è tecnica ma semplice. Come mai gRPC riesce a tenere questo flusso, mentre il modo a domanda e risposta arranca? Perché si fonda su una versione più moderna del trasporto del web, che permette di tenere un solo canale aperto e di farci passare tanti messaggi insieme, avanti e indietro, senza chiudere e riaprire ogni volta. Il modello vecchio doveva, in pratica, bussare alla porta, ricevere, e andarsene, ogni singola volta. Il canale aperto di gRPC è come una linea che resta connessa: una volta aperta, ci si parla quando serve, di continuo.
Voglio dirti perché questo conta, perché cambia cosa puoi fare bene. Perché è importante? Perché certe cose sono, per loro natura, continue. Dati dal vivo, aggiornamenti in tempo reale, flussi costanti tra servizi che si tengono informati a vicenda. Per queste cose, la conversazione è la forma giusta. Costringerle nello schema a domanda e risposta ripetuta, come deve fare il modo classico, è scomodo: bussare mille volte per seguire qualcosa che cambia in continuazione. Se una cosa scorre nel tempo, un canale che resta aperto le si adatta molto meglio di mille domande separate, una dietro l'altra.
Voglio darti l'immagine che rende chiara questa idea, perché è immediata. Pensa alla differenza tra spedire una lettera e riceverne una in risposta, e aprire una linea telefonica e restare in linea. Con le lettere, ogni scambio è un andata e ritorno completo: scrivi, spedisci, aspetti, ricevi, e ricominci da capo per la volta dopo. Con la telefonata, una volta che la linea è aperta, ciascuno dei due parla quando ha qualcosa da dire, di continuo, senza dover riattaccare e richiamare ogni volta. Il modo classico manda lettere; gRPC può aprire la linea e tenerla.
Voglio trarre la lezione generale, perché va oltre gRPC. La lezione è questa: certi scambi sono, per natura, una singola domanda; altri sono, per natura, una conversazione. Uno strumento che conosce solo la domanda e risposta costringe tutto nella prima forma, anche ciò che sarebbe una conversazione. Far combaciare la forma dello strumento con la forma dello scambio, una chiamata, un flusso, un dialogo, è ciò che fa sembrare naturali le cose difficili. Non tutto è una domanda con una risposta: certe cose vogliono un filo che resta teso, e uno strumento che sa tenerlo cambia ciò che si può costruire con facilità.
Per oggi ci fermiamo qui. Abbiamo visto la capacità più distintiva di gRPC: la conversazione continua, non solo domanda e risposta. Il modo che pensa in risorse fa un andata e ritorno per ogni scambio; gRPC sa fare anche quello, ma conosce quattro forme: la domanda semplice, il server che continua a mandare, il client che continua a mandare, ed entrambi insieme in tempo reale. Può farlo perché tiene un solo canale aperto su cui passano tanti messaggi, come una linea telefonica che resta connessa, invece di spedire lettere ogni volta. Serve per le cose naturalmente continue: dati dal vivo, aggiornamenti, flussi tra servizi. La lezione: alcuni scambi sono una domanda, altri una conversazione, e far combaciare la forma dello strumento con quella dello scambio rende naturali le cose difficili. Nella prossima puntata vediamo il poliglottismo. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.