Vous êtes sur la page 1sur 72

Instant Chat Messenger Deployed on

Cloud Computing

By

Amit Kumar Sharma

Master‘s Thesis

Submitted to the Griffith College Dublin

Department of Computer Science

August 2010

Research Supervisor: Dr. Kevin Casey


Disclaimer

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.

Signed: ______________ Dated: ____________


Abstract

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

1.1 Motivation ...................................................................................................................... 10

1.2 Aim ................................................................................................................................. 11

1.3 Existing Problems in traditional Computing .................................................................. 12

Chapter 2: ...................................................................................................................................... 13

Introduction to Cloud Computing ................................................................................................. 13

2.1 Key Characteristics ............................................................................................................. 14

2.2 Cloud Computing Architecture ........................................................................................... 14

2.3 Different forms of Cloud Computing .................................................................................. 16

2.4 Cloud Computing Concerns ................................................................................................ 16

2.5 Relational Database and Cloud Computing ........................................................................ 17

2.6 Idea Behind Cloud Computing ............................................................................................ 17

2.7.1 Private Cloud .................................................................................................................... 19

2.7.2 Public Cloud ..................................................................................................................... 20

2.8 Software as a Service (SaaS) ............................................................................................... 21

2.9 Platform as a Service (PaaS) ............................................................................................... 21

2.10 Infrastructure as a Service (IaaS) ...................................................................................... 22

2.11. The Many Benefits of Cloud Computing ......................................................................... 22

2.11.1 Utility Pricing ................................................................................................................. 23

2.11.2 Elastic Resource Capacity .............................................................................................. 23

2.11.3 Virtualized Resources .................................................................................................... 24


2.11.4 Management Automation ............................................................................................... 24

2.11.5 Third-party Ownership ................................................................................................... 25

2.11.6 Managed Operations ...................................................................................................... 25

2.12 The future of cloud computing .......................................................................................... 26

Chapter 3: ...................................................................................................................................... 30

Detail Analysis .............................................................................................................................. 30

3.1 Google App Engine ............................................................................................................. 30

3.1.1 What Is Google App Engine? ....................................................................................... 30

3.1.2 The Application Environment ...................................................................................... 30

3.1.3 The Sandbox ................................................................................................................. 31

3.1.3 The Java Runtime Environment ................................................................................... 32

3.1.5 The Datastore ................................................................................................................ 33

3.1.6 Google Accounts .......................................................................................................... 34

3.1.7 Development Workflow ............................................................................................... 34

3.1.8 The Administration Console ......................................................................................... 35

3.2 Instant Chat Messenger ....................................................................................................... 36

3.2.1 Overview ...................................................................................................................... 36

3.2.2 Background on Instant Messenger ............................................................................... 37

3.3 What I want to develop?...................................................................................................... 40

3.4 Why Cloud Application? ..................................................................................................... 40

3.5 Comparing java Applet based application and web based java servlet application ............ 42

3.5.1 Java Applet Chat Messenger Client Side ..................................................................... 43

3.5.2 Java Servlet Chat Messenger on web ........................................................................... 43

3.6 Google provide help to move application to Cloud Computing ......................................... 44

Chapter 4: ...................................................................................................................................... 45
Design and Implementation .......................................................................................................... 45

4.1 Design.................................................................................................................................. 45

4.2 Application Implementation................................................................................................ 48

4.3 How I deployed my Application ......................................................................................... 49

Chapter 5: ...................................................................................................................................... 55

Testing........................................................................................................................................... 55

5.1 Functional Testing ............................................................................................................... 55

5.1.1 Testing Using Selenium IDE ........................................................................................ 56

5.1.2 Testing Using Firebug Tool .......................................................................................... 58

5.2 Performance ........................................................................................................................ 60

5.3 Performance from Google App Engine Dashboard ......................................................... 62

Chapter 6 : ..................................................................................................................................... 66

Conclusion and Future Work ........................................................................................................ 66

6.1 Conclusion........................................................................................................................... 66

6.2 Future Work ........................................................................................................................ 68

Bibliography: ................................................................................................................................ 69
Table of Figures
Figure 1: Cloud Computing Concept ............................................................................................ 13

Figure 2: Cloud Computing Architectural Model [3] ................................................................... 15

Figure 3: Idea for Cloud Computing [5] ..................................................................................... 18

Figure 4: Cloud Computing Services ............................................................................................ 19

Figure 5: Cloud Computing Services ............................................................................................ 20

Figure 6: Cloud Computing Resource [7] [33] .......................................................................... 23

Figure 7: Cloud Computing survey............................................................................................... 29

Figure 8: Instant Messaging Software Architecture ..................................................................... 37

Figure 9: Instant Messaging Architecture With Portal-based Secure Mode or Archiving .......... 38

Figure 10: Java Applet Messenger ................................................................................................ 43

Figure 11: Java Servlet Messenger ............................................................................................... 43

Figure 12: Google App Engine Dynamically Scalable Platform Stack ........................................ 44

Figure 13: Project Design ............................................................................................................. 45

Figure 14: Chat Messenger login page ......................................................................................... 46

Figure 15: Chat Messenger Resister page ..................................................................................... 46

Figure 16: Chat messenger login after register ............................................................................. 47

Figure 17: Chat messenger page after login ................................................................................. 47

Figure 18: Create new web application ........................................................................................ 49

Figure 19: Application Package .................................................................................................... 50

Figure 20: Deploye Project to Google App Engine ...................................................................... 51

Figure 21: Google App Engine Setting for Application ID .......................................................... 51

Figure 22: Create new Application on Google App Engine ......................................................... 52

Figure 23: Create new Application on Google App Engine ......................................................... 52


Figure 23: Propertis for Instant Chat Messneger .......................................................................... 53

Figure 24: Deployed Application on Google App ....................................................................... 54

Figure 25: Selenium IDE Testing result table............................................................................... 56

Figure 26: Selenium IDE Testing result Script ............................................................................. 57

Figure 27: Selenium IDE Testing result Script compiled ............................................................. 58

Figure 28: Log in page Firebug testing result ............................................................................... 58

Figure 29: Chat Window Firebug testing result ............................................................................ 59

Figure 29: Overall performance .................................................................................................... 60

Figure 30: Error performance ....................................................................................................... 61

Figure 31: Average Bandwidth performance .............................................................................. 61

Figure 32: Average Response Time performance ....................................................................... 62

Figure 33: User request per Second ............................................................................................. 62

Figure 34: Millisecond / Request .................................................................................................. 63

Figure 35: Errors / Second ............................................................................................................ 63

Figure 36: Bytes Received / Second ............................................................................................. 63

Figure 37: Bytes Send / Second .................................................................................................... 64

Figure 38: CPU Seconds used / Second ........................................................................................ 64

Figure 38: Average Load on Google App Engine ........................................................................ 65


Chapter 1:

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

There are many problems existing in traditional computing.

Hardware Cost:

We have to buy server according to Application and data base.

Software Cost:

In Traditional Computing we have to spend lots of budget on software cost and licensing cost.

Speed/cost of implementation:

In Traditional Computing Hardware installation costs Is huge.

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.

Disaster Recovery rate:

Lengthy, downtime could be in excess of a week if the server needs replacing.

Potential for Loss of Data:

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:

Introduction to Cloud Computing


Cloud Computing it‘s simply means Internet Computing. The Internet is usually visualized as
Clouds, hence the term ―Cloud Computing‖ for computation done through the Internet. With
Cloud Computing users can access database resources via the Internet from anywhere, for as
long as they need, without worrying about any maintenance or management of actual resources.
Besides, databases in cloud are very dynamic and scalable [24] [25].

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].

Figure 1: Cloud Computing Concept


2.1 Key Characteristics

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].

2.2 Cloud Computing Architecture

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].

2.4 Cloud Computing Concerns

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].

2.5 Relational Database and Cloud Computing

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].

Figure 3: Idea for Cloud Computing [5]

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].

2.7.1 Private Cloud

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].

Figure 4: Cloud Computing Services


2.7.2 Public Cloud

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].

The main benefits of using a public cloud service are:

 Easy and inexpensive set-up because hardware, application and bandwidth costs are
covered by the provider.

 Scalability to meet needs.

 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].

Figure 5: Cloud Computing Services


2.8 Software as a Service (SaaS)

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].

2.9 Platform as a Service (PaaS)

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].

2.10 Infrastructure as a Service (IaaS)

Infrastructure as a Service (IaaS) is delivery of the computing infrastructure as a fully outsourced


service. Some of the companies that provide infrastructure services are Google, IBM etc.
Managed hosting and development environments are the services included in IaaS. The user can
buy the infrastructure according to the requirements at any particular point of time instead of
buying the infrastructure that might not be used for months. IaaS operates on a Pay as you go
model guaranteeing that the users pay for only what they are use. IaaS users enjoy access to
enterprise grade IT Infrastructure and resources that might be very costly if purchased
completely. Thus dynamic scaling, usage based pricing, reduced costs and access to superior IT
resources are some of the benefits of IaaS. IaaS is also sometimes referred to as Hardware as a
Service (HaaS). An Infrastructure as a Service offering also provides maximum flexibility
because just about anything that can be virtualized can be run on these platforms. This is perhaps
the biggest benefit of an IaaS environment. For a startup or small business, one of the most
difficult things to do is keep capital expenditures under control. By moving your infrastructure to
the cloud, you have the ability to scale as if you owned your own hardware and data center
[6][31][32][42].

2.11. The Many Benefits of Cloud Computing

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].

Figure 6: Cloud Computing Resource [7] [33]

2.11.2 Elastic Resource Capacity

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].

2.11.4 Management Automation

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].

2.11.5 Third-Party Ownership

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].

2.11.6 Managed Operations

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

3.1 Google App Engine

3.1.1 What Is Google App Engine?

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].

3.1.2 The Application Environment

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].

3.1.3 The Sandbox

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].

3.1.3.1 Examples of the limitations of the secure sandbox environment include:

 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].

3.1.3 The Java Runtime Environment

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].

3.1.5 The Datastore

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].

3.1.6 Google Accounts

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].

3.1.7 Development Workflow

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].

3.1.8 The Administration Console

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:

 create a new application, and set up a free appspot.com sub-domain, or a top-level


domain name of your choosing

 invite other people to be developers for your application, so they can access the Console
and upload new versions of the code

 view access data and error logs, and analyze traffic

 browse your application's datastore and manage indexes

 view the status of your application's scheduled tasks

 test new versions of your application, and switch the version that your users see
[36][40][41].

3.2 Instant Chat Messenger

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 messaging (IM) is a collection of technologies used for real-time text-based


communication between two or more participants over the Internet, or other types of networks.
Of importance is that online chat and instant messaging differs from other technologies such as
e-mail due to the perceived synchronicity of the communications by the users –chat happens in
real-time. Some systems permit messages to be sent to people not currently 'logged on' (offline
messages), thus removing some of the differences between IM and e-mail (often done by sending
the message to the associated e-mail account).

IM allows effective and efficient communication, allowing immediate receipt of


acknowledgment or reply. In many cases instant messaging includes additional features which
can make it even more popular. For example, users can see each other by using webcams, or talk
directly for free over the Internet using a microphone and headphones or loudspeakers. Many
client programs allow file transfers as well, although they are typically limited in the permissible
file-size [9].

3.2.2 Background on Instant Messenger

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 8: Instant Messaging Software Architecture [10]


The idea of Instant Messenger has been around for a long time. All of the visible Instant
messenger features like one-on-one chat and group chat existed in other internet applications
long before Instant Messenger entered the scene. For Example, the classic UNIX talk application
allowed to user to chat over the network years before Instant Messenger ever appeared, and
group chat have been carried out on Internet Relay Chat(IRC) System almost as long as talk has
been around

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.

3.4 Why Cloud Application?

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.

Java Applet Chat Messenger Java Servlet Chat Messenger

1. Only run on java platform 1. Run on any web browser


Example: JCreator Example: Internet Explorer, Firefox
Explorer, Google Chrome.

2. Available only on Local Area Network. 2. Available on World Wide Web.

3. Cannot deployed on Google App Engine 3. Can Deploy on Google App Engine.

4. Private Chat not Available 4. Private Chat Available.


3.5.1 Java Applet Chat Messenger Client Side

Figure 10: Java Applet Messenger

3.5.2 Java Servlet Chat Messenger on web

Figure 11: Java Servlet Messenger


3.6 Google provide help to move application to Cloud Computing

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].

Figure 12: Google App Engine Dynamically Scalable Platform Stack


Chapter 4:

Design and Implementation


In this research project, the idea is to develop an Instant Chat Messenger and deployed on
Google App Engine. After deployed on Google app Engine My Chat messenger is available on
web for End user. The end users can use this messenger for public and private chat.

4.1 Design

2
End User Browse Servlet
1 r
DATABA
3 SE

7 6 4
JSP
5

Figure 13: Project Design

As per above diagram is shows steps of my application how its work.

Step 1: End user use a browser for access my application.

Step 2: Browser send a request to servlet.

Step 3: Servlet get request and send to JSP file.

Step 4: JSP file get user information from Data base.

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 .

Figure 14: Chat Messenger login page

For register on chat messenger End user have to click on Registration button as shown in above
figure. The user has entered his details.

Figure 15: Chat Messenger Resister page

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.

Figure 17: Chat messenger page after login


4.2 Application Implementation

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.

First I downloaded and install the Eclipse plug-in from


http://dl.google.com/eclipse/plugin/3.6 location.

Once I installed, we will see three icons in our eclipse.

We have to click the first button icon to create new Google web application. We will see
following dialog box:

Figure 18: Create new web application


After specifying all the details specified in dialog above, click ‗finish‘ button. This will create an
Eclipse project similar to one shown below.

Figure 19: Application Package

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.

Figure 20: Deploye Project to Google App Engine

Before click on deployed I have add application ID. For add the application ID I have to click on
app Engine project setting.

Figure 21: Google App Engine Setting for Application ID


Before entering the application ID I have to create the application in Google App engine. For
this I have to click on ―My applications...‖ link to create new application ID. Application ID is a
unique identifier on Google application Engine. This will open a page in browser as shown
below (Remember, if you haven‘t logged in to Google account, it‘ll ask you to provide your
Google account details).

Figure 22: Create new Application on Google App Engine

Figure 23: Create new Application on Google App Engine


Then I specify my application ID and click ―Check Availability‖ to see if this ID is available.
Google also provides a free domain name on ―appspot.com‖ for our application. Once we have
found a unique ID, click ―Save‖ button. Once saved, we‘ll see a success message.

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.

Figure 23: Propertis for Instant Chat Messneger

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

Let‘s access the application. The URL for my application is http://chat-messenger.appspot.com.


[16]
Chapter 5:

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].

 meets the requirements that guided its design and development;

 Works as expected

 Can be implemented with the same characteristics.

 Reduce the number of bugs in the code.

 To provide a quality product.

 To see all the requirements are met.

 To satisfy the customers need.

 To provide a Bug free software.

5.1 Functional Testing

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.

Test Script from my program Script

Figure 25: Selenium IDE Testing result table


Above table is created after testing from my registered and login page in my Chat messenger
application. After run above test in Selenium IDE testing toll I have got below script from
registration and login page.

Figure 26: Selenium IDE Testing result Script

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

5.1.2 Testing Using Firebug Tool

The Bug Testing has been done with the help of Firebug plug-in.

Login Response page Firebug Testing

Figure 28: Log in page Firebug testing result


As per above test there is no bug issue in log in page. The Page lodging status is ok, Response
boy 669 B, Total received 1.6 KB, and Total sends 1 KB.

Chat window Firebug testing

Figure 29: Chat Window Firebug testing result


As per above test from Chat Window there is no error on Chat.jsp code the chat application are
running smoothly. End user can use this application without any error.

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

Figure 29: Overall performance


Error

Figure 30: Error performance

Average Bandwidth

Figure 31: Average Bandwidth performance


Average Response Time

Figure 32: Average Response Time performance

5.3 Performance from Google App Engine Dashboard

5.3.1 User request per Second

Figure 33: User request per Second


5.3.2 Millisecond / Request

Figure 34: Millisecond / Request

5.3.3 Errors / Second

Figure 35: Errors / Second

5.3.4 Bytes Received / Second

Figure 36: Bytes Received / Second


5.3.5 Bytes Send / Second

Figure 37: Bytes Send / Second

5.3.6 CPU Seconds used / Second

Figure 38: CPU Seconds used / Second


5.3.7 Average Load on Google App Engine

Figure 38: Average Load on Google App Engine


Chapter 6:

Conclusion and Future Work

6.1 Conclusion

I have built a web based Instant Chat Messenger application http://chat-messenger.appspot


.com/. My application is available on World Wide Web trough web browser. To run my
application user don‘t need to install any application on his/her machine. To run my application I
don‘t need to host any web server and don‘t need to buy any hardware for run my application.
After building my application I have deployed my application on Google App Engine. Google
app Engine is Cloud Computing based platform. Goggle has provided platform for run Java and
python application on Google App Engine server. After deployed my application I don‘t need to
buy any hardware support and maintenance support. Google has look after all issue. I have used
Google App Engine database for saving username, password, Private chat and public chat data. I
have built my Application on Eclipse IDE platform. Google App Engine is provide a plugin for
Eclipse. After add Google app Plugin in Eclipse I have easily deployed my application on
Google App Engine.

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].

6.2 Future Work

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

Vous aimerez peut-être aussi