Ciao, e benvenuto nella quarta puntata della venticinquesima stagione. Nella scorsa puntata abbiamo scoperto il modello di PHP, il vivi, servi, muori, che dimentica tutto tra una richiesta e l'altra. E ho lasciato in sospeso un'affermazione sorprendente: che questo dimenticare, che sembra uno svantaggio, sia in realtà una grande forza. Oggi mantengo la promessa e ti spiego perché. Perché la libertà dell'oblio, il non ricordare e non condividere nulla, è uno dei modelli più eleganti e robusti per il web. È una di quelle idee che, una volta capite, ti fanno vedere le cose in modo nuovo.
Partiamo dall'obiezione ovvia, quella che verrebbe a chiunque, per poi smontarla. Verrebbe da dire: ma non è uno spreco assurdo? Ricominciare ogni volta da zero, buttare via tutto dopo ogni richiesta, non ricordare nulla, dover rifare tutto da capo ogni volta? Sembra inefficiente, sembra sciocco. Perché mai un modello così dovrebbe essere una forza e non un difetto? È un'obiezione legittima, e la risposta è profonda e controintuitiva: proprio il fatto di non conservare e non condividere nulla è ciò che rende questo modello meravigliosamente semplice, robusto e sicuro. L'oblio non è uno spreco: è una liberazione da un'enorme categoria di problemi.
Voglio spiegarti il primo grande vantaggio, che riprende un tema doloroso delle stagioni scorse: l'isolamento. Ricordi i pericoli della concorrenza, di tante cose che accadono insieme e condividono dati, pestandosi i piedi, corrompendosi a vicenda, con quegli errori sottili e terribili? Ebbene, nel modello di PHP, quei pericoli semplicemente non esistono. Perché ogni richiesta è un mondo a sé, completamente isolato, che nasce e muore per conto suo, senza condividere nulla con le altre. Non c'è memoria comune che una richiesta possa corrompere per un'altra, non c'è stato condiviso su cui litigare. Ogni richiesta vive nella sua bolla, ignara delle altre. E quindi, tutta quella categoria di pasticci della concorrenza, che tormenta gli altri modelli, in PHP semplicemente svanisce.
Voglio farti apprezzare quanto sia potente questa cosa, perché è liberatoria. Negli altri modelli, dove tanti lavoratori vivi condividono la memoria, coordinare quella condivisione senza fare disastri è la parte più difficile e rischiosa. In PHP, quel problema non c'è proprio, perché non si condivide niente. Il nome tecnico di questa filosofia è, appunto, non condividere nulla: ogni richiesta è isolata, indipendente, e non spartisce nulla con le altre. È un modo di eliminare i problemi della concorrenza non risolvendoli, ma facendoli sparire alla radice: se non condividi nulla, non puoi avere conflitti su ciò che condividi. La semplicità nasce dall'isolamento.
C'è un secondo grande vantaggio, altrettanto pratico e importante, che voglio spiegarti: la semplicità di ragionamento. Quando ogni richiesta parte da un foglio bianco e vive isolata, ragionare su cosa fa il tuo programma diventa molto più facile. Non devi tenere conto di cosa è successo nelle richieste precedenti, di quale stato si sia accumulato nel tempo, di come tante richieste in corso possano interferire. Ogni richiesta è una storia semplice e completa: nasce, fa il suo lavoro con ciò che ha, muore. Questa pulizia mentale, il poter pensare a una richiesta alla volta come a un mondo chiuso e semplice, rende il codice PHP più facile da capire e meno soggetto a certi errori insidiosi. La tabula rasa a ogni richiesta è anche una tabula rasa per la mente del programmatore.
C'è poi un terzo vantaggio, che tocca la crescita e riprende un tema pratico: la scalabilità semplice. Immagina che il tuo sito riceva sempre più richieste, e tu debba reggere più carico. Con il modello di PHP, la soluzione è semplicissima: siccome ogni richiesta è isolata e non condivide nulla, per servirne di più basta aggiungere più lavoratori freschi, più macchine, senza dover coordinare nulla tra loro. Non c'è stato condiviso da sincronizzare, non c'è memoria comune da gestire tra le macchine: ogni richiesta è indipendente, quindi puoi semplicemente moltiplicare i lavoratori. Questo rende crescere un sito PHP sorprendentemente semplice: aggiungi capacità, e funziona, senza i grattacapi del coordinamento. L'isolamento, di nuovo, semplifica tutto.
Voglio essere onesto sul costo di questo modello, perché ogni scelta ha un prezzo, e prepara la prossima puntata. Se PHP dimentica tutto tra una richiesta e l'altra, allora tutte le cose che devono essere ricordate, chi è connesso, cosa c'è nel carrello, i dati dell'applicazione, non possono vivere nella memoria di PHP, che svanisce ogni volta. Devono vivere da qualche altra parte, fuori da PHP, in un posto che persiste. E questo pone la domanda: se PHP non ricorda nulla, dove vive la memoria dell'applicazione? È il costo del modello, ma anche, come vedremo, un modo pulito e onesto di rispecchiare come funziona davvero il web. Ne parliamo nella prossima puntata.
Per oggi ci fermiamo qui. Il dimenticare di PHP, che sembra uno spreco, è in realtà una grande forza. Primo: l'isolamento. Ogni richiesta è un mondo a sé che non condivide nulla, quindi tutti i pasticci della concorrenza, memoria condivisa corrotta, conflitti, semplicemente svaniscono. È la filosofia del non condividere nulla: elimini i problemi facendoli sparire alla radice. Secondo: la semplicità di ragionamento, perché pensi a una richiesta alla volta come a un mondo chiuso. Terzo: la scalabilità semplice, perché per reggere più carico basta aggiungere lavoratori freschi, senza coordinare nulla. Il costo è che la memoria deve vivere altrove, ed è il tema della prossima puntata: dove vive la memoria. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.