Wie unterscheidet sich „Cloud Computing“ von „Client-Server“?

30

Als er sah, wie ein CEO eines neuen "Cloud-Computing" -Unternehmens sein Unternehmen heute in einem Finanzfernsehprogramm beschrieb, sagte er, dass "Cloud-Computing dem altmodischen Client-Server-Computing überlegen ist".

Jetzt bin ich verwirrt. Kann mir bitte jemand erklären, was "Cloud Computing" im Gegensatz zu Client-Server bedeutet?

Nach meinem Verständnis ist Cloud Computing eher ein Modell für Netzwerkdienste, sodass ich die physische Hardware weder besitze noch pflege. Die "Wolke" ist das ganze Back-End-Zeug. Möglicherweise habe ich jedoch noch eine Anwendung, die mit dieser "Cloud" -Umgebung kommuniziert. Und wenn ich eine Website starte, die ein Formular anzeigt, das ein Benutzer ausfüllt, auf eine Schaltfläche drückt und einen Bericht zurückgibt, der vom Webserver generiert wurde, ist das nicht dasselbe wie "Cloud" -Computing? Und würden Sie meinen Webbrowser nicht als "Client" betrachten?

Bitte beachten Sie, dass meine Frage spezifisch für das Konzept des "Cloud Computing" in Bezug auf "Client-Server" ist.

Es tut uns leid, wenn dies eine unangemessene Frage für diese Site ist. Es ist das nächstgelegene im Stack-Universum und ich bin zum ersten Mal hier. Ich bin ein Oldtimer und programmiere seit den Mainframe-Tagen in den späten 70ern.

BellevueBob
quelle
Dies ist eine Vereinfachung, aber ich denke, der Hauptunterschied besteht darin, wo die Daten gespeichert werden. Auf dem Client-Server speichert IHR Unternehmen seine eigenen Daten. In Cloud Computing werden Ihre Daten vom Cloud-Anwendungsanbieter gespeichert. Dies hat Vorteile, da der Cloud-Anwendungsbenutzer nur wenig bis gar keine Wartung hat und der Cloud-Anwendungsentwickler seinen Code und seine Datenbanken aktualisieren kann, ohne sich Sorgen machen zu müssen, dass jemand 3 Revisionen der dahinter liegenden Software bricht. Der Nachteil ist natürlich, dass der App-Benutzer seine Daten im Speicher eines anderen Benutzers speichert.
Dunk
3
Kurz gesagt, man könnte sagen, dass Client-Server gestern ein Hype war, während die Cloud der aktuelle Hype ist. :-)
JensG
Client-Server ist für Cloud-Computing wie Assembler-Code für Excel.
Mouviciel
1
Es ist der Unterschied zwischen dem Fahren eines Mietwagens und dem Fahren eines eigenen. Kein wirklicher Unterschied, außer dass Sie sich keine Sorgen um die Wartung machen müssen!
James Anderson

Antworten:

28

Genau genommen gibt es keine "Wolke". Nicht im Sinne dessen, was der CEO sagte. Natürlich gibt es ein Internet. Es gibt gehostete Dienste. Es gibt VPS. Es gibt Content-Delivery-Systeme. Wir (technische Leute) haben uns an den Begriff angepasst, um auf bestimmte gehostete Servicemodelle zu verweisen. "Cloud" in Consumer-Medien ist jedoch größtenteils ein Marketingbegriff, der lose mit "Internet" übersetzt wird. In den meisten Fällen bedeutet dies auch, dass Sie monatlich eine Gebühr zahlen müssen.

Sie sind der Meinung, dass die beiden Begriffe "Cloud" und "Client-Server" nicht zusammenhängen. Wenn ein Dienst in der Cloud gehostet wird (ich möchte immer ein dramatisches "dun-dun-daaaaaaa" hinzufügen, nachdem ich diesen Ausdruck verwendet habe), wird eine Client-Server-App nicht weniger als "client-server-y". Beispielsweise verwendet das "Web" hauptsächlich ein Client-Server-Modell. Der Webbrowser ist der Client. Der Webserver ist der Server. Dass ein Webserver in der Cloud gehostet wird, ändert nichts an der Tatsache, dass die Beziehung zwischen Webbrowser und Webserver Client-Server ist.

Der Begriff Client-Server definiert also die Beziehung zwischen zwei Entitäten in einem System. Wo die Entitäten physisch gehostet werden, ist irrelevant.

Grundsätzlich sind Sie richtig. Die beiden sind nicht vergleichbar.

GroßmeisterB
quelle
Es gibt mindestens zwei Arten von Cluds: High-Level-Clouds, bei denen das Management die als "Steam" oder "Smoke" (daher der Begriff "Smokeware") bezeichneten Server verlässt und darüber spricht, und Low-Level-Clouds, bei denen sich Server technisch befinden genannt "Nebel". Entschuldigung für den Zynismus.
Emilio Garavaglia
21

"Cloud Computing" ist ein umfassender Begriff, der zwei Aufgaben erfüllt: Erstens, um alle möglichen Verwendungen eines Client-Server-Modells hinter einem einzigen Begriff zu abstrahieren, im Gegensatz zu spezifischeren Anwendungsfällen wie "Dateiserver", "Datenbankserver", "Webserver", "Anwendungsserver" usw .; und zweitens, um die Serverarchitektur selbst in Bezug auf Hardware, Topologie, Standort und sogar Besitz zu abstrahieren.

In einem traditionellen Client-Server-Modell, das heute definitiv noch gebräuchlich ist, stellt ein Client eine Verbindung zu einem Server her, der einen bestimmten Job ausführt. Dieser Server kann eine Datenbank, eine Reihe von Dateifreigaben oder eine Webseite hosten. Wenn der Client eine Verbindung zu diesem Server herstellt, besteht ein implizites Verständnis für die Art der Kommunikation und Datenübertragung, die zwischen den beiden Computern stattfinden wird. Der Client oder der Endbenutzer hat möglicherweise auch Verständnis für die Funktionen der Serverhardware und deren Einschränkungen. Diese relativ "enge Kopplung" zwischen dem Clientcomputer und seinem Server kann für einen Systemadministrator, der einen Server zur Wartung ausschalten muss, Probleme bereiten. Alle Anwendungen, die von Ressourcen abhängen, die von diesem Server bereitgestellt werden, müssen auf einen anderen Server verweisen.

In einem Cloud-Modell werden die Hardware, die Topologie, die Arbeitsteilung und die gerade Anzahl der beteiligten Maschinen hinter einem einzelnen Endpunkt abstrahiert. Die Analogie könnte zu einer modernen "Webanwendung" gezogen werden, im Gegensatz zu älteren Generationen von "Websites", die statischer waren. Wir könnten vermuten, dass sich hinter den Kulissen ein Anwendungsserver und ein DB-Server befinden, aber das muss uns wirklich nichts ausmachen. Der Webserver stellt als Teil seiner Aufgabe, die vollständige Anwendung für Benutzer über den "Rand" hinaus bereitzustellen, einen einheitlichen Endpunkt bereit, der den kontrollierten Zugriff auf alle Daten und Dienste ermöglicht, die von anderen Computern hinter dieser Eingangstür bereitgestellt werden.

Das Ergebnis ist, dass mit einem einzelnen Endpunkt, der für die Bereitstellung der Funktionalität der Anwendung verfügbar ist, sich ein Client-Benutzer der Anwendung nur darum kümmern muss, wo er seine Daten erhält, wo er einen solchen und einen solchen Remote-Anwendungsprozess aufrufen kann , etc; Dies bedeutet, dass die Administratoren und Architekten des Dienstanbieters in dieser Cloud mehr oder weniger die Möglichkeit haben, die Maschinen, die Topologie und andere spezifische Implementierungsdetails dieses "Cloud-Dienstes" zu ändern, ohne dass die Kunden dies wissen. Wenn Facebook es für sinnvoll hält, kann es sein gesamtes Datenspeichersystem mit einem anderen DBMS und allen neuen Servern von Grund auf neu erstellen. Solange die Website während des Übergangs verfügbar bleibt, wird niemand klüger sein. in der Tat tat Facebook genau das, viele Male,

KeithS
quelle
2
So sehr ich den Zynismus hinter "Cloud" -Marketing schätze, der in der Antwort von GrandmasterB enthalten ist, ist dies die wahre Antwort.
Eric King
Ich fand das als die beste Antwort!
Arsal
5

Ein wesentlicher Bestandteil des "Cloud Computing" ist das Deployment-Management-Tool.

In "klassischen" Bereitstellungen wurde eine bestimmte Maschine für eine bestimmte Anwendung bestellt und eine ziemlich feste Konfiguration durchgeführt.

In einer Cloud-Umgebung gibt es mehr oder weniger standardisierte Hardware in einem Pool und eine API, die darauf virtuelle Maschinen aus einer Form von Vorlagen erstellt und konfiguriert. Auf diese Weise können fehlerhafte Systeme je nach Bedarf einfach ausgetauscht, vergrößert oder verkleinert und die Hardware bei Bedarf automatisch zugewiesen werden.

Natürlich haben auch die richtigen Administratoren das meiste getan, aber neben der reinen Vermarktung gibt es eine Grundlage für standardisierte APIs (Aamzons AWS API, die auch von Tools wie Eucalyptus für "private Clouds" angeboten wird) und Tools (z. B. Puppet).

johannes
quelle
Bei so viel davon geht es eher um "Marketing" als um tatsächliche Technologie, ähnlich wie beim Hoo-Haa über "Big Data".
BellevueBob
Sie vergessen einen großen Aspekt des "Marketings". Marketing ist nicht nur "Werbung", sondern auch "Preisgestaltung". Und hier unterscheidet sich Cloud Computing vom Client-Server-Computing. Es ist auch manchmal Utility Computing, weil es wie Dienstprogramme (Strom, Leitungswasser) festgesetzt wird. Natürlich ist dieses Modell auch nicht neu, es ist der Preis für Mainframe-Computing.
Jörg W Mittag
2

In der "traditionellen" Client-Server-Architektur hatten Sie statisch zugewiesene Ressourcen (oder zumindest als solche dargestellt - ich habe keine Erfahrung aus der Zeit vor der Cloud. Bitte korrigieren Sie mich, wenn ich falsch liege und auf falsches Marketing angewiesen bin). Der Datenbankserver hieß db.yourcompany.com und Ihr Webserver hat mit ihm kommuniziert. Wenn Sie die Ressourcen erhöhen möchten, können Sie einen weiteren dedizierten Webserver hinzufügen und den Lastenausgleich durchführen.

Auf der anderen Seite wurde in der Cloud viel Wert auf die Abstraktion niedrigerer Ebenen gelegt und es wird angegeben, wie der "Server" aufgebaut ist. Auf dem Zum Beispiel haben Sie:

  • HAAS (Hardware As A Service) - Client (Firma) erhält einen gehosteten Computer, auf dem sie jedes gewünschte Betriebssystem installieren können. Der Unterschied besteht darin, dass sie nicht wirklich einen Computer, sondern eine virtuelle Maschine in einer Farm bekommen. Da es virtualisiert ist, müssen sie sich nicht um Details auf niedrigerer Ebene wie die Menge an Rechenleistung kümmern, die Rechnungen bezahlen, unabhängig davon, ob die Maschine verwendet wird, wie sie angeschlossen ist usw.
  • PAAS (Platform As A Service) - ein Level höher - Sie schreiben eine Anwendung, die irgendwie irgendwo läuft. Da die API allgemein genug ist, können die Cloud-Anbieter Ressourcen nach Bedarf zuweisen. Wenn Ihre Anwendung also einen Schrägstrich aufweist, zahlen Sie für mehr Ressourcen, anstatt unter nicht böswilligem DDOS zu leiden.
  • SAAS (Software As A Service) - ein weiteres höheres Level - Sie schreiben keine Anwendung - Sie verwenden eine. Es ist Ihnen egal, wie es implementiert wird oder welche Ressourcen es verwendet. Es ist überall und jederzeit verfügbar.

Beachten Sie, dass in den meisten Fällen impliziert wird, dass der eigentliche Service an große Unternehmen ausgelagert wird (z. B. Amazon oder Google), dies jedoch nicht erforderlich ist - große Unternehmen oder Universitäten setzen ihre eigenen internen Clouds ein, um die Verwaltung von Ressourcen zu vereinfachen. Auf diese Weise können Sie der Anwendung Ressourcen hinzufügen, die nach Bedarf ausgeführt werden sollen. Wenn der neue interne Start erfolgreich war, müssen sie sich keine Sorgen machen, dass die Server überlastet wurden. Da Skaleneffekte jedoch eine Rolle spielen, wird dies in der Regel nur bei besonderen Anforderungen (z. B. hinsichtlich der Sicherheit) durchgeführt.

Aus der Sicht des Benutzers ist es transparent und vermittelt einen Eindruck von der Client-Server-Architektur. Der Webserver befindet sich möglicherweise in der Cloud, während er einfaches altes HTTP verwendet. Die Ideenprobleme und -lösungen reichen in der Tat bis in die 50er-Jahre zurück, und derzeit treten sie eher im Gegensatz zu Thick-Client-PCs auf.

Allerdings könnte es auch ein Modewort in einem bestimmten Satz sein und besagen, dass das Unternehmen dynamisch ist und sich auf seine Kernkompetenz konzentriert, während es seine Mitarbeiter befähigt.

Maciej Piechotka
quelle
1

Kann mir bitte jemand erklären, was "Cloud Computing" im Gegensatz zu Client-Server bedeutet?

Das hängt von Ihrer Perspektive ab. Für Unternehmen ist Cloud Computing gut, da Sie (normalerweise) flexibler mit der Anzahl der Computer umgehen können, die Ihre Dienste unterstützen. Diese Flexibilität ermöglicht es Ihnen, schneller zu reagieren, wodurch Sie Geld sparen können. Unternehmen können auch den Cloud-Anbieter Backups, Disaster Recovery, physische Sicherheit und alle anderen Infrastruktur-Aufgaben ausführen lassen, mit denen sie sich nicht befassen möchten. Dies führt in der Regel zu Einsparungen und Qualitätsverbesserungen.

Aus Verbrauchersicht sind die erhöhte Verbindungsqualität und Zuverlässigkeit gut. Einige Cloud-Anbieter helfen auch bei der Verteilung ihrer Server, um die Latenz des Verbrauchers zu verlängern.

Für Programmierer ... es ist so ziemlich Client-Server-Programmierung, bei der es schwierig ist, auf den Server zuzugreifen, und Sie müssen gelegentlich einige spezielle APIs verwenden.

Telastyn
quelle
-1

Ich denke, es ist fair zu sagen, dass "Cloud Computing" und "Client-Server" sehr ähnlich sind. Aus meiner Sicht scheint Cloud Computing mehr auf dem Server als auf dem "Client-Server" -Modell zu beruhen. Theoretisch können einige Formen des Cloud-Computing unabhängig von einer Client-Verbindung auftreten. Der Vorteil einer Anwendung, die nur in der Cloud ohne Clientkommunikation ausgeführt wird, scheint nicht sehr hilfreich zu sein. Daher ist es sinnvoll, eine Art Clientkommunikation mit diesem Server zu erstellen.

Im Wesentlichen hängt es meiner Meinung nach hauptsächlich davon ab, wo der Großteil Ihrer Rechenleistung ausgeführt wird. Ein Server verfügt in Bezug auf Hardware und Rechenleistung im Allgemeinen über bessere Spezifikationen als ein Standardbenutzercomputer, um einfach viele Clientverbindungen und gleichzeitige Vorgänge für diese Verbindungen zu verwalten. Cloud Computing nutzt dies als Vorteil, indem es den normalerweise vom Client ausgeführten Code auf den Server überträgt und dem Client ermöglicht, so "dumm" wie möglich zu sein. Dies erfordert weniger Benutzerressourcen, um die gleiche Art von Operationen auszuführen.

Könnte nicht die beste Antwort sein, aber so sehe ich es.

StMotorSpark
quelle
2
Ich stimme dir nicht zu. Das Web verwendet ein Client-Server-Modell. Der Webbrowser ist der Client. Der Webserver ist der Server. Dass ein Webserver in der Cloud sitzt, spielt keine Rolle. Die beiden Begriffe sind nicht vergleichbar.
GroßmeisterB
Für mich sind sie einfach vergleichbar, weil ich sie als im Wesentlichen gleich betrachte, mit Ausnahme dessen, wo der Großteil der Datenverarbeitung durchgeführt wird. "Cloud Computing" ist in meinen Augen dasselbe, außer dass es auf wenig rechnerischer Unterstützung durch den Client beruht.
StMotorSpark