Académique Documents
Professionnel Documents
Culture Documents
Cloud Computing
By
Master‘s Thesis
August 2010
I hereby certify that this material, which I submit for assessment on the program of study leading
to the award of Masters in Computing Science degree in Griffith College Dublin, is entirely my
own work and has not been submitted for assessment for an academic purpose at this or any
other academic institution other than in partial fulfillment of the requirements stated above. All
rights reserved. No part of this publication may be reproduced in any form without prior consent
of undersigned.
This research project is based on Cloud computing. I have written a report on Cloud Computing
Concept, Cloud Computing Key characteristics, Cloud Computing Architecture, Different forms
of Cloud Computing, Cloud Computing Concern, Idea behind Cloud Computing, Cloud
Computing services (SaaS, PaaS, IaaS), benefit of Cloud Computing and the future on Cloud
Computing. I have written an analysis report on Google App Engine In my third Chapter. I have
described a Google App Engine, Application environment of Google App Engine. In the same
chapter I have written an analysis report on Instant Chat Messenger. I have described the
background of Instant Chat Messenger. In this Research Project I have developed an Instant Chat
Messenger Application. This chat messenger is available on World Wide Web on the internet. I
have deployed my application on Google App Engine. Google App Engine lets us run our web
applications on Google infrastructure. This Research project describes how I developed my web
based Instant chat messenger which is compatible with Google App Engine Infrastructure. I have
explained how I deployed my application on Google App engine. After I deployed my
application on Google App Engine I have carried out functional tests and performance testing on
my application.
Acknowledgements
There are many people who contributed to the effort for my master‘s thesis. This
acknowledgements section will work on a ―last match‖ basis, so I will start with a default thank
you statement to cover everyone who helped me along the way lest I inadvertently leave them
out later on: Thank you!
I would like to thank Dr. Kevin Casey for his excellent guidance and helpful advice. Whenever I
lost sight of the objectives of this thesis; he skillfully led me back on track. He has devoted a lot
of time to me and has always been very patient with my questions.
I would like to express my special gratitude to Dr. Waseem Akhtar, for his continuous guidance
during the entire course.
Lastly, thank you to my parents. Without the support you gave me when I was younger, I would
not be at this stage of my life now.
Table of Contents
Table of Figures .............................................................................................................................. 8
Chapter 1: ...................................................................................................................................... 10
Introduction ................................................................................................................................... 10
Chapter 2: ...................................................................................................................................... 13
Chapter 3: ...................................................................................................................................... 30
3.5 Comparing java Applet based application and web based java servlet application ............ 42
Chapter 4: ...................................................................................................................................... 45
Design and Implementation .......................................................................................................... 45
4.1 Design.................................................................................................................................. 45
Chapter 5: ...................................................................................................................................... 55
Testing........................................................................................................................................... 55
Chapter 6 : ..................................................................................................................................... 66
6.1 Conclusion........................................................................................................................... 66
Bibliography: ................................................................................................................................ 69
Table of Figures
Figure 1: Cloud Computing Concept ............................................................................................ 13
Figure 9: Instant Messaging Architecture With Portal-based Secure Mode or Archiving .......... 38
Figure 12: Google App Engine Dynamically Scalable Platform Stack ........................................ 44
Introduction
1.1 Motivation
The Motivation for this thesis is derived from my Information Technology (IT) background. In
the many multinational enterprises company facing a huge problem of maintenance of hardware ,
Data Base space issue , Data backup , power failure, Server room Space, Software cost and many
more. The Cloud Computing Concept gives freedom from all of these problems. Forward-
thinking business leaders are using the Cloud within their enterprise data centers, to take
advantage of the best practices that Cloud Computing has established, namely scalability, agility,
automation, and resource sharing. By using a Cloud-enabled application platform, companies can
choose a hybrid approach to cloud computing that employs an organization's existing
infrastructure to launch new cloud-enabled applications. This hybrid approach allows IT
departments to focus on innovation for the business, reducing both capital and operational costs
and automating the management of complex technologies [21] [22].
With the current state of the economy, organizations are constantly looking at ways of cutting
cost, and from a business point of view IT infrastructure is constantly under the microscope for
its heavy outgoings. Many organizations spend big amount of budget on IT infrastructure. For
cutting the IT budget cost many technology strategies are comes in market. The strategies are
below.
1. Virtualization.
2. Cloud Computing.
3. Servers — Beyond Blades.
4. Web-Oriented Architectures
5. Enterprise Mashups.
6. Specialized Systems.
7. Unified Communications.
8. Business Intelligence.
9. Green IT.
10. Social Software and Social Networking [23].
As we can see Cloud Computing is listed as second position due to its economy advantage over
traditional computing, and also due to huge potential benefit of leveraging Cloud Computing on
business agility.
The Primary motivation for this thesis comes from the understanding the concept of Cloud
computing, how it‘s work, how can deployed the Applications, how it‘s secure and how can store
data base and backup.
1.2 Aim
The Aim of My research is develop a web application (Instant Chat Messenger) and provide this
application on World Wide Web with high availability and minimum hardware and software cost
or cheapest way.
In this research I want to learn about Cloud Computing Concept and use my application (Instant
Chat Messenger) on public cloud. I want to use Google App engine for Java platform of my
application.
I have to complete this research on my given project time period and achieve my goal.
1.3 Existing Problems in traditional Computing
Hardware Cost:
Software Cost:
In Traditional Computing we have to spend lots of budget on software cost and licensing cost.
Speed/cost of implementation:
Remote access:
Would have to be set up and would only work from pre-defined locations. Costs incurred would
include Servers, Third Party Software and communication links.
Considerable In the event of a disaster the client is dependent on the Reliability and quality of
backups taken locally and held off site [2][1].
Chapter 2:
Cloud Computing is unlike grid computing, utility computing, or autonomic computing. In fact,
it is a very independent platform in terms of computing. The best example of cloud computing is
Google Apps where any application can be accessed using a browser and it can be deployed on
thousands of computer through the Internet [24][25].
Cloud computing is cost-effective. Here, cost is greatly reduced as initial expense and recurring
expenses are much lower than traditional computing. Maintenance cost is reduced as a third
party maintains everything from running the cloud to storing data. Cloud is characterized by
features such as platform, location and device independency, which make it easily adoptable for
all sizes of businesses, in particular small and mid-sized. However, owing to redundancy of
computer system networks and storage system cloud may not be reliable for data, but it scores
well as far as security is concerned. In cloud computing, security is tremendously improved
because of a superior technology security system, which is now easily available and affordable.
Yet another important characteristic of cloud is scalability, which is achieved through server
virtualization [24][26].
Cloud computing architecture, just like any other system, is categorized into two main sections:
Front End and Back End. Front End can be end user or client or any application (i.e. web
browser etc.) which is using cloud services. Back End is the network of servers with any
computer program and data storage system. It is usually assumed that cloud contains infinite
storage capacity for any software available in market. Cloud has different applications that are
hosted on their own dedicated server farms.
Cloud has centralized server administration system. Centralized server administers the system,
balances client supply, adjusts demands, monitors traffic and avoids congestion. This server
follows protocols, commonly known as middleware. Middleware controls the communication of
cloud network among them [24][25][26][27].
Figure 2: Cloud Computing Architectural Model [3]
Cloud Architecture runs on a very important assumption, which is mostly true. The assumption is
that the demand for resources is not always consistent from client to cloud. Because of this
reason the servers of cloud are unable to run at their full capacity. To avoid this scenario, server
virtualization technique is applied. In sever virtualization, all physical servers are virtualized and
they run multiple servers with either same or different application. As one physical server acts as
multiple physical servers, it curtails the need for more physical machines.
As a matter of fact, data is the most important part of cloud computing; thus, data security is the
top most priority in all the data operations of cloud. Here, all the data are backed up at multiple
locations. This astoundingly increases the data storage to multiple times in cloud compared with
a regular system. Redundancy of data is crucial, which is a must-have attribute of cloud
computing [23][24][25][27].
2.3 Different forms of Cloud Computing
Google Apps., Salesforce.com, Zoho Office and various other online applications use cloud
computing as Software-As-Service (SAAS) model. These applications are delivered through
browser, and multiple customers can access it from various locations. This model has become the
most common form of cloud computing because it is beneficial and practical for both the
customers and the services providers. For customers, there is no upfront investment and they can
Pay-As-They-Go and Pay-As-They-Grow. On the other hand, the service providers, can grow
easily as their customer base grows.
Aamzon.com, Sun and IBM offer on-demand storage and computing resources. Web service and
APIs enable developers to use all the cloud from internet and allow them to create large-scale,
full-featured application. Cloud is not simply limited to providing data storage or computing
resources, it can also provide managed services or specific application services through web
[25][26][27].
Security of confidential data (e.g., SSN or Credit Card Numbers) is a very important area of
concern as it can make way for very big problems if unauthorized users get access to it. Misuse
of data can create big issues; hence, in cloud computing it is very important to be aware of data
administrators and their extent of data access rights. Large organizations dealing with sensitive
data often have well laid out regulatory compliance policies. However, these polices should be
verified prior to engaging them in cloud computing. There is a possibility that in cloud
computing network, sometimes the network utilizes resources from another country or they
might not be fully protected; hence, the need arises for appropriate regulatory compliance
policies [27].
In cloud computing, it is very common to store data of multiple customers at one common
location. Cloud computing should have proper techniques where data is segregated properly for
data security and confidentiality. Care must be taken to ensure that one customer‘s data does not
affect another customer‘s data. In addition, Cloud computing providers must be equipped with
proper disaster recovery policies to deal with any unfortunate event [26][27].
Comparison has often been drawn between Relational Database and Cloud Computing. They are
related for sure but they should not be confused for being the same thing. In actual fact, they are
not really competing with each other. There are some unique requirements of applications when
they do not call for any advance query techniques but rather need fast access to database. In such
scenarios cloud computing should be used. In cloud, data is stored across myriad geographic
locations, and processing data from different geographic database leads to delay in receiving
data. In case of applications where there is the need of processing huge database using complex
queries, traditional relational database is best suited. Cloud has its limitations. As for now, it only
supports distributed computing; transactional operations are not currently supported in cloud
computing. Cloud Computing is the next big thing in the arena of computing and storage. There
are some concerns about security and its availability. However, different service providers are
coming up with various solutions and suggestions in response to customers‘ concerns. In any
case, cloud is getting bigger and better, and as long as they are available through web services,
without capital infrastructure investment at reasonable price, it is for sure going to proliferate and
create robust demand in times to come [4][27].
2.6 Idea Behind Cloud Computing
―Cloud Computing‖ is a new buzzword. Everybody is talking about it and most people don‘t
understand it. I will try to review the current state of cloud computing from an investment
perspective and possible future developments in the area.
IT expenses are huge in most companies. At least that‘s what any manager (with some
exception) will tell you. To reduce those expenses, companies have adopted various business
practices: cutting the number of personnel (usually with disastrous consequences later),
appointing MBAs as IT department managers, buying software packages instead of in-house
development (not a bad idea) and, of course, outsourcing (with the whole spectrum of results,
from awful to great). In most cases, IT costs have ignored all heroic efforts of managers and have
continued to grow. They continue to grow for two reasons: IT does more work every year and
most of the efforts of managers are counterproductive- they actually increase costs instead of
cutting them [28].
Looks like managers see cloud computing as a great new way to cut IT costs. They are both right
and wrong. They are right because when implemented properly, cloud computing can cut costs
and/or increase productivity. They are wrong because there is no such thing as a free lunch and
correct implementation still costs a lot of time, effort, and money [28].
In the news, especially investment news, there are three different IT developments which are
lumped together under name of ―cloud computing‖. Below is a quick review of them [28].
Private cloud also called internal cloud or corporate cloud. Private Cloud is a promoting term for
a proprietary computing architecture that provides hosted services to a limited number of people
behind a firewall. It‘s also called server farm, this is a new way of organizing computing
infrastructure. Companies set up big server farms with thousands of individual servers. Servers
belong to the company, although management might be outsourced. The biggest plus of internal
clouds is the fact that all data is kept on company‘s own hardware. Usual features of such farms
include: virtualization, automatic computer management and virtual networking. I am not going
to explain all these terms, there are enough explanations on the web [29][30][43].
The Cloud Computing service provider provides virtual machines to their customers, with the
operating system of the customer‘s choice. In other word public cloud is one based on the
standard Cloud computing model, in which a service provider makes resources, such as
applications and storage, available to the general public over the Internet? Public Cloud services
may be free or offered on a pay-per-usage model [31][32][44].
Easy and inexpensive set-up because hardware, application and bandwidth costs are
covered by the provider.
No wasted resources because you pay for what you use [31][32][44].
Cloud computing is broken down into three segments: ―software‖, ―platform‖ and
―infrastructure‖. Each segment serves a different purpose and offers different products to
businesses and individuals around the world [31][32].
SaaS is the service based on the idea for renting software from a service provider rather than buy
it for you. The software is hosted on central network servers to make service available over the
intranet. It is currently the most popular type of cloud computing because of its high flexibility,
great services, enhanced scalability and less maintenance. Yahoo mail, Google docs, CRM
applications are all instances of SaaS. With a web-based CRM all that employees need to do is
register and login to the central system and import any existing customer data. SaaS is very good
in lowering the costs of business as it provides the business an access to applications at a cost
normally far cheaper than a buy licensed application fee which is possible due to its monthly fees
based revenue model. [31][32][6][42].
PaaS offers a development platform for developers. The end users write their own code and the
PaaS provider uploads that code and presents it on the web. My Application Instant Chat
Messenger is example of PaaS. PaaS provides services to develop, test, deploy, host and
maintain applications in the same integrated development environment. It also provides some
level of support for the creation of applications. Thus PaaS provides a quicker more cost
effective model for application development and delivery. The PaaS provider manages upgrades,
patches and other routine system maintenance. PaaS is based on a metering or subscription
model so users only pay for what they use. Users take what they need without worrying about the
complexity behind the scenes [6][31][32][42].
There are basically four types of PaaS solutions – social application platforms, raw compute
platforms, web application platforms and business application platform. Facebook is a type of
social application platform wherein third parties can write new applications that are made
available to end users. The CRM solutions provided by the companies are examples of business
application platform. Developers can upload and execute their applications on Amazon‘s
infrastructure which is an example of raw compute platform. While the Google provides APIs to
developers to build web applications which is an example of web application platform
[6][31][32][42].
Cloud computing brings benefits across three categories: economic, architectural, and strategic.
First, it helps reduce IT costs . Second, it improves the experience of end-users. Third, it helps
companies focus on their core competencies [7][33].
2.11.1 Utility Pricing
Cloud Computing is first a leading defined by its function-based pricing model. Users of the
platform consume computing and storage services on demand and pay for them as they go, using
an Operating Expenses budget, instead of paying for infrastructure resources up-front using
Capital Expenditures. [7][33].
Cloud Computing be different from more traditional methods of distributed computing in the
method it scales computing and storage resources up and down. Instead of tapping from a fixed
set of resources, users can add or remove capacity, almost immediately, and only pay for what
they actually use. While utility pricing let users pay as they go, elastic resource capacity let them
pay as they grow. [7][33].
2.11.3 Virtualized Resources
Cloud Computing would not be possible without virtualization, not for arcane technical reasons,
but for one obvious business requirement: the need for multi-tenancy. In order to benefit from
economies of scale, cloud computing is predicated upon the sharing of a common infrastructure
by multiple groups of users, often referred to as tenants. And multi-tenancy can only be achieved
through some kind of virtualization, either at the database level (Salesforce.com), application
server level (Google App Engine), kernel level (Red Hat), or CPU level (Amazon EC2) [7][33].
Unlike grid computing, which often pooled and aggregated distributed computing resources for
the purpose of handling very large computing jobs that could not fit or would take too long to
complete on a single server, Cloud Computing creates virtual slices of resources from clusters of
servers and storage devices, perfectly sized to fit the specific needs of multiple users. Such
virtual resources can be small or large, and scale elastically as user needs evolve over time. In
our previous example, virtualization means that the CRM application used by our sales team is
served by an infrastructure also used by many other tenants, all securely isolated from each other
[7][33].
Cloud Computing platforms differ from traditional corporate data-centers in one major way:
standardization. While your typical data-center will usually host every versions of every
operating systems and databases known to man, thereby creating massive management overhead,
most Cloud Computing platforms usually standardize on a single kind of CPU (x86-based
predominantly), a single hypervisor (VMware, Xen, etc.), a single operating system (some Linux
distribution usually), and a single database (MySQL is the dominant player there). This
standardization has an obvious business benefit: dramatic reduction of operating costs through
aggressive management automation. Following our previous example, the sales team‘s CRM
application is served by a single infrastructure managed by a team that is orders of magnitude
smaller than the aggregated team that would be required to manage the systems used by all
tenants if every one of them were to use their own infrastructure [7][33].
Cloud Computing is also a new form of outsourcing. Customers trying to focus the allocation of
scarce capital resources to their core businesses soon realize the benefits of moving IT
infrastructure off their balance sheet. Furthermore, as technology evolves and leading service
providers roll-out ever larger data-centers, the acquisition and operation of state-of-the-art data-
center facilities makes less and less sense from an economic standpoint for most organizations.
Cloud Computing is all about the transfer of ownership for such resources to a third-party that
specializes in their deployment. According to our previous example, the company using the
CRM application managed by some service provider does not own any infrastructure beyond a
few laptop computers. Everything else, from data-centers to servers and storage systems is
owned and operated by the service provider [7][33].
Cloud Computing is finally about allocating human resources to tasks that will directly impact
the business, rather than simply managing the infrastructure that supports it. As such, Cloud
Computing advocates a model according to which the IT infrastructure is not only owned by a
third-party, but managed by the third-party as well. Software upgrades, data backups, and the
countless other tasks required to manage mission-critical business applications on a day to day
basis become the responsibility of a third-party, according to well-defined Service Level
Agreements. Following our example, the Director of Sales discovered this morning the umbrella
adorned logo for the summer 2010 version of her favorite CRM application, without having
taken any part in the software upgrade process that happened over the weekend. In the cloud,
ignorance is bliss [7] [33].
2.12 The future of cloud computing
A solid majority of technology experts and stakeholders participating in the fourth Future of the
Internet survey expect that by 2020 most people will access software applications online and
share and access information through the use of remote server networks, rather than depending
primarily on tools and information housed on their individual, personal computers. They say that
cloud computing will become more dominant than the desktop in the next decade. In other
words, most users will perform most computing and communicating activities through
connections to servers operated by outside firms [34] [35].
Among the most popular cloud services now are social networking sites (the 500 million people
using Facebook are being social in the cloud), webmail services like Hotmail and Yahoo mail,
micro blogging and blogging services such as Twitter and Word Press, video-sharing sites like
YouTube, picture-sharing sites such as Flickr, document and applications sites like Google Docs,
social-bookmarking sites like Delicious, business sites like eBay, and ranking, rating and
commenting sites such as Yelp and Trip Advisor [34][35].
This does not mean, however, that most of these experts think the desktop computer will
disappear soon. The majority sees a hybrid life in the next decade, as some computing functions
move towards the cloud and others remain based on personal computers [34][35].
The highly engaged, diverse set of respondents to an online, opt-in survey included 895
technology stakeholders and critics. The study was fielded by the Pew Research Center‘s Internet
& American Life Project and Elon University‘s Imagining the Internet Center. Some 71%
agreed with the statement [34][35].
Most of those surveyed noted that cloud computing will continue to expand and come to
dominate information transactions because it offers many advantages, allowing users to have
easy, instant, and individualized access to tools and information they need wherever they are,
locatable from any networked device. Some experts noted that people in technology-rich
environments will have access to sophisticated-yet-affordable local networks that allow them to
―have the cloud in their homes [34][35].‖
Most of the experts noted that people want to be able to use many different devices to access data
and applications, and – in addition to the many mentions of smartphones driving the move to the
cloud – some referred to a future featuring many more different types of networked appliances.
A few mentioned the ―internet of things‖ – or a world in which everyday objects have their own
IP addresses and can be tied together in the same way that people are now tied together by the
internet. So, for instance, if you misplace your TV remote, you can find it because it is tagged
and locatable through the internet [34][35].
Some experts in this survey said that for many individuals the switch to mostly cloud-based work
has already occurred, especially through the use of browsers and social networking applications.
They point out that many people today are primarily using smartphones, laptops, and desktop
computers to network with remote servers and carry out tasks such as working in Google Docs,
following web-based RSS (really simple syndication) feeds, uploading photos to Flickr and
videos to YouTube, doing remote banking, buying, selling and rating items at Amazon.com,
visiting with friends on Facebook, updating their Twitter accounts and blogging on Word Press
[34][35].
Many of the people who agreed with the statement that cloud computing will expand as the
internet evolves said the desktop will not die out but it will be used in new, improved ways in
tandem with remote computing. Some survey participants said they expect that a more
sophisticated desktop-cloud hybrid will be people‘s primary interface with information. They
predicted the desktop and individual, private networks will be able to provide most of the same
conveniences as the cloud but with better functionality, overall efficiency, and speed. Some
noted that general-purpose in-home PC servers can do much of the work locally via a connection
to the cloud to tap into resources for computing-intensive tasks [34][35].
Among the defenses for a continuing domination of the desktop, many said that small, portable
devices have limited appeal as a user interface and they are less than ideal for doing work. They
also expressed concern about the security of information stored in the ―cloud‖ (on other
institutions‘ servers), the willingness of cloud operators to handle personal information in a
trustworthy way, and other problems related to control over data when it is stored in the cloud,
rather than on personally-controlled devices [34][35].
Some respondents observed that putting all or most of faith in remotely accessible tools and data
puts a lot of trust in the humans and devices controlling the clouds and exercising gatekeeping
functions over access to that data. They expressed concerns that cloud dominance by a small
number of large firms may constrict the internet‘s openness and its capacity to inspire innovation
– that people are giving up some degree of choice and control in exchange for streamlined
simplicity [34][35].
A number of people said cloud computing presents difficult security problems and further
exposes private information to governments, corporations, thieves, opportunists, and human and
machine error [34][35].
Survey participants noted that there are also quality of service and compatibility hurdles that
must be crossed successfully before cloud computing gains more adopters. Among the other
limiting factors the expert respondents mentioned were: the lack of broadband spectrum to
handle the load if everyone is using the cloud; the variability of cost and access in different parts
of the world and the difficulties that lie ahead before they can reach the ideal of affordable access
anywhere, anytime; and complex legal issues, including cross-border intellectual property and
privacy conflicts [34][35][8].
Figure 7: Cloud Computing survey [8]
Among the other observations made by those taking the survey were: large businesses are far
less likely to put most of their work ―in the cloud‖ anytime soon because of control and security
issues; most people are not able to discern the difference between accessing data and applications
on their desktop and in the cloud; low-income people in least-developed areas of the world are
most likely to use the cloud, accessing it through connection by phone [8].
Chapter 3:
Detail Analysis
Google App Engine lets you run your web applications on Google's infrastructure. App Engine
applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage
needs grow. With App Engine, there are no servers to maintain: You just upload your
application, and it's ready to serve your users [36].
We can serve our app from our own domain name (such as http://www.example.com/) using
Google Apps. Or, we can serve our app using a free name on the appspot.com domain. You can
share your application with the world, or limit access to members of your organization
[36][40][41].
Google App Engine makes it easy to build an application that runs reliably, even under heavy
load and with large amounts of data. App Engine includes the following features [36][40][41].
dynamic web serving, with full support for common web technologies
persistent storage with queries, sorting and transactions
automatic scaling and load balancing
APIs for authenticating users and sending email using Google Accounts
a fully featured local development environment that simulates Google App Engine on
your computer
task queues for performing work outside of the scope of a web request
scheduled tasks for triggering events at specified times and regular intervals
Your application can run in one of two runtime environments: the Java environment, and the
Python environment. Each environment provides standard protocols and common technologies
for web application development [36][40][41].
Applications run in a secure environment that provides limited access to the underlying operating
system. These limitations allow App Engine to distribute web requests for the application across
multiple servers, and start and stop servers to meet traffic demands. The sandbox isolates your
application in its own secure, reliable environment that is independent of the hardware, operating
system and physical location of the web server [36][40][41].
An application can only access other computers on the Internet through the provided
URL fetch and email services. Other computers can only connect to the application by
making HTTP (or HTTPS) requests on the standard ports.
An application cannot write to the file system. An app can read files, but only files
uploaded with the application code. The app must use the App Engine datastore,
memcache or other services for all data that persists between requests.
Application code only runs in response to a web request, a queued task, or a scheduled
task, and must return response data within 30 seconds in any case. A request handler
cannot spawn a sub-process or execute code after the response has been sent
[36][40][41].
We can develop our application for the Java runtime environment using common Java web
development tools and API standards. Our app interacts with the environment using the Java
Servlet standard, and can use common web application technologies such as JavaServer Pages
(JSPs) [36][40][41].
The Java runtime environment uses Java 6. The App Engine Java SDK supports developing apps
using either Java 5 or 6 [36][40][41].
The environment includes the Java SE Runtime Environment (JRE) 6 platform and libraries. The
restrictions of the sandbox environment are implemented in the JVM. An app can use any JVM
bytecode or library feature, as long as it does not exceed the sandbox restrictions. For instance,
bytecode that attempts to open a socket or write to a file will throw a runtime exception
[36][40][41].
Your app accesses most App Engine services using Java standard APIs. For the App Engine
datastore, the Java SDK includes implementations of the Java Data Objects (JDO) and Java
Persistence API (JPA) interfaces. Your app can use the JavaMail API to send email messages
with the App Engine Mail service. The java.net HTTP APIs access the App Engine URL fetch
service. App Engine also includes low-level APIs for its services to implement additional
adapters, or to use directly from the application. See the documentation for the datastore,
memcache, URL fetch, mail, images and Google Accounts APIs [36][40][41].
Typically, Java developers use the Java programming language and APIs to implement web
applications for the JVM. With the use of JVM-compatible compilers or interpreters, you can
also use other languages to develop web applications, such as JavaScript, Ruby, or Scala
[36][40][41].
App Engine provides a powerful distributed data storage service that features a query engine and
transactions. Just as the distributed web server grows with your traffic, the distributed datastore
grows with your data [36][40][41].
The App Engine datastore is not like a traditional relational database. Data objects, or "entities,"
have a kind and a set of properties. Queries can retrieve entities of a given kind filtered and
sorted by the values of the properties. Property values can be of any of the supported property
value types [36][40][41].
Datastore entities are "schemaless." The structure of data entities is provided by and enforced by
your application code. The Java JDO/JPA interfaces and the Python datastore interface include
features for applying and enforcing structure within your app. Your app can also access the
datastore directly to apply as much or as little structure as it needs [36][40][41].
The datastore is strongly consistent and uses optimistic concurrency control. An update of a
entity occurs in a transaction that is retried a fixed number of times if other processes are trying
to update the same entity simultaneously. Your application can execute multiple datastore
operations in a single transaction which either all succeed or all fail, ensuring the integrity of
your data [36][40][41].
The datastore implements transactions across its distributed network using "entity groups." A
transaction manipulates entities within a single group. Entities of the same group are stored
together for efficient execution of transactions. Your application can assign entities to groups
when the entities are created [36][40][41].
App Engine supports integrating an app with Google Accounts for user authentication. Your
application can allow a user to sign in with a Google account, and access the email address and
displayable name associated with the account. Using Google Accounts lets the user start using
your application faster, because the user may not need to create a new account. It also saves you
the effort of implementing a user account system just for your application [36][41][40].
If your application is running under Google Apps, it can use the same features with members of
your organization and Google Apps accounts [36][40][41].
The Users API can also tell the application whether the current user is a registered administrator
for the application. This makes it easy to implement admin-only areas of your site [36][40][41].
The App Engine software development kits (SDKs) for Java and Python each include a web
server application that emulates all of the App Engine services on your local computer. Each
SDK includes all of the APIs and libraries available on App Engine. The web server also
simulates the secure sandbox environment, including checks for attempts to access system
resources disallowed in the App Engine runtime environment [36][40][41].
Each SDK also includes a tool to upload your application to App Engine. Once you have created
your application's code, static files and configuration files, you can run the tool to upload the
data. The tool prompts you for your Google account email address and password [36][40][41].
When you build a new major release of an application that is already running on App Engine,
you can upload the new release as a new version. The old version will continue to serve users
until you switch to the new version. You can test the new version on App Engine while the old
version is still running [36][40][41].
The Java SDK runs on any platform with Java 5 or Java 6. The SDK is available as a Zip file. If
you use the Eclipse development environment, you can use the Google Plugin for Eclipse to
create, test and upload App Engine applications. The SDK also includes command-line tools for
running the development server and uploading your app [36][40][41].
The Python SDK is implemented in pure Python, and runs on any platform with Python 2.5,
including Windows, Mac OS X and Linux. The SDK is available as a Zip file, and installers are
available for Windows and Mac OS X [36][40][41].
The Google App Engine Administration Console gives you complete access to the public version
of your application. Access the Console by visiting the following link in your web browser:
[36][40][41].
https://appengine.google.com
Sign in with your Google account, or create one with an email address and password.
If you are using App Engine with your Google Apps account, you can sign in to App Engine for
your domain using a URL similar to the following, where your-domain.com is your Google Apps
domain:
https://appengine.google.com/a/your-domain.com
We can use the Administration Console to:
invite other people to be developers for your application, so they can access the Console
and upload new versions of the code
test new versions of your application, and switch the version that your users see
[36][40][41].
Instant messaging (IM) is a form of real-time direct text-based communication between two or
more people using personal computers or other devices, along with shared software clients. The
user's text is conveyed over a network, such as the Internet. More advanced instant messaging
software clients also allow enhanced modes of communication, such as live voice or video
calling [37][38].
3.2.1 Overview
Instant Messenger system using Java programing language are poised to become a major part of
both consumer and enterprises networking , and will play a core communication role similar to
email.
Figure 9: Instant Messaging Architecture With Portal-based Secure Mode or Archiving [11]
Instant Messenger addresses are an extension of the well-established email address almost
everyone has today. However, our email address can be used only receive email. In contrast,
Instant Messenger ties much message type together using a single Instant Messenger address. In
an Instant Messenger we can receive a message, chat, or group chat with a person using one
Instant Messenger address [39].
Chat and group chat are conversational, and required us to be online at the same time as the
person you are chatting with. To make the online rendezvous simple, our Instant Messenger
presence will constantly inform other users when we are online and available for chatting. Instant
Messenger presence makes communication through Instant Messenger system to striking up
conversation around the water cooler. We can easily see who is available to talk, and casually
start conversation [39].
From its beginnings as a simple buddy-to-buddy chatting service, instant messaging has
blossomed to become a staple mode of communication for tens of millions of Internet users.
Popular systems such as America Online‘s Instant Messenger, Microsoft‘s MSN Messenger,
ICQ, and Internet Relay Chat (IRC) have changed the way we communicate with friends,
acquaintances, and business colleagues. Once limited to desktops, popular instant messaging
systems are finding their way onto handheld devices and cell phones, allowing users to chat from
virtually anywhere. According to IDC, the number of corporate instant messaging users is
expected to grow to over 200 million by 2005 with an additional 300 million home computer
users having IM systems by that time [12].
Most IM systems presently in use were designed with scalability rather than security in mind.
Virtually all freeware IM programs lack encryption capabilities and most have features that
bypass traditional corporate firewalls, making it difficult for administrators to control instant
messaging usage inside an organization. Many of these systems have insecure password
management and are vulnerable to account spoofing and denial-of-service (DoS) attacks. Finally,
IM systems meet all the criteria required to make them an ideal platform for rapidly spreading
computer worms and blended threats they are ubiquitous; they provide a communications
infrastructure; they have integrated directories(buddy lists) that can be used to locate new targets;
and they can, in many cases, be controlled by easily written scripts. Even worse, no firewall on
the market today can scan instant messaging transmissions for viruses [12].
3.3 What I want to develop?
In my project I want to develop a cloud application. My application will deployed on cloud and
available on World Wide Web without any virtual connection with server. I will build a web
based Instant chat messenger. This chat messenger will available on World Wide Web.
Today, forward-thinking business leaders are using the Cloud within their enterprise data centers
to take benefit of the best practices that cloud computing has established, namely scalability,
agility, automation, and resource sharing. By using a cloud-enabled application platform,
companies can choose a hybrid approach to cloud computing that employs an organization's
existing infrastructure to launch new cloud-enabled applications. This hybrid approach allows IT
departments to focus on innovation for the business, reducing both capital and operational costs
and automating the management of complex technologies.
Because cloud computing is related to a number of other technologies, it is best defined by the
presence of a number of characteristics. These represent ideals that people want for the
applications that run on the cloud:
Incremental Scalability:
Cloud environments allow users to access additional compute resources on-demand in
response to increased application loads.
Agility:
As a shared resource, the cloud provides flexible, automated management to distribute
the computing resources among the cloud's users.
Reliability and Fault-Tolerance:
Cloud environments take advantage of the built-in redundancy of the large numbers of
servers that make them up by enabling high levels of availability and reliability for
applications that can take advantage of this.
Service-oriented:
The cloud is a natural home for service-oriented applications, which need a way to
easily scale as services get incorporated into other applications.
Utility-based:
Users only pay for the services they use, either by subscription or transaction-based
models.
Shared :
By enabling IT resources to be consolidated, multiple users share a common
infrastructure, allowing costs to be more effectively managed without sacrificing the
security of each user's data.
SLA-driven:
Clouds are managed dynamically based on service-level agreements that define
policies like delivery parameters, costs, and other factors.
APIs :
Because clouds virtualize resources as a service they must have an application
programming interface (API) [13].
3.5 Comparing java Applet based application and web based java servlet
application
First I have built normal java application for instant chat messenger in this application the server
and client will run in different side and many clients can connect with server and talk with each
other. This application is normal server client application. We have to run server before use this
application.
3. Cannot deployed on Google App Engine 3. Can Deploy on Google App Engine.
Introduction of the Java runtime for App Engine and the Secure Data Connector, Google has
provided a comprehensive solution for developing rich internet applications which can extend
the business value of Google Apps. This white paper details the components involved and
provides a how-to for integrating a Java for App Engine application with Google Apps. Cloud
Sherpas has developed a sample dashboard application that demonstrates how to integrate
Google Apps with a custom application built on Google App Engine [14].
Google App Engine is a Platform-as-a-Service (PaaS) that allows you to run your own custom-
developed web applications on Google‘s optimized infrastructure. With a complete development
stack, App Engine makes it possible to migrate even more of your legacy infrastructure to
Google‘s cloud [15][14].
With Java language support, Google App Engine offers an open, scalable platform for
organizations to integrate Google Apps with other applications, build custom workflow
applications, and migrate legacy workloads to the cloud [15].
4.1 Design
2
End User Browse Servlet
1 r
DATABA
3 SE
7 6 4
JSP
5
Step 5 After matching all information from data base if the end user information is true then
users will Be authenticating.
In my Instant chat messenger users have to register first on http://chat-messenger.appspot.com .
For register on chat messenger End user have to click on Registration button as shown in above
figure. The user has entered his details.
After register on chat messenger user has to enter his username and password for login in Instant
chat messenger
Figure 16: Chat messenger login after register
After login in Instant Chat Messenger user can chat with other online users.
In my Instant Chat Messenger Application I used Servlet and JSP files for build my messenger.
When users log in on my messenger through Browser the browser send request to servlet the
servlet send this request to JSP and Authenticate with data base if the detail is true the user are
authenticate and end users will logged in in my messenger.
If a Login credentials is true and its match with data base user will authenticate and logged in in
Message servlet. The loginServlet.java file is using for getting request from browser user press
any button.
The message servlet get message from data base and send to users and it‘s appear on browser.
For example if user sends any post on Public chat window it will appear on public chat board for
everyone.
I have created a sessionlisner.java this file is use for if user in no longer exists and ideal for last
60 min it will be logged out automatically.
XMPPReceiverServlet.java file I created for connecting my chat messenger with Google talk.
When user connected with my messenger then user can chat with Goggle talk user if he/she is
online on Google talk messenger with this servlet user can send and receive messenger to Google
talk messenger.
Ir.amit.chatmessenger.jdomodel : - in this package I have created four java file for connecting
my chat messenger with Google App engine data base. The Chatuser.java file is use for saving
all user information in data base provided by Google app engine. The CommonMesage.java file
is use for saving all public chat history in data base provided by Google app engine. The
GPrivateMessege.java file I use for saving all Google talk chat history in data
base.PrivateMessage.java file I use for saving private chat history.
4.3 How I deployed my Application
There are two ways we can build our applications, either using Eclipse plugin or using the
standalone Google App Engine SDK. In my application I use Eclipse Google app plugin.
We have to click the first button icon to create new Google web application. We will see
following dialog box:
As I must have already noticed, the Google app engine follows standard WAR folder structure.
Whatever we add under this ‗war‘ folder gets packaged and deployed on to the App Engine. The
advantage of this is that we can add whatever elements (CSS, Images, JSPs, external Jars etc) we
want our application to consists of, inside this folder.
Then I run this application those I have created, for that I‘ll need an application server on our
local machine. The good news is that, the App engine comes with a built in development server
that mimics the production environment. Right click on the project and select ―Run as -> Web
application‖. I‘ll see a message saying ―The server is running at http://localhost:8080/‖. Then I
copy this link and open this link in web browser in my computer.
Then after my application up and running I deploy this application on to Google App Engine.
Click the deploy button from the Google plug-in toolbar. We will see a dialog box with
project name, email and password fields. I entered my email address and password in this field.
Before click on deployed I have add application ID. For add the application ID I have to click on
app Engine project setting.
Now that I have successfully created an application ID on Google App Engine, after Created
application ID I deployed my application. Then In eclipse I specify the newly created ID in
Application ID field. Specify ‗1‘ in Version field. Google App Engine allows us to create
multiple versions of our application and running them simultaneously, but only one will be
active if we decide to make changes to our application and deploy it as different version in
future, I have just specify different version number in this field.
Now, click ―Deploy‖ button to deploy your application. The SDK compiles your application,
packages everything from the war folder and deploys on to the Google App Engine. If everything
goes well, you‘ll see a message ―Deployment completed successfully‖ in eclipse console.
Figure 24: Deployed Application on Google App
Testing
The purpose of testing the Application is verify that the Application work correctly and see if the
performance is suitable for real life application. Purpose of Software testing can also be stated as
the process of validating and verifying that an application [17].
Works as expected
The Functional testing refers to tests that verify a specific action or function of the code. These
are usually found in the code requirements documentation. Functional tests tend to answer the
question of "can the user do this" or "does this particular feature work" [17].
5.1.1 Testing Using Selenium IDE
I have used Selenium IDE testing tool for test functional testing of my code.
I have compiled above code in JCreator Compiler, and above code is successfully compile.
That‘s prove my instant chat application function is working properly and my testing is passed.
Figure 27: Selenium IDE Testing result Script compiled
The Bug Testing has been done with the help of Firebug plug-in.
5.2 Performance
I have tested preference of my Instant chat application on Google app engine Servers with. For
testing the performance I have logged with many users in my Instant chat application. So I can
test performance. For testing the performance of my application on Google App Engine I have
used below given testing applications.
WAPT 7.0
WSOP 2.0
Overall Performance
Average Bandwidth
6.1 Conclusion
Based on my experience with deployed application on Google App Engine (Cloud Computing), I
have discussed several practical issues in the implementation of a cloud computing platform.
Google App engine offer a complete development platform for host web applications. It provides
scalable, persistent data storage service, datastore which features a query engine and transaction
capabilities. App Engine is providing Dashboard to scale data storage space and limits.
When I working on my project I have learn lots of thing about Cloud Computing. After
deploying working application on Google App Engine (Cloude Computing) I don‘t need to take
any headache for my application. Everything is look after bye Google App Engine.
When I study about Cloud Computing I have seen many companies are migrating traditional
computing to Cloud computing. But before migrating application we have to make assessment.
The first step in any application and data migration is to assess the current situation and evaluate
which applications should be moved to the new platform [18].
When I build my project I have found on one hand Google App Engine provides a many helpful
features and services to help for build better applications. On the other hand we do need to
compromise by working around certain issues because the Google App Engine doesn‘t entirely
behave as a regular application server. Also the JPA implementation in Google App Engine is
very limited. But, with the workarounds in place we should be able to get rid of most of the
frustrations we will encounter [19].
There are various APIs and technologies that are not supported by App Engine at present for
various reasons. These include:
1. Enterprise Java Beans (EJB)
2. JAX-RPC
3. JAX-WS
4. Java Database Connectivity (JDBC) **
5. Java EE™ Connector Architecture (JCA)
6. Java Management Extensions (JMX)
7. Java Message Service (JMS)
8. Java Naming and Directory Interface (JNDI)
9. Remote Method Invocation (RMI)
After worked on my project and research on Cloud Computing I reached on conclusion. There is
many positive points to migrate data center or application to Cloud Computing. One is reducing
the hardware cost and maintenance cost. Two is reduced cost of energy for power up servers and
cooling the server room. There reduce the IT budget for IT infrastructure. Four Cloud
computing lets you access all your applications and documents from anywhere in the world. Five
Improved performance [20].
At the Current stage my application (Instant Chat messenger) cannot send and receive files. In
the future I will work on my application for adding this feature. So end user can send and receive
files through messenger. I am thinking to add Video chat functionality as well so user can make a
video call and talk with each other. I am thinking to add send and receive add user requests so
user can add each other through request and add in his/her buddy list.
In future I am thinking to add cluster functionality for my application so in the down time or
upgrade time my application will be available online and I can do any maintenance or upgrade
work on my application.
Bibliography:
[1] Energy-Efficient Management of Data Center Resources for Cloud Computing: A Vision,
Architectural Elements, and Open Challenges http://www.buyya.com /papers/Green Clou
d2010.pdf access on 09/08.2010
[2] Benefits of Web Based Software (Cloud Computing/Software As A Service) over old
fashion -ned style Software. http://www.osprey.tm/cloud-computing.htm access on
03/08/2010
[3] The Silver Lining of Cloud Computing, Author: Mahesh H. Dodani, IBM, U.S.A. http://
ww w.jot.fm/issues/issue2009_03/column3 access on 14/08/2010
[4] Introduction to Cloud Computing, Author : Pinal Dave, Published: Apr 2009
http://dotnetslackers.com/articles/sql/Introduction-to-Cloud-Computing.aspx last accessed
on 21/08/2010
[5] Google Apps Engine - A Route To Acquisition?, Posted by Finbarr McCarthy in Cloud
Computing, http://finbarrmccarthy.com/category/cloud-computing/ access on 15/08/2010
[6] Cloud Computing – Demystifying SaaS, PaaS and IaaS, Posted by May 3rd, 2010 By
Lokesh. http://www.cloudtweaks.com/2010/05/cloud-computing-demystifying-saas-
paas-and-ia as / access on 09/08/2010
[7] The Many Benefits of Cloud Computing, Posted by Ismael Chang Ghalimi
http://www.cloudtweaks .com/2010/06/the-many-benefits-of-cloud-computing/ access on
09/08/2010
[8] The future of cloud computing, http://pewinternet.org/Reports/2010/The-future-of-cloud-
computing/Main-Findings/Main-findings.aspx?r=1 access on 09/08/2010
[9] Instant messaging, http://en.wikipedia.org/wiki/Instant_messaging access on 4/08/2010
[10] Introduction to Instant Messaging Software, Posted by Oracle,
http://docs.sun.com/app/docs/doc/819-4439/fvjxv?a=view access on 5/08/2010
[11] Instant Messaging Portal-based or Archiving Architecture, Posted by Oracle,
http://docs.sun.com/app/docs/doc/819-4439/acrph?a=view access on 05/08/2010
[12] Securing Instant Messaging, Posted by Symantec Enterprise Security, http://www.syman
tec.com /avcenter/reference/secure.instant.messaging.pdf access on 09/08/201
[13] Why Cloud Computing?, Posted by Appistry, Inc. http://www.appistry.com/cloud-info-
center access on 08/09/2010
[14] Extending Google Apps with Java for App Engine, posted by Cloud Sherpas
http://www.cloudsherpas.com/whitepapers/Extending_Google_Apps-CS_whitepaper-
090407.pdf access on 08/09/2010
[15] Extending Google Apps with Java for App Engine, Posted by Cloud Sherpas
http://www.cloudsherpas.com/whitepapers/gae.html access on 09/08/2010
[16] First Java Application on Google App Engine , Published 01 October 2009 16:00 by
Mahesh Patil http://consultingblogs.emc.com/maheshpatil/archive/2009/10/01/first-java-
application-on-google-app-engine.aspx access on 10/08/2010
[17] Software testing http://en.wikipedia.org/wiki/Software_testing#Unit_testing access on
10/08/2010
[18] Migrating Lotus Notes Applications to Google Apps, Posted by Google
http://static.googleusercontent.com/external_content/untrusted_dlcp/www.google.com/en//
apps/intl/en/business/pdf/migrating_strategies.pdf access on 10/08/2010
[19] FREE JAVA HOSTING WITH THE GOOGLE APP ENGINE, Posted on February 4th,
2010 by Tom van Zummeren http://blog.jteam.nl/2010/02/04/free-java-hosting-with-the-
google-app-engine/ access on 11/08/2010
[20] Google App Engine for Java, posted by Google group http://groups.google.com /group
/google-appengine-java/web/will-it-play-in-app-engine?pli=1 access on 11/08/2010
[21] Windows Azure and Cloud Computing Posts for 7/1/2010+, Posted by OakLeaf Systems
http://oakleafblog.blogspot.com/2010/07/windows-azure-and-cloud-computing-posts.html
access on 11/08/2010
[22] The Cloud Leadership Forum to bring together the cloud industry‘s most influential
vendors, senior IT executives and IDC analysts, Posted by Wendie Larkin Topaz Partners
http://www.oncloudcomputing.com/en/tag/citrix/ access on 12/08/2010
[23] http://blogs. gartner.com/david_cearley/2008/10/14/gartner%E2%80%99s-top-10-b
strategic-technologies-for-2009/ access on 12/08/2010
[24] Introduction to Cloud Computing, Published: 10 Apr 2009 By: Pinal Dave
http://dotnetslackers.com/articles/sql/Introduction-to-Cloud-Computing.aspx access on
12/08/2010
[25] CLOUD COMPUTING: AN OVERVIEW, Posted by SRINIVASA RAO, PROFESSOR
IN COMPUTER SCIENCE PVP SIDDHRTHA INSTITUTE OF TECHNOLOGY
VIJAYAWADA, INDIA\ http://www.jatit.org/volumes/research-
papers/Vol9No1/10Vol9No1.pdf access on 14/08/2010
[26] Cloud Computing Use Cases Whitepaper, produced by the Cloud Computing Use Case
Discussion Group http://www.scribd.com/doc/17929394/Cloud-Computing-Use-Cases-
Whitep aper, access on 14/08/2010.
[27] Let‘s learn Cloud Computing in very simple language , postred by Posted by
abhinavgoyal01 in Cloud Computing. Trackback http://abhinavgoyal01.wordpress.com
/2009/06/29/lets-learn-cloud-computing-in-very-simple-language/ access on 15/08/2010
[28] Cloud Computing Investing Ideas, author: Alex Filonov , USSR and from the Tambov
Institute of Chemical Engineering http://www.cloudtweaks.com/2010/03/cloud-
computing-investing-ideas/ access on 15/08/2010
[29] Cloud Computing Today and Tomorrow, Posted by Alex Filonov at 10:47 PM
http://muddlinginvestor.blogspot.com/2010/03/cloud-computing-today-and-tomorrow.html
access on 16/08/2010
[30] Cloud Computing News, Posted by cloud tweaks in Cloud Computing 3 comments
http://www.cloudtweaks.com/tag/server-farm/ access on 15/08/2010
[31] Cloud Computing Investing Ideas, posted by Alex Filonov, http://seekingalpha.com
/article/191411-cloud-computing-investing-ideas, access on 16/08/2010
[32] Software testing, http://en.wikipedia.org/wiki/Software_testing access on 16/08/2010
[33] Benefits of Cloud Computing, By Ismael Chang Ghalimi, CEO, Intalio — May 2010
http://www.intalio.com/benefits-of-cloud-computing access on 17/08/2010 access on
17/08/2010
[34] Work with Cloud Computing Environment http://www.xbitlabs.com/news/other/display
/20100613113612_TheMajorityWill Work WithCloudComputingEnvironmentAnalysts.ht
ml access on 18/08/2010.
[35] Future of the internet, posted by : Gerry Martin http://pewinternet.org /~/media //Files/
/2010/PIP_Future_of_the Internet cloud_computing.pdf access on 18/09/2010
[36] What Is Google App Engine? , Posted by : Google code http://code.google.com /appen g
ine /docs/whatisgoogleappengine.html access on 19/08/2010
[37] Online chat http://en.wikipedia.org/wiki/Online_chat access on 20/08/2010
[38] Instant messaging ,Posted by Facebook http://www.facebook.com/pages/Instant-
messaging/103773109661618 access on 20/08/2010
[39] Instant Messaging in Java, The Jabber Protocols, by Iain Shigeoka Instant Messaging In
JAVA, Published in 2002.
[40] Ware Seeker, Google App Engine SDK 1.3.2 description, http://wareseeke r.com/Sof tw a
re-Development/google-app-engine-sdk-1.3.2 .zip /3749055ff access on 20/08/2010
[41] Google App Engine SDK 1.2.5, posted by Google, September 4, 2009, 08:25 GMT
http://www.soft82.com/version/download/windows/google-app-engine-sdk-1-2-5/ Access
on 20/08/2010
[42] Cloud Services Will Dominate By 2020, Posted by Colleen Miller, on June 11th, 2010,
http://www.datacenterknowledge.com/archives/2010/06/11/pew-cloud-services-will-
dominate-by-2020/ access on 21/08/2010
[43] What is a private cloud?, Posted by Techterm , on 11 Jun 2009,http://search cloud com
puting.techtarget.com/sDefinition/0,,sid201_gci1333074,00.html
[44] What is a public cloud?, Posted by Techterms ,on 15 May 2009, http://searchcloudcom
puting.techtarget.com/sDefinition/0,,sid201_gci1356516,00.html access on 23/08/2010