views:

676

answers:

3

As far as I know, Cloud computing might be a evolution in software architect, and it will replace some current architectures, such as client-server.

These two architecture seem to share similarities for me (I know very little about both), but I don't know the differences between them. What are the cons and pros of cloud computing over client-server architecture?

Thank you so much.

+1  A: 

Cloud computing is just marketing wording of client-server architecture.

mouviciel
I'd add that in the "traditional" client-server model you're talking one server with multiple clients but with cloud-computing you're often talking distributed servers with multiple clients
Nick Gotch
According to Wikipedia, http://en.wikipedia.org/wiki/Cloud_computing, Cloud computing derives characteristics from client-server, but they're not the same. As I know, Cloud computing is a special case of client-server, not client-server itself.
Vimvq1987
Very specifically speaking, Cloud computing is a subset of client-server architecture.
jpabluz
There may be several variants in the OSI layers involved but in the end, there is always one client computer asking a request to one server computer which gives back its response.
mouviciel
+4  A: 

Client-Server

In the great-wide world of computing there are only two kinds of applications,

  1. standalone application, and
  2. client-server application

Standalone simply means the user-interface and the business logic and the datastore and any and all resources are completely self contained within a single execution environment - the end-user's machine.

In contrast, client-server means there is some logical segregation of these components, services, and resources. Typically we see user-interfaces in a local execution [aka "client"] and business and data store and other resources in a remote execution [aka "server"]. Some examples,

  • MSN Messenger [contains an application we run on our local machine, while a back-end service facilitates communication at a remote location]
  • Facebook [contains a thin application - our web browser - and a remote service - their servers]
  • StackOverflow [same Facebook]

With this in hand, let's look at cloud computing.

Cloud Computing

Cloud computing is an abstraction of traditional server hosting solutions. Instead of buying 10 servers myself to run and manage in my own operations datacentre, I now lease X servers from a vendor where X is a variable number decided by me whenever I want.

There is a distinct advantage to leveraging a cloud. If I bought 10 servers, I must manage and maintain these 10 servers even if they are underutilized [say only 1 server is used 90% of the time, while all 10 are pinned 10% of the time at peak hours]. That means I am paying way too much in maintenance for 90% of the time, while being inflexible when I need to grow the remaining 10%.

The advantage of cloud computing is that "someone else" is managing the server farm for us, and is willing to lease out a variable number of machines to us on demand. So in our scenario above, I could lease 1 machine for 90% of the time in off-hours, and scale up to 10 or more machines the remaining 10% of the time.

Microsoft takes this abstraction one step further with Windows Azure. They do not lease generalized servers, but application domains. This is the one example [to mind] where a cloud implementation has actual design implications - but it is predicated on the same premise of elastic hosting.

Relation

For the most part, because client-server is a software paradigm and cloud computing is a hosting abstraction, they are independent concepts. Keeners, however will realize that cloud computing implies business, data stores, and other resources are remotely hosted, which necessitates that any application running within a "cloud" is part of a client-server application.

johnny g
What about Peer-to-Peer?
Nick Gotch
i would call that client-server still. just that clients become servers to other clients. reading several of the comments to the other answer, i may be thinking in a more generalized context ...
johnny g
In P2P there's no "centralized" server though so I wouldn't consider this the same kind of communication.
Nick Gotch
"from a certain point of view", Obi Wan was always such a smart-arse. my response is from a lower-level definition of client-server, mostly because this is where i work writing components and services in distributed applications. at such a level "P2P" does not exist, nor any other high level term. it does exist at a higher level though, describing network or communication topologies. perhaps i misjudged the level of the original question, but thought a "grass-roots" answer was appropriate at the time.
johnny g
What you're actually describing is distributed computing, not the client-server model. Client-Server and P2P are separate architectures under the distributed computing umbrella (http://en.wikipedia.org/wiki/Distributed_application#Architectures).That substitution aside, your answer's good.
Nick Gotch
A: 

I think client server is generally implemented as a necessity for the software/application but cloud computing is generally opted for optimization like for saving on costs and maintenance.

Ankit Chaudhri