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
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.
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 ... 111.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.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
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
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: 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
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.
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.
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].
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].
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].
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 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
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:
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.
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 Example: JCreator
1. Run on any web browser
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.
3.5.1 Java Applet Chat Messenger Client Side
J
Figure 10: Java Applet Messenger
3.5.2 Java Servlet Chat Messenger on web
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].
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 1 3 7 6 4 5Figure 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.
Browse r Servlet JSP DATABA SE End User
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.
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
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:
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.
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
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
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
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
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
Error
Figure 30: Error performance
Average Bandwidth
Average Response Time
Figure 32: Average Response Time performance
5.3 Performance from Google App Engine Dashboard
5.3.1 User request per Second