Come funziona il Web per gli scienziati dei dati (Guida CS50)

Lezioni di informatica per data scientist: come funziona il Web

Questo articolo traduce i concetti fondamentali dell'informatica sul web in modelli mentali pratici che ti aiuteranno a creare pipeline di dati più solide ed efficienti.

Hai difficoltà a eseguire il debug di una chiamata API non riuscita, sei confuso dalla lentezza dei trasferimenti di dati da un bucket cloud o cerchi di dare un senso alla struttura di un sito web per un'operazione di scraping? Queste comuni frustrazioni della scienza dei dati derivano spesso da una lacuna nella comprensione dei meccanismi fondamentali di Internet. Sebbene questi argomenti possano sembrare di dominio esclusivo degli sviluppatori web, una conoscenza approfondita di come i dati si spostano dal punto A al punto B è uno strumento potente per qualsiasi professionista dei dati. Per sviluppare questa intuizione, questo post sintetizza i concetti fondamentali del networking tratti dalla lezione di programmazione web del CS50x 2025 di Harvard.

come funziona il web per gli scienziati dei dati

1. Internet non è una linea retta

Quando il codice richiede dati a un server remoto, è facile immaginare che le informazioni viaggino in linea retta. La realtà è più complessa. Internet è una vasta rete di computer interconnessi, o "router", il cui unico scopo è trasmettere informazioni.

Pensa alla tua richiesta di dati come a una "busta virtuale". Il tuo computer la passa al router più vicino, che poi decide a quale router passarla. Questo processo si ripete, con la busta che "salta" tra i server fino a raggiungere la destinazione. Il percorso scelto non è necessariamente quello più breve. I router utilizzano software per ottimizzare il percorso in base alla velocità, al carico del server e persino a motivi economici, come mantenere il traffico sulla rete di un provider specifico per evitare commissioni. Se un trasferimento richiede più di 30 di questi salti, probabilmente è bloccato in un loop.

Collegamento della scienza dei dati: Per un data scientist, questo concetto fornisce un potente modello mentale per la latenza di rete. Quando si estraggono dati da un servizio cloud come AWS S3 o si interroga un database remoto, il tempo necessario affinché i dati "saltino" attraverso Internet è un fattore reale che incide sulle prestazioni della pipeline. Non si tratta di un concetto astratto, ma di una realtà fisica che può introdurre ritardi di cui è necessario tenere conto.

2. I tuoi dati vengono scomposti e riassemblati

Un singolo file di grandi dimensioni, come un'immagine ad alta risoluzione o un set di dati di diversi gigabyte, non viene inviato su Internet in un unico pezzo. Il protocollo di base di Internet, TCP/IP, scompone grandi quantità di informazioni in frammenti più piccoli. Come illustra la lezione CS50, l'immagine di un "gatto felice" viene metaforicamente strappata in quattro pezzi.

Ogni frammento viene inserito in una propria busta virtuale, chiamata pacchetto. Per garantire che il destinatario possa ricomporre correttamente il gatto, il protocollo di controllo della trasmissione (TCP) aggiunge un numero sequenziale a ciascun pacchetto (ad esempio, "1 di 4", "2 di 4", "3 di 4"). Questo consente al computer ricevente di riassemblare i frammenti nell'ordine corretto e, soprattutto, di rilevare se qualche pacchetto è andato perso lungo il percorso.

Collegamento della scienza dei dati: la robustezza del protocollo TCP/IP è ciò che permette a concetti di ingegneria dei dati di alto livello come il chunking e l'elaborazione distribuita di funzionare in modo affidabile. Quando si inseriscono file di grandi dimensioni in batch o si utilizza un framework come MapReduce per suddividere un lavoro complesso in parti più piccole, si opera a un livello di astrazione superiore, ma il principio di base rimane lo stesso. La garanzia di integrità dei dati offerta da questo protocollo è fondamentale per qualsiasi pipeline di dati.

3. Un server, molti cappelli: il ruolo delle porte

Un indirizzo IP invia il pacchetto dati al computer giusto, ma non specifica quale applicazione su quel computer debba riceverlo. Un singolo server potrebbe eseguire contemporaneamente un server web, un server di posta elettronica e un server di database. È qui che entrano in gioco le porte.

Una porta è un identificatore numerico univoco per un servizio specifico in esecuzione su un server. Nel tempo è stato stabilito un set di porte standard: la porta 80 è in genere utilizzata per il traffico web standard (HTTP), la porta 443 per il traffico web sicuro (HTTPS) e la porta 25 per la posta elettronica. Le porte consentono a un singolo server con un singolo indirizzo IP di "multiplexare" i propri servizi, garantendo che una richiesta di una pagina web venga inviata al server web e non al server di posta elettronica. Pertanto, un indirizzo IP invia un pacchetto alla macchina giusta e un numero di porta lo invia all'applicazione giusta su quella macchina: un sistema di indirizzamento a due livelli essenziale per il web moderno e multitasking.

Collegamento della scienza dei dati: Questo è immediatamente pratico nel nostro lavoro quotidiano. Quando ci si connette a un database PostgreSQL, lo standard :5432 you append to the IP address is precisely this concept in action, directing your request to the database application. When you deploy a model via an API or run a Jupyter server on your local machine, you are using ports (like localhost:8888) to expose that specific service to network requests.

4. DNS: il gigantesco dizionario memorizzato nella cache di Internet

Gli esseri umani non navigano sul web digitando stringhe di numeri come 142.250.191.78. We use human-friendly domain names like google.com. The system that translates these names into machine-readable IP addresses is the Domain Name System (DNS).

Dal punto di vista funzionale, il DNS è un'implementazione massiva e distribuita del tipo di dati astratto "dizionario". Associa chiavi (nomi di dominio) a valori (indirizzi IP). Per gestire l'immensa scala di Internet e fornire risposte rapide, il DNS è sia gerarchico che fortemente dipendente dalla memorizzazione nella cache. Il computer, la rete locale e il provider di servizi Internet (ISP) memorizzano nella cache le ricerche DNS recenti, in modo da non dover interrogare ripetutamente i server radice per lo stesso indirizzo.

Collegamento della scienza dei dati: questo principio di caching distribuito su larga scala è un modello fondamentale che utilizziamo costantemente nella scienza dei dati. Funge da potente analogia nel mondo reale per tecniche come la memorizzazione nella cache in una funzione Python, la memorizzazione nella cache dei risultati di una query di database lenta o l'archiviazione di dataframe intermedi su disco. Il DNS è un esempio su scala planetaria di una cache distribuita chiave-valore che rende fruibile il web moderno.

5. Codici di stato HTTP: la tua bussola di debug

Quando il browser (il client) richiede una pagina a un server, la risposta del server inizia con un codice di stato HTTP a tre cifre. Questo codice fornisce un riepilogo conciso dell'esito positivo della richiesta o del tipo di errore che si è verificato.

I codici sono raggruppati in categorie:

  • Anni 200 (200 OK): La richiesta è stata accolta con successo.
  • Anni 300 (301 Moved Permanently): Sei stato reindirizzato. La lezione fornisce l'esempio di safetyschool.org which returns a 301 code to redirect the browser to Yale’s website.
  • Anni 400 (404 Not Found): Si è verificato un errore lato client. Ciò significa che l'errore è da attribuire a te: hai richiesto una risorsa che non esiste o non sei autorizzato ad accedervi.
  • Anni 500 (500 Internal Server Error): Si è verificato un errore lato server. Il server ha riscontrato un problema durante il tentativo di soddisfare la tua richiesta valida.

Collegamento della scienza dei dati: Per chiunque lavori con API o web scraping, comprendere questi codici è la differenza tra un vago errore di "richiesta fallita" e informazioni diagnostiche utili. 404 error tells you to check your URL endpoint, while a 403 Forbidden error tells you to check your API key. A 500 error means the problem is likely with the service itself.

“…ogni volta che vedi un 500 è anche colpa tua, quindi sei sia l'utente che il server nel loro caso…” — Harvard CS50x 2025 (YouTube) — Lezione: HTML, CSS, JavaScript

6. HTML è per la struttura, non per lo stile

L'HyperText Markup Language (HTML) è il linguaggio standard per la creazione di pagine web. È un linguaggio di markup, non un linguaggio di programmazione; il suo scopo è descrivere e strutturare i contenuti, non eseguire operazioni logiche. L'HTML utilizza "tag" (come <p> for a paragraph or <div> for a division) and “attributes” (like class o id) to define elements.

Quando un browser riceve un file HTML, analizza il testo per costruire una struttura dati ad albero in memoria chiamata Document Object Model (DOM). Questo albero rappresenta la struttura della pagina. L'HTML moderno enfatizza l'uso di tag semantici come <header>, <main>e librerie <footer>. These tags don’t just create boxes on a page; they give meaning to the structure, helping search engines, accessibility tools, and AI models understand the relative importance of different content sections.

Collegamento della scienza dei dati: nella data science, una solida conoscenza del DOM è fondamentale per il web scraping. Per estrarre un dato specifico da una pagina, uno scraper deve navigare in questo albero DOM, selezionando gli elementi tramite tag, classi o ID. Questo principio di "separazione delle responsabilità" – che utilizza l'HTML per la struttura e un linguaggio separato (CSS) per lo stile – ha una forte analogia con il principio dei "dati ordinati", secondo il quale la struttura logica di un dataset dovrebbe essere indipendente dalla sua presentazione finale.


Cosa candidarsi oggi

  • Quando una chiamata API fallisce, controlla il codice di stato HTTP (ad esempio, 404 anziché 500) per stabilire se l'errore è dovuto a te o al server.
  • Utilizza gli "Strumenti per sviluppatori" del tuo browser (clic con il tasto destro del mouse -> Ispeziona) per visualizzare la scheda Rete e vedere le richieste e le risposte effettive che il tuo browser sta inviando.
  • Prima di effettuare lo scraping di un sito, esaminane la struttura HTML per identificare i tag, le classi o gli ID specifici che contengono i dati di cui hai bisogno.
  • Quando ti connetti a un database o a un'API, nota il numero di porta e riconosci che sta indirizzando la tua richiesta all'applicazione corretta sul server.
  • La prossima volta che ti imbatti in un ritardo nella pipeline dei dati, pensa alla memorizzazione nella cache DNS: una ricerca lenta o una cache obsoleta potrebbero essere un fattore determinante.

Chiusura

Questi concetti non sono semplici dettagli accademici per gli sviluppatori. Dal routing fisico dei pacchetti (TCP/IP) all'indirizzamento logico dei servizi (DNS, porte) e al linguaggio delle richieste (HTTP), questi protocolli a più livelli formano il sistema invisibile su cui si basano le nostre pipeline di dati. Comprendere come i dati si muovono e sono strutturati offre una comprensione più intuitiva dei colli di bottiglia delle prestazioni, della diagnosi degli errori e dell'estrazione dei dati. Il prossimo passo del ciclo di lezioni sarà rendere dinamici i contenuti web con JavaScript, il motore alla base delle visualizzazioni interattive dei dati che utilizziamo ogni giorno.

In che modo una migliore comprensione di questi protocolli potrebbe cambiare il modo in cui progetti il ​​tuo prossimo script di raccolta dati?

Base: Harvard CS50x 2025 (YouTube).

Messaggi simili