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.
‘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.
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.
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. http://www.workxpress.com
Great! great!
Fresh ideas. In turn suggest reading th article here http://techzone.enterra-inc.com/architecture/algorythm-of-defining-plain-polygon-signature-point/
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?
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.
this blog has very good information .