Testing tools and AI - ideas what to try with some tool examples
Open911
1. Open911: Experiences with the Mobile Plus Cloud Paradigm
Manuel Rodriguez-Martinez, Jaime Seguel, Melvin Greer
Maniel Sotomayor, Juan P. Aleman, Jose Rivera Senior Fellow
ECE Department Lockheed Martin Corporation
University of Puerto Rico, Mayagüez melvin.greer@lmco.com
{manuel.rodriguez7, jaime.seguel, maniel.sotomayor,
juan.aleman1, jose.rivera63}@upr.edu
Abstract—— Cloud Computing is emerging as the next big step In response to this paradigm shift in the way online
in the design and deployment of an increasing number of services will be delivered, cloud researchers and engineers
distributed applications. Concurrent with this widespread must develop appropriate architectures and design patterns to
adoption of cloud technologies, we are witnessing the ensure that clouds provide responsive, efficient, and feature-
emergence of mobile devices as the principal tools to accesses rich services to both native and web-based applications that
online services. Private, public or hybrid clouds will host many run on mobile devices, desktop or laptop computers.
(if not most) of the online services consumed by mobile devices. In this paper, we present Open911 as reference
Hence, cloud researchers and engineers must develop architecture for the development of cloud-based applications
appropriate architectures and design patterns to ensure that
that feed mobiles devices through either native or web
clouds provide responsive, efficient, and feature-rich services
to both native and web-based applications running on mobile
applications. Open911 is designed to help first responders
devices, desktop or laptop computers. In this paper, we present manage emergency situations, providing a platform for
Open911 as reference architecture for the development of collecting maps, incident reports, pictures, video, and other
cloud-based applications that feed mobiles devices through data elements necessary to manage a crisis. Open 911 also
either native or web applications. Open911 is built on top of provides efficient support for web applications running on
cloud services that run on a hybrid cloud that includes Google desktop and laptop computers.
services and custom-built services deployed on a private cloud Open911 provides two presentation views of the same
powered by Ubuntu Enterprise Cloud. We discuss the elements data. Personnel located at a command center (set up to
of our architecture, the rationale behind our design choices, manage an emergency) use a web interface to visualize the
the strengths of the cloud systems, and the drawbacks or area of concern and post events to first responders on the
limitations that we found during our implementation effort. field. Meanwhile, first responders use a native application on
an iPhone to receive instructions, and send back photos or
Keywords- Cloud Computing; Open source clouds; Mobile videos detailing the current state of affairs. Both views are
plus cloud built on top of cloud services that run on a hybrid cloud that
includes Google services and custom-built services deployed
I. INTRODUCTION on a private cloud powered by Ubuntu Enterprise Cloud.
Cloud Computing is emerging as the next big step in the Our experience with Open911 has been quite positive
design and deployment of an increasing number of because the cloud infrastructure and associated technologies
distributed applications [1][2][3]. Cloud computing have simplified the tasks needed to write, debug, and deploy
technologies are designed to harness the power of networks applications. The fact that we can keep multiple application
of computers in a very cost effective way. With cloud versions in different server instances makes it is easy to test
technologies, enterprises can dynamically deploy server new features, roll back failed changes, and compare the
instances or entire application solutions on remote facilities behavior of different versions. Employing JSON and HTTP
setup by cloud providers. This eliminates the need for the as the methods to consume cloud services from mobile
enterprise to acquire hardware, software, and IT personnel. devices helped us simplified the code to the point where only
Moreover, new resources can be added or removed as one class is needed to handle most data requests from the
needed, making the deployment ““elastic””. Current clouds iPhone. Still, however, there are several features that must be
(e.g., Amazon EC2, Microsoft Azure, Google App Engine) added to cloud software frameworks to maximize their
provide capacity to serve a wide and constantly expanding potential. These features include simplified image creation
range of information processing needs, including for virtual machines, dynamic management of virtual
government, military, business and education [4]. servers, spatial data types, and support for GIS operations.
Concurrent with this widespread adoption of cloud In this paper, we discuss the elements of our architecture,
technologies, we are witnessing the emergence of mobile the rationale behind our design choices, the strengths of the
devices, specifically smart phones and tablet computers, as systems, and the drawbacks or limitations that we found
the principal devices to access online services. Private, during our implementation effort. This discussion will be
public or hybrid clouds will host many (if not most) of the helpful to any practitioner trying to build applications that
online services consumed by mobile devices [5]. This is integrate mobile and cloud computing technologies.
being depicted as the ““Mobile Plus Cloud”” paradigm [6]. The rest of this paper is organized as follows. Section II
provides an overview of the Open911 system. Section III
2. describes how we implemented the server-side components. area of damage. This would make it easy ensure that
Section IV describes the implementation of client-side services are available at all times during the emergency.
components. Section V presents a list of features that are
needed in future cloud solutions. Section VI contains a brief B. System Architecture
description of related work. Finally, section VII presents the The architecture of Open911 is depicted in Figure 1.
paper summary. Supported client devices include smartphones, tablets,
laptops and workstations. All these devices communicate
II. SYSTEM OVERVIEW with the cloud services in Open911 via HTTP. This ensures
communications simplicity, while at the same time
A. Motivation
leveraging on existing security mechanisms such as
The Caribbean and the southeastern coast of the USA lie firewalls, encryption, and certificates to protect the data
in the path of hurricanes that bring destruction in the form of exchange. All requests to the system are submitted as either
heavy rain, high surf, flooding, mudslides, and high winds. POST or GET requests to a web application server. Results
The results of these events are homes destroyed, flooded arrive encoded in HTML, a JSON message, or as a binary
roads, power blackouts, shortage of gas, and treats to the stream when image, voice, or video content is returned.
food and water supplies.
Emergency management agencies at both the local and
U.S. Federal Government level need to mitigate the effects
of these events not only to save lives but also to preserve
order. They must establish command centers to coordinate
rescue and law enforcement operations before, during, and
after the storm. They rely on first responder personnel that
include firemen, policemen, emergency technicians, civil
rescue workers, and public works employees.
Officials at the command center need to collect
information about emergency situations, and dispatch the
proper units of first responders. In turn, these first
responders become the eyes through which the officials
assess the situation and adjust their response plans. Often,
this information comes in the form of maps, reports,
pictures, videos, and other data items. However, these data
items get exchanged between first responders and
headquarters by means of heterogeneous means such as
emails, text messages, phone calls, or papers. This makes it
difficult to get a clear, global picture of the situation at hand.
This state of affairs can be improved by building an
Internet-enabled information system that lets headquarters
send instructions, maps, pictures, and other media directly to Figure 1: Open911 System Architecture
the first responders that need it. Likewise, the first The web application server is built using open source
responders can provide valuable feedback to the officers components, specifically the Apache2 web server and the
back at the headquarters. This feedback can include current Django web application framework. Django is a Python-
weather conditions, new pictures of the damage, maps of based web container just like apache Tomcat. All the data
newly discovered areas of damage, or recordings with the and metadata related with the emergency management
testimonials of eyewitnesses. scenarios is persisted with PostgreSQL, extended with
The ingredients for such information systems are already PostGIS functionality for spatial access method support. All
in place, but need integration. First responders can be these components run on Linux virtual server instances that
equipped with smartphones that carry the application(s) reside inside a cloud deployed with Ubuntu EC.
necessary to receive instructions, or send back updated The analytics server provides support for complex
information about the current situation. Back at command queries and data analytics operations. This module is
centers, officers can use workstations and mobile devices to implemented as a lightweight python web service running
collect up-to-date operational information and decide the atop the Hive data-warehousing server. Hive provides
next course of action. Both sets of applications should be storage and parallel data processing capabilities. Hive is
powered by highly available web services. Since the storm built atop Hadoop, which is an open source implementation
might have damaged the data centers used by emergency of the MapReduce [8] framework for large-scale data
management agencies, the web services should also be processing in computer clusters. Like previous components,
deployed inside cloud infrastructures located outside the
3. Figure 2: Open911 Web interface
the analytics server and Hive run on Linux virtual servers
D. iPhone Interface
provisioned inside a Ubuntu Enterprise Cloud deployment.
As in the case for the web interface, the iPhone provides
C. Web Interface the user with a view based on a Google Map. The iPhone
Users at the command center will most likely use laptop interface is shown in Figure 3. A pin button that provides
and desktop machines to manage all data regarding the just two lines of information about the event, following
emergency at hand. For this purpose, we developed a web Apple’’s UI guidelines, represents each marker. The first line
interface for Open911 that is based on Google Maps. Figure gives the type of event and the second line provides a one-
2 shows a snapshot of this interface. Using Google Maps liner description of the situation. By pressing the disclosure
makes sense since geographic location is one the principal button on the pin, a new view appears showing the details of
criteria used to track emergencies, and assign resources. All the event. From this view, the user can use the iPhone
the events being tracked are represented by a collection of camera and microphone to capture images, voice, or video
markers on the map. For each event, we track: a) latitude related with the event at hand. In addition, the first
/longitude (lat/lon) coordinates, b) type of event, c) responder can use an information button (shown with a
emergency management agency in charge, d) date and time letter i) to change the type of the map (satellite, map, or
of occurrence, e) current status, and f) media files (video, hybrid) or to add a new marker at its current location.
voice, images). The interface provides a left-hand panel that The iPhone interface was written in Objective-C, using
filters the events based on layers that define the agency type XCode 4.2. It runs on iPhone, iPod Touch and iPad devices.
and the event type. It communicates with the web application framework by
The web interface is implemented with Javascript, means of HTTP GET/POST commands, and receives al
Django’’s page templates, and Dajaxie. The latter is a library results as either JSON data steams or binary file streams.
that implements AJAX inside Django-based projects. Each
method call is sent over HTTP to a specific Django view
controller for processing and result generation.
4. • Layer –– provides information about which layer is
associated with a marker. Each emergency
management agency has a separate layer that covers
the types of markers it is interested in seeing.
• LayerMarkerType –– provides the association
between a Layer and MarkerType associated with the
layer.
• Incident –– describes an incident that has occurred at
a given location. A marker represents each location.
Notice that a marker might contain multiple
incidents. For example, a flooded road might also
have several people trapped in a car. In such case,
the flooded road and trapped people are two separate
incidents.
• IncidentStatus –– keeps track of the different status
changes for a given incident. The complete trail of
status changes must be kept in the database. Example
statuses include: in-progress, solved, and imminent.
We used PostgreSQL and PostGIS to store, index, and
maintain all the records in the data model.
III. IMPLEMENTING SERVER-SIDE FUNCTIONALITY
Figure 3: Open911 iPhone interface
A. Web Application Server
E. Application Data Model
The web application server works as the entry point into
Open911 needs to represent data about the incidents that the system. It serves both dynamic and static content, thus
occur as part of an emergency situation. The data include acting also as an application server. Moreover this content
geographic location, dates, description, media, and so on. might be HTML, JSON, or binary. These requirements lead
Figure 4 depicts the collection of tables that form the data us to develop our solution based on the Model-View-
model Open911. Controller design pattern. But, as we started our development
process, we quickly found out that straightforward
application of MVC was not enough to get our
implementation right. We now go into the discussion of this
application.
1) Server Organization
Figure 5 depicts the organization of the web application
server stack. The server is hosted inside the Django web
container, which in turn is hosted inside Apache2. This layer
was implemented in Python, specifically Python 2.7, and
Django 2.
Requests for data are received by either GET or POST
messages. These request are received by one of our custom-
built Django view controllers, which are Python objects.
Figure 4: Open911 data model Each request is examined to determine if an HTML response
The description of these tables is as follows: or a JSON response is expected. HTML responses are
• Place –– collection of named locations on the Earth. returned to browser applications, while JSON responses are
Yahoo’’s Where on Earth Ids (WOEID) are used to given to native applications running on the mobile devices.
identify them. These places could be countries, Based on this determination, the view controller object
cities, states, and so on. instantiates a request handler object to manage the data
• Marker –– a registered marker that is shown on the extraction process. The request handler follows the
map and is stored in the local database. Notice that functionality of the front controller and the façade patterns.
each marker has lat/lon coordinates to identify it on The request handler instantiates objects in the data model
the map. in order to: a) query the underlying database to fetch records
necessary to answer the request from the user, b) assemble
• MarkerType –– provides information about the type
model objects from database records, c) perform any
of event that a marker represents (e.g., Civil Defense, necessary business logic, and d) build collections with the
Police, etc.) results of the operation. The request handlers use the services
5. of the data access objects (DAOs) to access the underlying Apache2, Django 2.0, Pyhton 2.7, PostgreSQL 9.0, and
database. In turn, the DAOs use a simple representation of PostGIS 1.5.
the database records that has no business logic and is
b) Web Development –– Our team has over five years of
provided by the classes at the Data Transfer Objects (DTO)
layer. Notice that both DAOs and DTOs are design patterns. experience building web applications with Java and Apache
Finally, the DB API provides the DAO with the necessary Tomcat. Yet, we decided to build our application with
code to read data from the database. This layer includes not Python because many cloud platforms used it as the major
only code to access PostgreSQL, but also code to make language for application development. These include
appropriate manipulation of spatial objects supported by Google’’s App Engine and NASA Nebula Project. At first,
PostGIS. we were concerned about the potential problems and
unknowns that arise when a new platform is employed. But,
as soon as we started working with Python and Django, our
concerns began to diminish. Compared with Java JSP and
Servlets, Django provides a cleaner and easier to use
framework. We were able to build pages, view controllers,
and models easily. Thanks to the PyDev Eclipse Plug-in, we
had access to a modern IDE for debugging and testing.
Moreover, the modular structure of Django enabled us to
easily test the classes for the view and model layers without
writing any HTML or native client code. In fact, we could
test our code in an interactive Python session, thus reducing
the amount of setup time for testing.
On the down side, the facilities for error diagnostics are
somewhat lacking in Django. Several times we found
ourselves trying to decipher the error messages returned by
the code, as they often pointed to a technical issue but gave
little insight into what might have caused it. In this sense,
Django should try to mimic the error stack trace found in
Java applications.
c) Cloud Deployment –– Once the virtual server was
properly setup with all the packages needed to run our
application, we were able to easily deploy multiple instances
Figure 5: Web Application Server Organization at both EC2 and Eucalyptus. This enabled us to run multiple
version of the application to test or demo new features. If
When the request handler has solved the request for data something went wrong with a new feature, we could always
issued by the user, it delivers those results back to the view switch back to using the previous version while we
controller that invoked it. This view controller then
corrected the new, buggy version.
instantiates the result handler that is associated with the
given request handler. Each result handler takes care of However, setting up the virtual server was challenging,
producing a result that is delivered to the client. This result tedious and often times plain frustrating. It all starts with the
could either be an HTML page, a JSON stream, or a binary process to setup the Linux OS image out of which the virtual
file. The request handler follows the template view design server runs. Typically, you start out with a basic image
pattern. provided by the cloud vendor. You boot and run an instance
2) Deployment on a IaaS Cloud out of this image, connect to it, and install the software you
We deployed our web server application completely need. The problem is that if you terminate your instance, all
your changes are lost. To avoid this, you need to create a
inside an Infrastructure as a Service Cloud (IaaS).
custom image out of your modified image. The process to do
Specifically, we used the Ubuntu Enterprise Cloud platform, this is tricky and poorly documented. One option involves
which features a Eucalyptus distribution integrated with using the kvm hypervisor and a Linux distribution to create a
Ubuntu 10.04 LTS. We also successfully deployed the web virtual server on which you install all the software you need.
server application into Amazon’’s EC2. In both cases, the Then you need to upload and register with the cloud
Apache2 web server, Django web container, and controller the following items: a) a file containing the RAM
PostgresSQL server ran on the same virtual server instance. disk of the virtual server, b) a file containing the kernel
3) Status and Development Experience image of the virtual server, and c) the kvm image file where
a) Status -As of this writing, the web application server the Linux installation was saved. After this process, your
is operational and running inside our Eucalyptus cloud and image is ready to use for instantiating servers.
inside Amazon EC2. This version of the system requires The second method involves creating a snapshot of the
currently running virtual server with all the changes you
6. want applied to it. This snapshot copies all the files in the 1) Server Organization
virtual server’’s file system, and stores them in a compressed Figure 6 presents the organization of the analytics server.
file(s). You then upload and register this ““bundled’’’’ image Like the web application server, the analytics server is run on
into the cloud. Django. The components are essentially the same as those in
Both processes are difficult to understand, error prone, the web application server. However, the results in the
and give litter feedback to the user about what is going on. analytics server are always returned as JSON streams. For
The natural tendency is to then wait until you have enough this reason, we have a set of classes that implement a web
packages in the virtual server so your deployment is stable, service façade to the analytics server. At this point, there is
in order to minimize the pain of building custom images. The no HTML output from the operations in the analytics server.
problem and danger of this approach is that a failure in the The rationale for this is that the functionality of the analytics
cloud might wipe out your changes (it happened to us!). server will be invoked from the web application server.
The missing ingredient in current open source IaaS Hence this component will take care of the user-interface
frameworks is an easy and intuitive method to build custom presentation issues.
images. Preferably, it should be a point-and-click solution or The other difference between the analytics server and the
a command that takes a running instance and creates an web application server is that the former uses Hive for data
image out it. Amazon EC2 has such feature, but it provides storage. We used the Python libraries provided by Hive to
little feedback on how it is progressing. This leaves the user submit SQL-like queries and receive the records resulting
in an anxious state waiting to see if the new image will be from these.
created or not. 2) Deployment on a IaaS Cloud
B. Analytics Server The analytics server was deployed on four Linux virtual
server instances running inside our Eucalyptus cloud. We ran
The purpose of the data analytics server is to support data Hive 0.6 and Hadoop 0.20 to support the analytics server.
processing operations on massive data sets. One of our goals 3) Status and Development Experience
is to enable monitoring and analysis applications that
empower officials to see historical trends, and then make a) Status -As of this writing, the analytics server is
decisions on new data that arrives and is related with the old operational and running inside our Eucalyptus cloud.
information. For example, officials might want to track b) Development Experience –– Hadoop and Hive work
temperature, humidity, rainfall, and population size for a well to manage large data sets in clusters of virtual
given location and use this information to help forecast machines. But, working with Hadoop and Hive can be
expected flooding and the damage that it will cause. As challenging because of the lack of good debugging tools,
another example, public works engineers might want to track and scattered documentation. Although, there are plenty of
readings from the sensors placed on a bridge that crosses a examples on the Internet on how to use Hadoop and Hive,
river. This information can be useful to determine if the the vast majorities are for simplistic scenarios. Moreover,
bridge is structurally secure, special if high winds or river
there is no support for spatial indexing in Hive at this
flooding is expected.
moment. This limited our capabilities for spatial search
operation only to equality queries. There is recent work in
[9] investigating methods to include spatial access methods
and GIS support into cloud frameworks. However, no
solution has found its way into open source cloud
frameworks for data processing such as Hive or Cassandra.
IV. IMPLEMENTING CLIENT-SIDE FUNCTIONALITY
The client application implemented for the iPhone
follows the navigation application template provided by
Apple’’s XCode IDE.
A. Application Organization
Figure 7 shows the internal organization of the
application. As mentioned in section II.D, the first view
controller seen by the user shows a map with the markers
that are relevant to the area in which the first responder is
located. As the user interacts with the application, additional
view controllers appear to customize the map, show details
of markers, upload media files, or add new markers. The
view controllers execute the requests from the user thanks to
the functionality implemented by request operations, which
are objects that inherit from the NSOperation defined in iOS.
Figure 6: Analytics Server Organization Basically, an NSOperation is a class that implements
7. functionality that gets run on a separate thread of execution. names in the expected result to adapt it to process different
The NSOperation abstracts away the details of thread types of result sets.
manipulation; just like the Thread class does in Java.
NSOperation instances are needed because the main thread B. Status and Development Experience
in an iOS application deals with the events in the user- 1) Status –– The iPhone application runs on iOS 4.2 and
interface. Any request to access the network, or expensive has been deployed on the iPhone 3GS, iPhone4, iPad, and
file operations should be implemented in a separate thread by iPod Touch. It has been demonstrated to officials at UPRM,
means of an operation. Lockheed Martin, and at the 2010 USA Science and
Engineering Festival, held in Washington, DC.
2) Development Experience –– At first, Objective-C
seemed to us like a complex language to learn, compared
with Java or C++. But, once we passed a couple of weeks of
acclimating to the language, we were able to write code
quickly, leveraging on the very complete set of libraries
supplied with iOS and the power of the XCode IDE. XCode
really shines as a tool to enhance software development
productivity. It makes it easy to put together a complex,
multi-window application with little configuration effort on
the part of the user. Also, its associated tool for GUI design,
named Interface Builder, lets the developer assemble a
intuitive yet professional looking application in matter of
hours. The iPhone simulator application does an excellent
job as initial application testbed. But its lack of support for
location services made us quickly move to testing on actual
devices. The iOS platform is well-documented, with many
books and online resources that show how to build software
that performs non-trivial tasks.
The only downside that we encountered in this
development effort was the need to port part of the code for
Figure 7: iPhone application organization the models, and the entire set of data transfers object from
Underneath the request operation layers, we find an Java to Objective-C. That would not have been necessary if
organization that is similar to that in the web application we had used Android. But the development tools for the
server and the analytics server. The result delegates are the iPhone are much mature and robust that those for Android,
objects that will handle the results obtained by the request driving us to pick the latter platform the client development.
operations. The delegates follow a function call back
strategy, in which their methods get register with the request V. FUNCTIONALITY REQUIRED IN FUTURE CLOUDS
operation and invoked depending on the results received Based on our experience developing Open911, we argue in
from the web server. The HTTP/JSON APIs are used for the favor of adding the following functionality to future open
data exchange with the web server. source cloud software offerings:
A special case is the data source operation layer, which
• Simplified image creation –– Software tools are needed
controls the process to request data from the web application
to simplify the creation of customized virtual machine
server. At first, we thought we would need multiple classes
images with the required software packages.
for this. But, we soon realize that by using JSON and
• Automated scaling of virtual machines –– The cloud
encoding all requests into POST/GET message, all we
infrastructure should let the user dynamically re-size
needed was a single class to handle most (if not all)
the amount of resources that the virtual machines use,
requests. The secret to this has to do with the way iOS
in response to noticeable changes in the workload.
libraries process JSON. These libraries parse the results in a
Amazon EC2 provides such feature with its ““Auto
JSON stream, and convert the data elements into a hash
Scaling”” technology.
table. The keys in the hash table are the names of the
• Virtual machine portability –– The capacity to
element attributes and the values are strings with the value
for an attribute, or collections (arrays or hash tables) seamlessly migrate virtual machines between IaaS
containing more pairs of key/value results. Hence, in our clouds can greatly simplify application development
and deployments. Rather than creating a virtual server
code all had to do was to pass to the code the URL of the
for each type of IaaS cloud, one could just create one
target web server application and the collection of key
image that can be run on EC2, Eucalyptus, OpenStack,
and so on.
8. • Spatial Access Methods for Data Processing Clouds –– Cloud. Our experience with Open911 has been quite
Proven solutions such as R* tree, GIST, and Quadtrees positive because the cloud infrastructure and associate
should be incorporated into systems like Hive and technologies have simplified the tasks needed to write,
Cassandra. This will simplify and accelerate the debug, and deploy applications. Still, however, there are
development of cloud-based, large-scale scientific several features that must be added to cloud solutions to
applications that require spatial data types and maximize their potential. These features include simplified
functions. image creation for virtual machines, dynamic management
• Support for Geographic Information Systems (GIS) –– of virtual servers, spatial data types, and support for GIS
Simply adding spatial types to the cloud software is not operations.
enough. GIS applications need complex mathematical
models that make distance calculations between points, REFERENCES
perform geometric computations, and nearest neighbors [1] R. H. Katz, ““Tech titans building boom,”” IEEE Spectrum, vol. 46, no.
2, pp. 40––54, February 2009.
type of queries. For example, PostGIS provides types
[2] D. A. Patterson. ““Technical Perspective: The Data Center is the
that calculate distances between points on the surface of Computer””. Communications of the ACM, 51(1):105––105, 2008.
the Earth. These distances are calculated based on arcs [3] M. Rodriguez-Martinez, J. Seguel, and M. Greer, ““Open Source
over a sphere, not lines on a plane. Moreover, these Cloud Computing Tools: A Case Study with a Weather Application””.
distances are expressed in degrees. If your application 2010 IEEE Cloud Computing Conferene, Miami, FL, 2010.
needs distances in meters, then you need to use the [4] J. Nicholas Hoover, ““Federal Budget Lays Out Government Cloud
Geography data types included in PostGIS or create one Computing Plans””, Information Week, May 12, 2009. URL:
http://www.informationweek.com/news/government/enterprise-
that fits your needs. The latter task is not for the faint- architecture/showArticle.jhtml?articleID=217400505. Access date:
hearted. Clearly, this functionality should be a built-in September 22, 2009.
service provided by the cloud software. [5] G. Huerta-Canepa, and D. Lee, ““A virtual cloud computing provider
for mobile devices””, 1st ACM Workshop on Mobile Cloud
VI. RELATED WORK Computing & Services, San Francisco, CA, 2010
[6] Microsoft Research, ““Mobile Plus Cloud Computing””
The work in [10] provides an architectural overview of http://research.microsoft.com/en-us/collaboration/global/asia-
typical cloud technologies. Eucalyptus is rooted on a pacific/programs/mobile-cloud.aspx Access date: February 20, 2011.
research effort with the goal of building an open source IaaS [7] Peter Mell and Tim Grance, ““The NIST definition of Cloud
framework [11]. Similarly, Hadoop originates as an open Computing”” http://csrc.nist.gov/groups/sns/cloud-computing/ .
source implementation of the MapReduce framework Access date: December 7, 2009.
developed at Google [8] for PaaS. Recent work from the [8] J. Dean and S. Ghemawat., ““Mapreduce: Simplified data processing
database research community [12] has shown that Hadoop is on large clusters,”” in Proc. of 2004 OSDI, San Francisco, CA, USA,
2004, pp. 137––150.
very slow when compared with parallel databases, but it is
better in terms of fault-tolerance. HadoopDB [13] has [9] J. Wang, S. Wu, H. Gao, J. Li, and B. Ooi, ““Indexing multi-
dimensional data in a cloud system””, in Proc. of 2010 ACM
emerged as a hybrid solution that uses a relational database SIGMOD Conf, Indianapolis, IN, 2010.
engine as computing node in a Hadoop installation. The [10] A. Lenk, et. al, ““What’’s Inside the Cloud? An Architectural Map of
work in [14] surveyed several virtualization technologies for the Cloud Landscape””, in Proc. ICSE Workshop on Software
cloud computing. The work in [15] studied a methodology Engineering Challenges of Cloud ComputingVancouver, Canada,
for combining traditional cluster-based services in a cloud 2009, pp. 23-31.
environment. For many research issues associated with [11] D. Nurmi, et.al., ““The Eucalyptus Open-source Cloud-computing
Cloud Computing the user is referred to [16]. System””, in Proc. 9th IEEE/ACM International Symposium on Cluster
Computing and the GRID, Shangai, China, 2009, pp. 124-131.
VII. SUMMARY [12] A. Pavlo, et.al., ““A comparison of approaches to large-scale data
analysis,”” in Proc. 2009 SIGMOD, Providence, RI, USA, 2009.
Cloud Computing is emerging as the next big step in the [13] A. Abouzeid, et.al, "HadoopDB: An Architectural Hybrid of
design and deployment of an increasing number of MapReduce and DBMS Technologies for Analytical Workloads", In
distributed applications. In this paper, we presented Proceedings of VLDB 2009, Lyon, France.
Open911 as reference architecture for the development of [14] D. Cerbelaud, S. Garg, and J. Huylebroeck, ““Opening The Clouds:
Qualitative Overview of the State-of-the-art Open Source VM-based
cloud services that feed mobiles devices through either Cloud Management Platforms””, in Proc. Proceedings of the 10th
native or web applications. Open911 is designed to help first ACM/IFIP/USENIX International Conference on Middleware,
responders manage emergency situations, providing a Urbana, Illinois, 2009.
platform for collecting maps, incident reports, pictures, [15] R. Moreno-Vozmediano, R. S. Montero, and I. M. Llorente, ““Elastic
video, and other data elements necessary to manage a crisis. Management of Cluster-based Services in the Cloud””, in Proc. 1st
workshop on Automated Control for Datacenters and Clouds,
Open 911 also provides efficient support for web Barcelona, Spain, 2009, pp. 19-24.
applications running on desktop and laptop computers. Our [16] B. Hayes, Cloud computing, Communications of the ACM, v.51 n.7,
solution is built on top of cloud services that run on a hybrid July 2008
cloud that includes Google Maps and custom-built services
deployed on a private cloud powered by Ubuntu Enterprise