La scalabilità delle applicazioni è un argomento enorme e non può essere affrontato in un singolo post. Comunque avrò una crepa a una spiegazione di base.
Come hai indicato, i siti web più complessi sono script o programmi che sono eseguiti su un server da qualche parte e HTML / Javascript (e altri) sono inviati a un browser per interpretare e renderizzare. Siti web come Amazon e Facebook hanno milioni di visitatori unici ogni giorno.
Per iniziare con yes, i server di google sono senza dubbio considerevolmente più potenti del tuo PC a casa. Tuttavia, anche loro non sono abbastanza potenti da servire tante risposte http contemporaneamente.
Ecco dove arrivano le server farm. Se diecimila utenti vogliono caricare lo stesso sito Web, un servizio di bilanciamento del carico suddivide il traffico su un numero di server diversi ciascuno dei quali può eseguire il sito Web.
Per rendere le cose ancora più interessanti queste server farm non devono essere tutte collocate in un'unica posizione, molte grandi organizzazioni hanno i loro server fisici localizzati in tutto il mondo che consentono loro di archiviare e servire contenuti da quello fisicamente più vicino al computer che consuma (grazie per il suggerimento amon).
Ci sono un paio di sfide da superare, se un utente accede al server 462 alla sua prima visita, potrebbe non necessariamente raggiungere lo stesso server alla successiva richiesta. Le applicazioni possono essere progettate per adattarsi a questo (evitando cose come le variabili di sessione) o il bilanciamento del carico può essere configurato per inviare gli utenti di ritorno allo stesso server per la pagina successiva.
Se tutti questi server accedono allo stesso database sotto le copertine, tutto ciò che sta facendo la server farm sta spostando il collo di bottiglia delle prestazioni dai server web al database. È qui che l'architettura dei microservizi (che costruisce un "sito web" da molti piccoli siti Web) può essere d'aiuto, così come i database distribuiti come MongoDB.
Molti provider di hosting al giorno d'oggi (azzurro / AWS per esempio) preferiscono distribuire loro applicazioni web piuttosto che creare un sito Web su una VM come faresti se la tua azienda avesse il proprio hosting. Questo per consentire loro di scalare la propria infrastruttura in base alle richieste, tuttavia tali ridimensionamenti spesso hanno implicazioni in termini di costi.
TLDR
Sono utilizzate molte tecniche: bilanciamento del carico, architettura del software e considerazioni sull'hosting contribuiscono tutti alla creazione di un sistema solido.