Blog ARCHIVE
»
Transformers 2 and Linkin Park's soundtrack - New Divide
»
Jury to every enslavement - dedicated to Swat victims
»
Alice and Bob song (c.f. Cryptography)
»
Pakistan's IT negligence & ignorance - a national security risk
»
Hey, lets have a "TeaBreak Toolbar"!
»
America's Black President and the swine flu
»
Guy Kawasaki's Talk @ Informatics Venture Live Coverage
»
Cloud-based Software Architecture
»
Of facts and hyprocrisy: What happens in Swat stays in Swat?
»
Pull a prank, a website that answers *ANYTHING* you ask
Page:



Cloud-based Software Architecture
Sat, 25th April 2009 - 07:16 AM   |   2201 views   |  comments

WHAT IS A CLOUD-BASED SOFTWARE ARCHITECTURE?

A cloud is a metaphor that is used to depict the notion of "Internet" and everything included in it. It includes websites, web services, protocols, machines, hosts, clients, etc. [4] Cloud computing in simple terms means to "outsource" your computing needs to other hosts or servers residing on the Internet. It is used to access services provided by other servers that can be utilized by your application. This heavily uses the Service-Oriented architecture in which software exports functionality of its components in a universally accessible way. This "sharing" of functionality is possible by means of web services that allow other software / developers to access, utilize and incorporate them in their own applications. [1]

It is important to note that "Cloud Computing" does not restrict itself to software services but it also spans over the concepts of "Platform-" and "Infrastructure-as-a-service" hence offering a comprehensive platform that not only covers functionality and software aspects but also the hardware and physical resources as well. All of these resources can be utilized by other software(s). Cloud based software architecture is an amalgamation of "cloud computing" and "software development." [1,2,4]

SERVICE ORIENTED ARCHITECTURE

Service oriented architecture (SOA) allows using functionality published by other software or services. In other terms, it is a loosely coupled architecture that distributes functionality and services provided by software as interoperable services. Softwares can be built using these Services or it may be used to distribute existing software over a number of servers. The granularity of these services can range from delivering a small feature to covering a complete business unit / process.

SOFTWARE-AS-A-SERVICE

Software as a Service (SaaS) is a model derived and based on SOA where complete software is provided in the form of a web-based solution. Often these solutions expose their public APIs and hence provide a web-service based gateway for other software.

SOA AND CLOUD

Any software that is built to make use of Internet-based architecture is termed as a "cloud-based software" [2] as it uses a host of services provided over the Internet. Cloud architecture can be seen as a superset that subsumes all internet based services that uses the Services Oriented approach to deliver services (platform, infrastructure, software, etc.).  [4]

The heart of cloud computing lies in using Service-oriented architecture as everything available is rendered, reproduced and made available by means of services.  It must be emphasized and made clear that SOA and Cloud are two different perspectives and are not comparable. SOA is an architectural pattern and a strategy whereas cloud computing is a type of solution. [3] However, SOA plays a vital role in delivering services that constitute the "cloud".

"Putting this more simply, SOA is all about the process of defining an IT solution or architecture, while cloud computing is an architectural alternative. Thus, SOA can’t be replaced by cloud computing. In fact, most cloud computing solutions are going to be defined through SOA. They don’t compete - they are complementary notions."  [3]


I did a little research in which I hypothesized that the cloud based software architecture is the next evolutionary step for large-scale (heavy traffic) web applications. Although a lot of people are skeptical about the whole notion of "cloud computing" et al., including Stallman however I explored and presented various practical situations where it becomes evident that something similar to a "cloud architecture" seems like a natural evolution.

I will be publishing the paper sometime soon, perhaps when I actually get time to setup my Computer Science Journal of research.


References:

[1]     "Cloud Computing"; B. Hayes; Communications of the ACM; Vol. 51, No. 7, July 2008; Page 9-11.
[2]    "Platform as a Service enables cloud-based software development and deployment lifecycle approach"; Dana Gardner (ZDNet).
[3]    "SOA and cloud: clearing up the 'foggy' relationship"; Joe McKendrick; 19 March 2009; http://blogs.techrepublic.com.com/programming-and-development/?p=1021; Accessed on 19 March 2009.
[4]    "Enterprise Cloud Services: Deriving Business Value from Cloud Computing White Paper" (White Paper); M. Haynie; pp. 13; http://cloudservices.microfocus.com/main/uploaded/doc/MFECS-WP-deriving-business-value.pdf; Accessed on 18 March 2009.

If you like the post, please share and help me spread the word. Thanks.

Readers' COMMENTS (7)

Monis Iqbal says:
'Computer Science Journal of research' I like
that.

Evolution is the correct word describing
applications running on a cloud. Here evolution can be of
two types. First one is of course the scalability factor
which is the basic notion of the cloud. Second one focuses
on the services provided in the cloud.

Again, I see two
important players in this area: Cloud Provider and
Consumer.
Both are equally important for the evolution
process, that is the 2nd type of evolution
(services).

Correct me if I am getting wrong or being too
vague.
Asim says:
That's exactly the divide: Providers and Consumers. The line
which often gets vague here is to distinguish between
providers that provide "hardware-" side of the
cloud architecture (e.g. platform and infrastructure as a
service), and those that provide "services" in the
cloud.

As a whole it adds both to scalability (e.g.
cloud-based hosting and computing platforms) as well as to
the service front. I think "services" is the
notion of "using" the architecture in a specific
way. It depends on your definition of a service.

Coming
back, Consumers themselves can be recursively classified in
a series of hierarchy. They can become "providers"
of services in the cloud. Its all inter-connected, hence
making it a tad-bit harder to perceive.

Another
challenging bit is the enormous possibility to innovate in
the "business model".

Thanks for sharing your
opinion and comment. :) I really appreciate the feedback.
Jake Burns says:
Thanks for great explanation and clarifications. Our space,
PaaS, is really getting hot. Let me know if you would like
to try our platform out or learn more.

Thanks for
writing. www.workxpress.com
aliona says:
Great! great!
Fresh ideas. In turn suggest reading th
article here
http://techzone.enterra-inc.com/architecture/algorythm-of-de
fining-plain-polygon-signature-point/
Arfeen says:
The impression I am getting after reading this post is that
you can only build your application using SOA, if you want
your application to be hosted on a cloud. I am searching for
an answer. My question is very simple, Is there an
architecture that developers follow (not SOA) to make their
applications cloudable? You know better than me, Distributed
Database issues, Memory and Session Management Issues, Web
farming and web gardending. Can you please tell me what it
takes to make a simple databased application cloudable,
architecture wise?
Asim says:
Hi. Thanks for dropping by and for the comments
:)

@Arfeen:
Well SOA is one of the newer
"architectures" that provide an easy accessibility
option. It's not required but of the cloud service providers
follow this robust approach to deliver services to
you.

However strictly speaking you can use primitive
means like clustering, internet file systems, etc over the
internet and they would 'technically' be referred as workign
in the cloud. However the notion here is that cloud =
Internet. Say for instance 10 DB servers - note the
architecture remains primarily "static".

In
general when we say cloud computing we usually mean
dynamically "outsourcing" the service over the
Internet. The key here is "Dynamic". It could be
10 servers or 50 depending on your needs - dynamically.
fahad ullah khan says:
this blog has very good information .

Post COMMENT
Your name:
Your email:
Your website:
Your comment:
Not allowed: HTML, script

Word Security:
This step has been introduced to intercept automated submission attempts. Please enter the word as shown in the image below (case-insensitive):

Enter Word as shown above:

 
Creative Commons License