Caratteristiche del server

Benvenuto in questa lezione dedicata alle caratteristiche del server, parte integrante del percorso TPSIT 5. Esploreremo i componenti hardware e software che definiscono le prestazioni e l'affidabilità dei server moderni in contesti aziendali.

Analizzeremo i pilastri dell'architettura di rete e come le tecnologie di virtualizzazione ottimizzano la gestione delle risorse server per i servizi web.

  • shape
  • shape


Caratteristiche del server

Il giorno dell'apertura delle iscrizioni online a un corso molto richiesto, capita spesso che il sito web risponda lentissimo o smetta del tutto di funzionare, proprio mentre migliaia di persone provano a collegarsi nello stesso istante. Il servizio, in teoria, e sempre lo stesso: un server che riceve richieste e restituisce risposte, come visto nella lezione precedente. Cio che cambia, in quel momento critico, e che il server viene messo alla prova su una serie di requisiti che, nell'uso quotidiano, restano invisibili. In questa lezione vediamo quali sono le caratteristiche che un buon server deve avere per svolgere il proprio ruolo in modo affidabile, al di la della semplice definizione di "chi resta in attesa di richieste".

Disponibilita e raggiungibilita costante

La prima caratteristica richiesta a un server e la disponibilita (in inglese, availability): un server deve essere attivo e raggiungibile nel momento in cui un client ha bisogno del servizio, non solo in determinate fasce orarie. Un server di posta elettronica o di un registro elettronico, per esempio, deve poter ricevere richieste a qualunque ora del giorno e della notte, perche non si puo prevedere quando un utente decidera di collegarsi.

Perche cio sia possibile, un server deve avere un indirizzo di rete stabile e conosciuto (un indirizzo IP, spesso associato a un nome a dominio piu facile da ricordare): se l'indirizzo cambiasse in continuazione, i client non saprebbero piu a chi indirizzare le proprie richieste. Questo e uno dei motivi per cui, tipicamente, e il server ad avere un indirizzo stabile, mentre il client puo cambiare rete (per esempio uno smartphone che passa dal Wi-Fi di casa alla rete dati) senza che questo comprometta il servizio: e sempre il client a ricontattare il server, non il contrario.

Capacita di gestire piu richieste contemporaneamente

Un server raramente serve un solo client alla volta: nella maggior parte dei casi reali, molti client si collegano nello stesso momento allo stesso server (si pensi a un sito di e-commerce durante una promozione, o al portale delle iscrizioni scolastiche il giorno dell'apertura). Un server deve quindi essere in grado di gestire piu richieste in concorrenza, cioe piu o meno nello stesso momento, senza smettere di rispondere e senza mescolare i dati di richieste diverse.

Quando le richieste in arrivo superano la capacita del server di elaborarle immediatamente, queste vengono normalmente accumulate in una coda: il server le processa una dietro l'altra (o in piccoli gruppi) fino a smaltirle. Se la coda cresce piu velocemente di quanto il server riesca a svuotarla, il tempo di risposta percepito dagli utenti aumenta, fino al limite in cui il server puo arrivare a rifiutare nuove richieste o a bloccarsi del tutto. Le tecniche concrete con cui un server puo gestire piu client alla volta (per esempio la gestione multithreading di un server TCP) saranno approfondite piu avanti, nelle lezioni sui socket di questa stessa unita: qui basta fissare che si tratta di una caratteristica indispensabile, non di un dettaglio implementativo secondario.

Affidabilita e controllo degli accessi

Un server custodisce spesso dati importanti (documenti, voti, informazioni personali) e deve garantirne l'integrita, cioe evitare che vengano persi o alterati per errore, anche in presenza di guasti hardware o di interruzioni improvvise dell'alimentazione. Per questo motivo i server usano tipicamente strategie di salvataggio periodico dei dati e, nei sistemi piu critici, componenti ridondanti che permettono al servizio di continuare a funzionare anche se una singola parte si guasta.

Un server deve inoltre applicare un controllo degli accessi: non tutte le richieste che riceve devono essere soddisfatte allo stesso modo. Un registro elettronico, per esempio, deve verificare che chi richiede un voto sia effettivamente autorizzato a vederlo (un genitore puo vedere i voti del proprio figlio, non quelli di un'altra classe). I meccanismi tecnici con cui un server verifica l'identita di chi lo contatta e protegge le informazioni scambiate (crittografia, autenticazione) sono argomenti di moduli successivi del corso: qui e sufficiente sapere che un server "sicuro" e un server che risponde solo a chi ne ha diritto, e nel modo previsto.

Prestazioni e possibilita di crescita

Infine, un server deve avere risorse di calcolo, memoria e connessione di rete adeguate al numero di client che intende servire: un server che gestisce migliaia di richieste al secondo ha bisogno di hardware ben diverso da quello che serve pochi utenti in una piccola rete locale. Quando il numero di richieste cresce nel tempo, un server ben progettato deve poter scalare, cioe aumentare le proprie risorse (o essere affiancato da altri server che si dividono il carico) senza dover essere completamente riprogettato. Le tecniche concrete per farlo, come la virtualizzazione e i servizi cloud, sono l'argomento di un modulo successivo di questo corso.

Regola fondamentale: un buon server non si giudica soltanto dalla sua capacita di rispondere correttamente a una richiesta, ma dalla combinazione di quattro caratteristiche: disponibilita costante, capacita di gestire piu richieste in contemporanea, affidabilita e sicurezza dei dati, prestazioni adeguate al carico previsto (con margine di crescita). Un sito di biglietteria online per un evento molto atteso apre le vendite a un orario preciso. Nei primi secondi, decine di migliaia di persone si collegano nello stesso istante: se il server non e stato progettato per gestire un picco di richieste concorrenti cosi alto, il sito puo diventare lentissimo o smettere di rispondere del tutto, anche se il servizio, in condizioni normali, funziona perfettamente. Il portale delle iscrizioni online di una scuola resta raggiungibile 24 ore su 24 durante tutto il periodo di apertura delle iscrizioni, non solo in orario di segreteria: questo e un requisito di disponibilita. Allo stesso tempo, il portale deve mostrare a ciascuna famiglia solo i dati della propria iscrizione, e non quelli delle altre famiglie: questo e un requisito di controllo degli accessi.

Errori comuni e limiti

Un errore diffuso e pensare che basti un server "piu potente" (con piu memoria o un processore piu veloce) per risolvere qualunque problema di lentezza. In realta, se il software del server non e progettato per gestire bene le richieste concorrenti (per esempio se elabora le richieste una alla volta invece che in parallelo), aggiungere potenza hardware puo migliorare la situazione solo fino a un certo punto: il collo di bottiglia puo essere nel modo in cui il servizio e organizzato, non nella quantita di risorse disponibili.

Un secondo errore e confondere disponibilita e prestazioni: un server puo essere raggiungibile e rispondere (quindi essere "disponibile") ma farlo molto lentamente sotto carico (avere cioe prestazioni scarse in quella situazione specifica). Sono due caratteristiche distinte, anche se entrambe influenzano l'esperienza di chi usa il servizio, e un server puo avere buone prestazioni in condizioni normali ma rivelare limiti di disponibilita proprio nei momenti di picco, come negli esempi visti sopra.

Sintesi applicativa

Quando si valuta se un server e adatto a un determinato servizio, conviene sempre controllare separatamente questi quattro aspetti: e raggiungibile in ogni momento? Regge piu richieste contemporanee senza degradarsi eccessivamente? Protegge e conserva correttamente i dati, mostrandoli solo a chi ne ha diritto? Ha risorse sufficienti, con margine per crescere? Nella prossima lezione di questa unita vedremo, in modo speculare, quali sono invece le caratteristiche richieste al client in un'architettura client-server.

Domanda di autoverifica: un piccolo server usato da un solo insegnante per condividere i propri materiali con dieci studenti di una classe ha davvero bisogno delle stesse caratteristiche di scalabilita di un grande sito di e-commerce? Prova a motivare la risposta pensando a quale delle quattro caratteristiche viste in questa lezione conta di piu in ciascuno dei due casi.

Paragrafi letti

 

    
0%
       Salva
Approfondimenti su: 'Caratteristiche del server'

 


Statistics