Cloud computing over Client-server: differences, cons and pros? [closed]
Asked Answered
B

4

10

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.

Brewer answered 8/4, 2010 at 13:59 Comment(1)
Cloud is like good (old) Mainframe's Time Sharing Option with more features for today's needs like email pushing etc. IBM was right all the time!Syphon
V
16

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.

Veloz answered 8/4, 2010 at 14:39 Comment(5)
What about Peer-to-Peer?Abstriction
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 ...Veloz
In P2P there's no "centralized" server though so I wouldn't consider this the same kind of communication.Abstriction
"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.Veloz
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 (en.wikipedia.org/wiki/Distributed_application#Architectures). That substitution aside, your answer's good.Abstriction
L
2

Cloud Architectures are designs of software applications that use Internet-accessible on-demand services. Applications built on Cloud Architectures are such that the underlying computing infrastructure is used only when it is needed (for example to process a user request), draw the necessary resources on-demand (like compute servers or storage), perform a specific job, then relinquish the unneeded resources and often dispose themselves after the job is done. While in operation the application scales up or down elastically based on resource needs.

Example: an application that is currently in production using the on-demand infrastructure provided by Amazon Web Services. This application allows a developer to do pattern-matching across millions of web documents. The application brings up hundreds of virtual servers on-demand, runs a parallel computation on them using an open source distributed processing framework called Hadoop, then shuts down all the virtual servers releasing all its resources back to the cloud—all with low programming effort and at a very reasonable cost for the caller.

Lizarraga answered 13/11, 2011 at 16:26 Comment(0)
T
1

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

Trestlework answered 8/4, 2010 at 14:2 Comment(4)
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 clientsAbstriction
According to Wikipedia, 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.Brewer
Very specifically speaking, Cloud computing is a subset of client-server architecture.Kerstin
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.Trestlework
L
0

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.

Lichen answered 10/4, 2010 at 15:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.