In informatica il termine sistema client-server indica un’architettura di rete nella quale genericamente uno o più computer client o terminale si connettono ad un server per la fruizione di un certo servizio, quale ad esempio la condivisione di una certa risorsa hardware/software con altri client, appoggiandosi alla sottostante architettura protocollare impostata.   Più semplicemente, i sistemi client/server sono un’evoluzione dei sistemi basati sulla condivisione semplice delle risorse: la presenza di un server permette ad un certo numero di client di condividerne le risorse, lasciando che sia il server a gestire gli accessi alle risorse per evitare conflitti di utilizzazione, permettere accessi ai dati differenziati e garantire la rete da ingressi non autorizzati.   Le reti locali aziendali (LAN), la rete Internet, i sistemi informatici e i sistemi operativi sono organizzati sotto forma di una tipica architettura client-server per la fruizione dei rispettivi servizi.   Il software server, oltre alla gestione logica del sistema, deve implementare tutte le tecniche di gestione degli accessi, allocazione e rilascio delle risorse, condivisione e sicurezza dei dati o delle risorse.   Ad esempio un server di posta elettronica è paragonabile ad un qualunque ufficio postale. Gli utilizzatori per accedere via client alla loro cassetta di posta elettronica devono essere stati autorizzati. In modo analogo un utente deve possedere la chiave della cassetta sita presso un ufficio postale dalla quale vuole prelevare la corrispondenza.   Esempi di sistemi client/server:

  • Web server: per la gestione dell’interazione via web tra server e client.
  • File server: per la condivisione dei file;
  • FTP server: per la gestione dell’upload/download dei file;
  • Database server: per la gestione di grandi moli di dati;
  • Groupware: per la gestione d’informazioni riguardanti gruppi di lavoro;
  • Print server: per la condivisione delle stampanti;

Il/i server possono essere fisici e/o virtuali. In base al contesto, il termine server può indicare quindi:

  1. un computer “ordinario” utilizzato per fornire servizi ad altri computer, a prescindere dalle sue caratteristiche hardware.
  2. un computer specifico appartenente alla fascia di mercato dedicata all’uso come server, caratterizzato da alta affidabilità, maggiori prestazioni e funzioni aggiuntive.
  3. un processo (ovvero un programma in esecuzione) che fornisca servizi ad altri processi (es. Server Web).

In generale quindi si tende ad indicare come server il componente hardware che attraverso un software specifico eroga un servizio e client il componente hardware con relativo software che ne fa uso su richiesta dell’utente. D’altro canto sarebbe meglio ragionare maggiormente in termini astratti (un “servizio server”) dato che sempre di più i server, intesi nel senso computazionale del termine, sono macchine virtuali grazie, appunto, alla virtualizzazione e non computer fisici.   Server fisici. Il server è un elemento fondamentale dell’infrastruttura IT di cui fa parte, in quanto i suoi malfunzionamenti si ripercuotono su tutti i client che ne fanno uso. Pertanto, per i server si adottano accorgimenti volti a garantire alta affidabilità che garantisca continuità di servizio (disponibilità) e robustezza ai guasti, e alta sicurezza ovvero protezione da attacchi informatici:

  • utilizzo di hardware di classe superiore, con prestazioni elevate ed elementi ridondanti (dischi RAID, alimentatori ridondanti);
  • protezione dell’alimentazione elettrica mediante gruppo di continuità;
  • protezione fisica mediante localizzazione in un locale apposito ad accesso ristretto (“sala server”) o in housing presso una server farm;
  • connessione di rete preferenziale, di capacità superiore, ridondante;
  • climatizzazione;
  • configurazioni del sistema operativo volte a garantire maggiore affidabilità e sicurezza (hardening);
  • gestione da parte di sistemisti esperti.

I computer progettati per essere usati come server in una sala server di dimensioni medio-grandi vengono realizzati in modo da poter essere montati in un armadio rack. I maggiori investimenti richiesti da questi accorgimenti sono motivati dall’importanza che il buon funzionamento del server ha per i suoi utenti.   Server virtuali. In ambito informatico, con virtual private server (comunemente VPS) ci si riferisce ad una singola istanza di un sistema che viene eseguito in ambiente virtuale. Più VPS possono essere eseguiti contemporaneamente sullo stesso hardware (host computer) e, in base alle diverse implementazioni dell’hypervisor, possono essere migrati (in alcuni casi anche senza interruzione del servizio) su un differente host. Questa tecnica consente di ospitare più sistemi in esecuzione, anche con sistemi operativi differenti, sullo stesso hardware potendo risparmiare sui costi delle infrastrutture. Esistono numerose modalità di implementazione dei VPS, che corrispondono ad altrettante tecniche di virtualizzazione. Nelle principali implementazioni di virtualizzazione i VPS sono eseguiti in assoluta indipendenza: i processi di un contenitore non sono accessibili per gli altri, così pure per il filesystem. A seconda dell’implementazione dell’hypervisor e delle politiche impostate i singoli VPS possono disporre di quantità di risorse (CPU, memoria RAM, spazio sul disco, velocità di comunicazione su ethernet) fisse o variabili, o impiegare un sistema intermedio con quote di differenti livelli. Esistono software che sono in grado di salvare tutta la macchina virtuale con livelli di compressione importanti e quindi in tempi brevi. Allo stesso modo le macchine virtuali “salvate” possono essere ripristinate molto velocemente garantendo tempi di fermo macchine veramente esigui.