In che modo il "cloud computing" è diverso dal "client-server"?


30

Guardando un CEO di una nuova società di "cloud computing" che descrive la sua azienda in un programma televisivo finanziario oggi, ha detto qualcosa del tipo "Il cloud computing è superiore al vecchio client-server computing".

Ora sono confuso. Qualcuno può spiegare cosa significa "cloud computing" in contrasto con client-server?

Per quanto ne so, il cloud computing è più un modello di servizi di rete, in modo tale da non possedere o mantenere l'hardware fisico. Il "cloud" è tutto roba di back-end. Ma potrei ancora avere un'applicazione che comunica con quell'ambiente "cloud". E se eseguo un sito Web presenta un modulo che un utente compila, preme un pulsante sulla pagina e restituisce alcuni report generati dal server Web, non è lo stesso del "cloud" computing? E non considereresti il ​​mio browser come "client"?

Si noti che la mia domanda è specifica per il concetto di "cloud computing" rispetto a "client-server".

Scusate se questa è una domanda inappropriata per questo sito; è quello più vicino all'universo Stack e questa è la mia prima volta qui. Sono un vecchio timer, programmando dai giorni del mainframe alla fine degli anni '70.


Questa è una semplificazione, ma penso che la differenza principale sia dove i dati vengono archiviati. Nel server client la TUA azienda memorizza i propri dati. Nel Cloud Computing, i tuoi dati vengono archiviati dal fornitore dell'applicazione cloud. Ciò presenta vantaggi perché l'utente dell'applicazione cloud ha poca o nessuna manutenzione da parte sua e lo sviluppatore di app cloud può aggiornare il loro codice e database senza doversi preoccupare di infrangere qualcuno 3 revisioni del software. Ovviamente il rovescio della medaglia è che l'utente dell'app memorizza i propri dati sulla memoria di qualcun altro.
Dunk

3
In breve, si potrebbe dire che Client-Server era l'hype di ieri, mentre The Cloud è l'hype attuale. :-)
JensG

Il client-server deve eseguire il cloud computing come il codice assembly è in Excel.
mouviciel,

1
È la differenza tra guidare un'auto a noleggio e guidarne una di tua proprietà. Nessuna vera differenza se non che non devi preoccuparti della manutenzione!
James Anderson

Risposte:


28

A rigor di termini, non esiste un "Cloud". Non nel senso di ciò che stava dicendo quel CEO. C'è un Internet, ovviamente. Ci sono servizi ospitati. Ci sono VPS. Ci sono sistemi di consegna dei contenuti. Noi (tecnici) ci siamo adattati al termine per fare riferimento a determinati modelli di servizi ospitati. Ma "Cloud" nei media di consumo è in gran parte un termine di marketing vagamente tradotto come "internet". Più spesso, significa anche "Posso caricarti entro il mese".

Hai ragione nel pensare che i due termini, "cloud" e "client-server" non siano correlati. Avere un servizio ospitato 'nel cloud' (voglio sempre aggiungere un drammatico 'dun-dun-daaaaaaa' dopo aver usato quella frase) non rende un'app client-server meno client-server-y. Ad esempio, il "web" utilizza principalmente un modello client-server. Il browser web è il client. Il web server è il server. Il fatto che un server Web sia ospitato "nel cloud" non cambia il fatto che la relazione browser Web / server Web sia client-server.

Quindi il termine client-server definisce la relazione tra due entità in un sistema. Dove le entità sono ospitate fisicamente è irrilevante.

Fondamentalmente, hai ragione. I due non sono comparabili.


Esistono almeno due tipi di clud: nuvole di alto livello - dove la gestione lascia e parla - tecnicamente noto come "vapore" o "fumo" (da cui il termine "affumicatoio"), e nuvole di basso livello dove i server si trovano tecnicamente chiamato "nebbia". Scusa per il cinismo.
Emilio Garavaglia,

21

"Cloud computing" è un termine generale inteso a fare due cose: in primo luogo, per astrarre tutti i possibili usi di un modello client-server dietro un solo termine, al contrario di casi d'uso più specifici come "file server", "server di database", "web server", "application server" ecc .; e in secondo luogo, per astrarre l'architettura del server stesso, in termini di hardware, topologia, posizione e persino proprietà.

In un modello client-server tradizionale, che è sicuramente ancora oggi in uso comune, un client si connette a un server che esegue un determinato lavoro. Questo server può ospitare un database, una serie di condivisioni di file o una pagina Web. Quando il client si connette a quel server, esiste una comprensione implicita del tipo di comunicazione e trasmissione dei dati che ne deriverà tra i due computer. È inoltre possibile che il client o l'utente finale comprenda le funzionalità dell'hardware del server e i relativi limiti. Questo accoppiamento relativamente stretto tra la macchina client e il suo server può creare problemi per un amministratore di sistema che deve eliminare un server per manutenzione; tutte le applicazioni dipendenti dalle risorse fornite da questo server devono essere indirizzate verso un altro server,

In un modello cloud, l'hardware, la topologia, la divisione del lavoro e il numero pari di macchine effettive coinvolte sono tutti astratti dietro un singolo endpoint. L'analogia potrebbe essere attratta da una moderna "applicazione web", in contrapposizione alle generazioni precedenti di "siti Web" che erano più statici. Potremmo indovinare che dietro le quinte ci sono un server delle applicazioni e un server DB, ma non ci interessa davvero; il web server, come parte del suo lavoro per servire l'applicazione completa agli utenti oltre il "limite", fornisce un endpoint unificato che consente l'accesso controllato a tutti i dati e servizi forniti da altre macchine dietro questa porta principale.

Il risultato è che, con un unico endpoint esposto per fornire la funzionalità dell'applicazione, questo è tutto ciò che un consumatore client dell'applicazione deve mai preoccuparsi, invece di dove ottenere i suoi dati, dove chiamare tale e tale processo remoto dell'applicazione , eccetera; ciò significa che gli amministratori e gli architetti del fornitore di servizi all'interno di questo cloud sono più o meno liberi di modificare le macchine, la topologia e altri dettagli specifici di implementazione di questo "servizio cloud" senza che i clienti siano più saggi. Facebook potrebbe, se lo ritenesse saggio, ricostruire l'intero sistema di archiviazione dei dati da zero utilizzando un DBMS diverso e tutti i nuovi server, e finché il sito rimarrà disponibile durante la transizione, nessuno sarebbe mai più saggio; infatti, Facebook ha fatto proprio questo, molte volte,


2
Per quanto apprezzi il cinismo alla base del marketing "cloud" contenuto nella risposta di GrandmasterB, questa è la vera risposta.
Eric King,

Ho trovato questa come la migliore risposta!
Arsal,

5

Una parte fondamentale del "cloud computing" sono gli strumenti di gestione della distribuzione.

Nelle distribuzioni "classiche" si ordinava una macchina specifica per un'applicazione specifica e si eseguiva una configurazione abbastanza fissa.

In un ambiente cloud c'è un hardware più o meno standardizzato in un pool e un'API che crea e configura su di esso macchine virtuali da una qualche forma di template. Con ciò i sistemi difettosi possono essere facilmente sostituiti, ingranditi o ridimensionati a seconda delle esigenze e l'hardware può essere allocato secondo necessità, anche in modo automatizzato.

Ovviamente anche gli amministratori propri hanno fatto la maggior parte di questo prima, ma oltre al puro marketing, c'è una base di API standardizzate (API AWS di Aamzons, che è anche offerta da strumenti come Eucalyptus per "cloud privati") e strumenti (ad esempio fantoccio) emergenti.


Gran parte di questo riguarda il "marketing" piuttosto che la tecnologia reale, proprio come l'hoo-haa sui "Big Data".
BellevueBob,

Stai dimenticando un aspetto importante del "marketing". Il marketing non è solo "pubblicità", è anche "prezzo". Ed è qui che il Cloud Computing è diverso dal Client-Server Computing. A volte è anche Utility Computing, perché ha un prezzo simile alle utility (elettricità, acqua di rubinetto). Ovviamente, anche quel modello non è nuovo, è il modo in cui è stato valutato il calcolo del mainframe.
Jörg W Mittag,

2

Nell'architettura "tradizionale" client-server avevi assegnato risorse staticamente (o almeno è presentato come tale - non ho esperienza dal periodo pre-cloud, quindi correggimi se sbaglio e dipendo da un falso marketing). Il server database è stato chiamato db.yourcompany.com e il tuo server web ha comunicato con esso. Se si desidera aumentare le risorse, è possibile aggiungere un altro server Web dedicato e fornire il bilanciamento del carico, ecc.

D'altra parte, lo stress del cloud è stato posto sull'astrazione di livelli inferiori e indica come è costruito il "server". Ad esempio hai:

  • HAAS (Hardware come servizio): il client (azienda) ottiene un computer host su cui è possibile installare qualsiasi sistema operativo desiderato. La differenza è che non "ottengono" realmente un computer ma una macchina virtuale in una fattoria. Poiché è virtualizzato, non è necessario preoccuparsi di dettagli di livello inferiore come la quantità di potenza computazionale, pagare le bollette indipendentemente dal fatto che venga utilizzata la macchina, come sia collegata, ecc.
  • PAAS (Platform As A Service) - un livello più alto - scrivi un'aplicazione che in qualche modo viene eseguita da qualche parte. Poiché l'API è abbastanza generica, i fornitori di servizi cloud possono allocare risorse su richiesta, quindi se l'applicazione è stata tagliata in modo sleale pagherai per più risorse invece di soffrire di DDOS non malevoli.
  • SAAS (Software As A Service) - ancora un altro livello superiore - non scrivi un'applicazione - ne usi una. Non ti interessa come viene implementato o quali risorse utilizza. È disponibile ovunque e in qualsiasi momento.

Si noti che mentre nella maggior parte dei casi è implicito che il servizio effettivo è esternalizzato a grandi aziende (ad esempio Amazon o Google), non è necessario il caso: le grandi aziende o università distribuiscono i propri cloud interni per consentire una più facile gestione delle risorse. Ciò consente di aggiungere le risorse all'applicazione da eseguire se necessario. Se il nuovo avvio interno ha avuto successo, non è necessario preoccuparsi del sovraccarico dei server. Tuttavia, poiché l'economia di scala gioca un ruolo, di solito viene eseguita solo quando vi sono requisiti speciali (ad esempio per quanto riguarda la sicurezza).

Dal punto di vista dell'utente è trasparente e ha un aspetto dell'architettura client-server. Webserver potrebbe vivere "nel cloud" mentre utilizza un semplice vecchio HTTP. Le idee, i problemi e le soluzioni risalgono infatti ai mainframe degli anni '50 e attualmente ritornano più in contrasto con i PC client spessi.

Detto questo, potrebbe anche essere una parola d'ordine in una determinata frase e affermare che la società è dinamica e focalizzata sulla propria competenza principale, consentendo al contempo ai propri dipendenti.


1

Qualcuno può spiegare cosa significa "cloud computing" in contrasto con client-server?

Dipende dalla tua prospettiva. Per le aziende, il cloud computing è buono perché (di solito) ti consente di essere più flessibile con il numero di macchine che supportano i tuoi servizi. Questa flessibilità ti consente di essere più reattivo, il che dovrebbe farti risparmiare denaro. Le aziende possono anche trarre vantaggio dal consentire al provider cloud di eseguire backup, disaster recovery, sicurezza fisica e tutte le altre cose dell'infrastruttura che non vogliono affrontare. Questo di solito porta a risparmi e miglioramento della qualità.

Dal punto di vista del consumatore, la maggiore qualità della connessione e l'affidabilità sono buone. Alcuni provider cloud aiutano anche a distribuire i loro server per aiutare la latenza del consumatore.

Per i programmatori ... è praticamente una programmazione client-server in cui il server è un problema da raggiungere e occasionalmente è necessario utilizzare alcune API specializzate.


-1

Penso sia corretto affermare che "cloud computing" e "client-server" sono molto simili. Dal mio punto di vista, il cloud computing sembra basarsi maggiormente sul server rispetto al modello "client-server". In teoria, alcune forme di cloud computing possono verificarsi indipendentemente da una connessione client. Il vantaggio di un'applicazione in esecuzione solo sul cloud senza comunicazione client non sembra molto utile, quindi ha senso creare una qualche forma di comunicazione client con quel server.

Fondamentalmente penso che dipenda principalmente da dove viene fatta la maggior parte della tua potenza di calcolo. Un server in genere ha specifiche migliori, in termini di potenza hardware e di elaborazione, rispetto a un computer utente standard al fine di gestire semplicemente molte connessioni client e operazioni simultanee per servire tali connessioni. Il cloud computing usa questo come un vantaggio spostando quello che normalmente sarebbe il codice di esecuzione del client sul server e permettendo al client di essere il più "stupido" possibile. Richiede quindi meno risorse utente, per gestire lo stesso tipo di operazioni.

Potrebbe non essere la risposta migliore, ma è così che la vedo io.


2
Non sono d'accordo. Il Web utilizza un modello client-server. Il browser web è il client. Il web server è il server. È irrilevante che un server Web stia seduto "nel cloud". I due termini non sono comparabili.
GrandmasterB,

Per me sono paragonabili semplicemente perché li vedo essenzialmente uguali, tranne per il fatto che viene eseguita la maggior parte dei computer. "Cloud Computing" nella mia mente è lo stesso, tranne per il fatto che si basa su un piccolo supporto computazionale da parte del client.
StMotorSpark
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.