cloud computing architecture - university of arkansascwt/courses/2014-01--csce-4543...as we will...
TRANSCRIPT
SOFTWARE ARCHITECTURES
Chapter 7 – Cloud Computing Architecture and Various
Deployment Methods and Implementation
JD Pack
Abstract
The term “cloud computing” has been around for many years – it’s roots go back even
before using the Internet became a daily phenomenon for businesses and consumers. The
underlying concept of cloud computing relates to the idea of sharable resources, such as
computation time and memory usage. If computing resources were to be shared within large
entities such as the banking, technology industries, and even federal agencies, the cost-savings
and efficiency measures would be largely noticeable. In this paper, the various models of cloud
technologies will be explored, along with their deployment models and their current
implementations. Also, the idea of cloud architectures will be a central focus of the paper,
detailing the current attempts of building a useful and employable cloud framework and
examining what could be done with current cloud models to make them more usable. Issues and
vulnerabilities within cloud technologies will also be analyzed.
What is Cloud Computing?
According to the National Institute of Standards and Technology (NIST), “Cloud
Computing is a model for enabling ubiquitous, convenient, on-demand network access to a
shared pool of configurable computing resources that can be rapidly provisioned and released
with minimal management of error or service provider interaction [1].” The term “cloud
computing” is commonly described as a stack of features or services, in the sense that users of
the cloud can access a customized set of services best suited to their needs in a convenient and
timely manner. The features of a cloud system are utilized not only by consumers and
corporations, but by government agencies as well.
NIST defines five essential characteristics that make up a cloud computing architecture:
on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured
service. On-demand self-service means that a consumer can use the cloud service offered to
them without having to interact with the provider of the service. They are only allowed to use
certain parts of the cloud service, but that service is scalable, which allows them to provision
computing capabilities as they see fit. Another essential part of cloud computing, broad network
access, states that a cloud’s capabilities are available through the use of the Internet and are
accessed using various types of thick or thin-client platforms (e.g., laptops, mobile devices,
workstations, etc.). Next, it is imperative that cloud computing services provide some way to
serve all of the clients accessing its features, via resource pooling. Resources that are pooled
include storage, computational and graphics processing, memory, and network bandwidth. This
is typically performed through the use of both physical and virtual resources that can be
dynamically scaled to meet consumer demands. Additionally, the customer using the cloud
service need not know that actual physical location of the resources provided, but may be able to
specify a location that has been abstracted to fit efficiency and low-latency requirements (such as
country, state, or datacenter). Another important component of the cloud computing model is
rapid elasticity. As defined by NIST, rapid elasticity means that “capabilities can be elastically
provisioned and released, in some cases automatically, to scale rapidly outward and inward
commensurate with demand.” To the average user of the cloud, it may appear that the service
they are using is unlimited. However, since we know that any type of computing contains a
finite number of resources that are available, this is simply describing how a customer will (in
basic use of the service) never run out of the resources needed due to the scalable property of
cloud architecture. Lastly, cloud architectures are a measured service. This means that cloud
systems can automatically control and optimize resource use by leveraging a metering capability
at some level of abstraction appropriate to the type of service being used. This characteristic
describes the scalable portion of the service, which can be monitored, controlled, and reported to
both the provider and consumer of the service.
As we will see, there are various different models and implementations of cloud
architectures, and these types of architectures that are employed by their providers vary greatly.
Types of Cloud Computing
Types of cloud computing services, also known as “service models,” define the delivery
method that is being employed by the cloud provider. The service model is based on many
different needs from both the user and the capabilities available from the provider. In cloud
architectures, there are three main types of service models: Software as a Service (SaaS),
Platform as a Service (PaaS), and Infrastructure as a Service (IaaS).
Figure 1: Layers of a Cloud Architecture (Google Images)
Software-as-a-Service
Software-as-a-Service gives the user access to the cloud provider’s applications that run
on the cloud infrastructure (NIST). The applications are accessible through various types of
client devices or web interfaces, such as webmail. In this service model, the user does not
manage or control the underlying cloud infrastructure; instead, they are given access to the
applications themselves only (and possibly a limited number of application configuration
settings). This type of service is one the most basic type of service most cloud providers offer.
It allows the user to use their products in a cloud atmosphere while keeping application-specific
features and system settings controlled by the vendor.
Figure 2: SaaS Service Model (Google Images)
In recent years, SaaS has become an increasingly popular delivery model to distribute
applications and software to clients due to both the use of asynchronous web development
techniques such as Ajax and the evolution of service-oriented architectures [2]. Additionally,
there are several added benefits with using SaaS over the standard model of software
distribution. For the provider, SaaS systems enable easier administration, automatic software
patching and patch managements, easier collaboration between clients and users, and
accessibility on a global scale. For clients, this means that the software that they are using will
always be updated and compatible between other clients, and clients will not have to manage the
application’s underlying settings. They also have lower initial costs due to low subscription fees,
rather than having to pay licensing fees for the number of copies of the software that they
require.
Platform-as-a-Service
Platform-as-a-Service gives users access to the tools and libraries from the provider,
which allows them to build and run their own applications using the provider’s hosted cloud.
Cloud providers give the user access to use all of the services required to run their applications,
such as networking, servers, storage, and any other services that may be required via the web. A
major benefit of PaaS is that the user can deploy the software to their application users, without
having to maintain their own software and hardware. Generally, cloud users will pay a fee for
the time or amount of the provider’s services that they use, which can be scaled depending on
how much of the service is needed. Additionally, PaaS may provide extra functionality for the
user to keep track of how they are using the service, such as tools for monitoring, workflow
management, discovery, and reservation [3].
Figure 3: PaaS Service Model (Google Images)
PaaS is arguably the most desired type of cloud service for clients that are involved in the
technology industry or perform software development. Generally, companies that incorporate a
large amount of their business model developing programs require significant server space and
resources. This, along with keeping development data secure is expensive and difficult to
maintain. With the Platform-Service model, clients can offload the overhead of maintaining the
required development resources to cloud platforms, which provide remote access to the same
tools, storage, and development environments that they would have had to maintain themselves.
The most obvious benefit is that clients will only be paying a monthly fee for access to the cloud
rather than having to spend a large investment in onsite hardware. Along with cost savings
benefits, companies will avoid having to perform technical maintenance, require a lesser amount
of technical support staff, and will gain mobility. Development tools that may be rarely used
could be made available as part of the PaaS package, so clients would be paying for the quality
of the software offered, instead of having to pay for individual licensing.
Platform-as-a-Service can be further subdivided into different types of programming
environments: add-on development facilities, stand-alone and application delivery-only
environments, open platform-as-a-service, and mobile platform-as-a-service. Add-on
development facilities provide additional functionality to existing Software-as-a-Service models.
Examples include Lotus Notes and Microsoft Word, which provide features to employ add-on
development tools. Stand-alone development environments do not contain technical, financial,
or licensing dependencies on individual applications or web services. Instead, stand-alone
environments provide a range of programs as a generalized development environment.
Application delivery-only environments include on-demand scaling and application security, but
usually do not provide development or debugging tools as part of the service. Open platform-as-
a-service is a unique form of PaaS: it provides open-source software to allow a PaaS provider to
execute applications. Typically, open PaaS does not including hosting as such. An example of
this is AppScale, an open PaaS that serves as an API for making calls to Google’s App Engine
on other clouds. Mobile PaaS enables cloud development functionality on mobile devices,
which means employees can use their own devices to access cloud data and tools, mobilizing the
Platform-Service [4].
Infrastructure-as-a-Service
Infrastructure-as-a-Service provides the most basic, bare-bones tools for cloud
computing. The user is given access to the cloud’s processing, storage, networking, and other
resources to allow them to run and deploy arbitrary software, such as operating systems and
applications. The consumer cannot control the cloud infrastructure, but is given tools to modify
and configure operating systems, storage, and their deployed applications. Often, the IaaS
services are provided using virtual machines, which are readily configurable and scalable. To
deploy IaaS services, providers use large datacenters that supply on-demand resource pooling,
which can often result in inefficiency for the provider if they don’t have enough consumers
utilizing their services. Similar to PaaS, IaaS services are billed based on the amount of
resources allocated and consumed.
Figure 4: IaaS Service Model (Google Images)
IaaS is also known as cloud infrastructure; in general, the services and resources offered
are part of the same services that form the basis for cloud computing. Take Google’s Cloud
Platform, for example. Google Cloud Platform offers a host of different cloud computing
products for users (including Compute Engine, an IaaS), but these services also are using the
same cloud infrastructure that Google employs to deliver content to end-users, such as YouTube
and Google Drive. With products comparable to Compute Engine, Google is allowing others to
access their cloud computing power, for a price. Similar to PaaS, clients are charged a
subscription access fee. However, additional fees may apply based on resource usage, such as
storage and computing time for virtual machines [5].
Each of the three types of services can be thought of as individual layers, with each
increasing layer further abstracting the different components and services a customer is provide.
For example, with the Infrastructure as a Service model, the user has access to devices such as
virtual machines, servers, storage, and networking utilities. A Platform as a Service user, on the
other hand, would be provided with tools and services such as execution runtime environments,
webservers, and development tools. The services provided from an IaaS are entirely different
than what might be provided with a PaaS, even though the provider may be offering these two
different models using the same system.
Other Types of Services
In addition to the three main services mentioned above, other nomenclatures of cloud
services are being introduced as cloud computing becomes more prevalent, even though they are
not yet officially recognized by NIST or may simply be a more specific niche of an existing
service. A new type of service that has been created is known as Security-as-a-Service
(SECaaS). SECaaS is a business model where a cloud provider offers security services to a
client without requiring on-premises hardware. Some examples of these service providers are
Symantec and Verisign. SECaaS is considered to be a branch from the SaaS type of cloud
service [6].
Deployment Models
Depending on the type of features in the cloud, there are various different ways of
deploying the cloud to its respective clients. The four main different types of cloud computing
deployment models are private clouds, community clouds, public clouds, and hybrid clouds.
Each has their own benefits and downsides. They can depend on the geographic location of
where the cloud services are hosted, the desire to share cloud services, the ability to manage
services, customization capabilities, and any security requirements. Typically, an agency or
another organization will “feature” the cloud to clients, even though the cloud is still the property
of whatever service provider produced it.
Figure 5: Cloud Deployment Models (Google Images)
Private Cloud
A private cloud is technically similar to the public cloud; however, there are additional
security measures implemented that only allow a single, specific organization to access the
cloud. In a private cloud, the provider dedicates cloud services to a single client. One of the
common reasons why agencies provide private clouds is for enforceable security standards and
protocols. Unlike public clouds, where agents must accept reduced control and monitoring since
resources are shared, private clouds are controlled entirely by the organization. When
implemented correctly, private clouds can improve the organization, but can be at a high risk for
vulnerabilities. Because of the nature of the private cloud, they are usually implemented using
self-run, or virtualized, data centers. However, this can be a major disadvantage, since self-run
data centers are more expensive, must be periodically refreshed and updated, and require a
significant amount of hardware [7].
Private cloud management requires virtualization pooling of computing resources and a
self-service portal for the client to maintain its infrastructure, which is performed using
sophisticated management tools. These management tools are usually service-driven, rather than
resource-driven, since cloud private clouds rely heavily on virtualization and are organized as
portable workloads [8].
Public Cloud
A public cloud infrastructure is a cloud that is open to the general public (e.g. public use)
and owned by as third party service cloud provider (CSP). With a public cloud, the CSP shares
its resources with other organizations and agencies through the Internet. Sometimes, this can be
the most effective deployment model; it gives providers and organizations the ability to produce
only the computing resources needed and to deliver all services with continual availability,
manageability, resiliency, and security. Many agencies build their own infrastructure by
aggregating infrastructures from other providers. Some examples of providers who utilize the
public cloud deployment model include Google, Amazon (AWS), and Microsoft.
Public clouds are managed by public CSPs, and the clients can select from three basic
categories: user self-provisioning, advance provisioning, and dynamic provisioning. With user
self-provisioning, clients buy cloud computing services directly from the CSP itself and pay per
transaction. In advanced provisioning, customers contact providers in advance for a
predetermined amount of computing resource needs. They usually either pay a one-time or
subscription fee. Lastly, dynamic provisioning allows clients to use only the resources they
require, and decommissions them afterwards when they are not needed. Clients are charged a
pay-per-use fee [9].
Community Cloud
NIST defines a community cloud as a cloud infrastructure that is “provisioned for
exclusive use by a specific community of consumers from organizations that have shared
concerns.” [1]. As a sort of in-between amid private and public clouds, community clouds are
offered to groups of clients, which may be managed and hosted by either a CSP or internally.
These types of clouds spread out costs among its clients, making the community cloud an
efficient and cost-saving strategy for agencies that share needs or services. Community clouds
are well-established among federal agencies, since federal organizations frequently share
knowledge or interests [10].
Hybrid Cloud
A hybrid cloud is a combination of private, public, or community clouds that remain
unique entities, but are bound together by standardized or proprietary technology that enables
data and application portability [1]. With hybrid cloud, agencies that have unique requirements
can benefit from overlapping cloud services. For example, an agency that stores private
information about customers may wish to store the data on a private cloud, but also might have
to connect their data to a billing SaaS contained on a public cloud. Another feature of hybrid
cloud is cloud bursting, where an application runs on a private cloud as a small project, but
“bursts” to a public cloud whenever the demand for computing capacity and resources increases
[11]. This allows companies to cut down on operating costs, since they would only be paying for
extra resources when needed.
Hybrid cloud management systems must be able to track and manage services across
different types of cloud deployment models and domains. The best method for designing an
effective management system starts with outlining the services that require management and the
means by which they will be managed. These systems also should contain effective policies that
include image configuration and installation, access control (by a means of an efficient sign-in
strategy such as Single sign-on), and financial and reporting management [12].
Cloud System Architecture
The systems architecture of the software systems involved with cloud service delivery,
known as cloud architecture, includes the using of communication devices such as messaging
queues that facilitate communication between several cloud components. One such architecture
system is known as the Intercloud, which is an interconnected global “cloud of clouds,” that
serves as an extension of the “network of networks” method that clouds are based upon [13]. As
clouds become more of a standard within homes and businesses, Interclouds will serve as the
next step of cloud computing where services, resources, and computational ability will be shared
between the infrastructures of other clouds. The idea could be thought of as a “network of
clouds,” with clouds exchanging data or other resources through the use of common protocols or
interfaces. While the Intercloud is still in its conceptual and theoretical stages, realized forms of
cloud system architectures would allow more communication strategies currently offered
between cloud service providers and could also introduce new business opportunities between
them.
Implementations of Cloud Computing
Google App Engine
Figure 6: Overview of Google App Engine (Google Images)
Google App Engine (GAE) is a Platform-as-a-Service cloud model that was launched by
Google on April 7, 2008. GAE allows software developers to run web applications in a sandbox
across multiple servers. GAE is also highly scalable; as the amount of requests increase for an
application, App Engine automatically allocated additional resources to handle increased
demand.
Google App Engine is priced on a pay-per-use scale; total fees are incurred based on the
amount of resources used. The system is free up to a specific amount of resources, and fees are
measured in bytes and/or instance hours. Currently, GAE supports Python, Java, Go, and PHP.
Go and PHP are currently experimental and not fully featured. The App Engine features include
a 99.95% uptime service level agreement, bulk downloading, and additional assistance from
Google engineers for Premier Accounts [14].
Amazon Elastic Compute Cloud (EC2)
A comparable service to the GAE is Amazon EC2 (Elastic Compute Cloud), which
provides a similar infrastructure for scalable application deployment. App Engine is fairly
simple to use to create highly scalable applications, but lacks portability and can only run a
limited number of apps that are designed for the GAE infrastructure. It also automatically
handles deploying code, which keeps developers from having to worry about system
administration. Also, the current APIs only allow storage and retrieval from non-relational
databases, which means that many web applications that use relational databases will require
modification to run. It also uses a SQL-like language, GQL, to store data. However, it doesn’t
support JOIN statements due to inefficiency from spanning the tables across more than one
machine [15].
Figure 7: Example of an Amazon EC2 Connection (Google Images)
Amazon EC2 is another PaaS model which was released in 2006 where developers run
their own software and applications using a virtual machine known as an instance. The user can
initialize, execute, and terminate any instances as needed, hence “elastic.” While their cloud
infrastructure spans the globe, users can select a geographical area nearby to reduce latency and
redundancy [16]. Amazon EC2 also provides a type of storage service, Elastic Block Store
(EBS), which provides raw block devices that users can mount, format, and store data to. EC2
instances function as virtual private servers, each instance running its own operating system so
customers can have access to their entire instance at a superuser level.
AWS pricing model is not as straight-forward as some cloud service providers; Amazon
charges a certain fee based on the size of the instance being ran. Additional fees are tacked on
based on CPU usage, memory instances for compute clusters, and outbound data transfer rates
starting at the gigabyte level.
Google Compute Engine (GCE)
Figure 8: Example of GCE using Hadoop (Google Images)
Another type of cloud model, Google Compute Engine, is an Infrastructure-as-a-Service
cloud model that serves as a scalable VM for clients. The GCE infrastructure is part of Google’s
global cloud infrastructure that runs Google’s search engine, Gmail, YouTube, and several of
their other cloud services. Measured service is performed with a Google Compute Engine Unit
(GCEU). GCEU is an abstraction of computing resources; according to Google, 2.75 GCEUs
represent the minimum power of one logical core on a Sandy Bridge processor [17].
GCE usage is billed based on time, with the minimum charge being 10 minutes, and
charges accumulate every minute of usage. The rate at which it is billed is based upon the
machine type; Google uses several different types of machines that can handle various workloads
for different virtual computation needs.
Figure 9: VM Pricing model for GCE (Wikipedia)
Instances of resources are subdivided into several different categories based on the
resource type, such as image, disk, and network. Additionally, these resources are accessible
from different scopes: global, regional, or zonal. Based on where the user is running a virtual
machine, the scope of the resource determines what resources they will be able to access. For
example, a zone is an isolated location within a region (geographic location, e.g. central US or
Western Europe) that have high bandwidth and low latency. The zonal resources such as
instance, machine type, and disk will be specific to that zone. An address resource is only
available to certain regions, which means it is only accessible to the instances that are launched
in that region.
Microsoft Azure
Microsoft Azure is a cloud service hosted by Microsoft that serves both PaaS and IaaS. It
provides the standard functions of deploying applications and software using scalable cloud
computing along with virtual machines and computational computing associated with cloud
infrastructure. The features of Microsoft Azure include: website development using web
languages such as Node.js and PHP, virtual machines that run both Windows Server and Linux,
PaaS cloud services, SQL Database for scaling applications, and media services [18]. Azure
uses a specialized operating system to run its datacenters and manage computing resources to
applications that run on top of it. It also implements a Microsoft-owned hypervisor to manage its
VMs.
Figure 10: Azure Cloud Architecture (Google Images)
Microsoft Azure service pricing methods range from computational and data services to
application services and networking. General purpose instances are priced per hour, with
memory intensive instances incurring additional charges. Pricing for bandwidth and data storage
is very similar to other providers, with data prices increasing for each additional gigabyte and
pay-per-hour fees for virtual networks. Some Azure services also provide support and service
license agreements, such as Virtual Network.
Issues
Because cloud computing has become more and more popular, the recognition has also
shown some of the issues and vulnerabilities associated with cloud computing. One of the
largest issues in a cloud is security and privacy. Since cloud networks are entirely web-based
services, they are almost always vulnerable to cyber-attacks. Some providers have experienced
cyber-attacks on their cloud services first-hand, such as when Amazon was hit by an
unsuccessful attack on their cloud services [19]. However, most cloud systems have shown to be
very reliant against attacks and hacking attempts – an abundant amount of resources allows
clouds to keep performing even if a datacenter or group of datacenters is taken down. Still,
clouds are seen as information honeypots for cyber criminals, whose intents are to steal data and
make money off it by selling to other criminal organizations. Many banking companies use
cloud services as well, which means it is vital to keep cloud computing infrastructures and secure
as possible, while allowing developers and clients to perform their everyday IT functions.
Another issue that faces cloud developers is cloud compatibility. As described earlier,
cloud computing can be one of the most cost-effective and efficient option for companies and
organizations. However, many of their IT systems must be recreated from the ground up to be
compatible with the cloud. One way that developers can avoid this issue is by utilizing hybrid
cloud deployment models, so that they can instead segregate different components of their IT
infrastructure to different cloud models.
Yet another issue is the fact that a standardized method for developing cloud architecture
does not currently exist. Intercloud is still in its early infancy, and in order to be useful, service
providers will need to subscribe to the model by providing users a set quality of services.
Because cloud computing standards are immature, it’s very difficult for a client to be able to
recognize the quality of the services that they are receiving. A fallback for the client is to ensure
that the provider that they are purchasing the service from uses technology that complies to NIST
standards and uses cloud models that conform to the NIST definition of cloud computing [20].
Conclusion
To summarize, cloud computing offers a new set of services and technologies that had
never been available before the early 21st century, through the use of the World Wide Web.
Only recently in the past few years have service providers and standards organizations began to
start thinking about the importance of standardizing cloud computing technologies. In order for
cloud services to be beneficial for not only today’s companies and organizations, but for future
ones as well, cloud service providers will need to work together to create a cloud framework that
encourages interconnection and stability. Clients should be able to choose services that are
suited to their needs, whether it be infrastructure, platform, or software-oriented. Additionally,
the deployment models for these cloud services should match a standardized set of methods
introduced by standards organizations such as NIST so that clients can know everything about
the cloud service they will be using. In comparing the different implementations of current cloud
models, it’s clear there is no “one size fits all” cloud – there are many different advantages and
disadvantages associated with each different type of cloud service. The company that makes the
most constructive use of cloud resources is the one who compares different cloud models against
the types of services that they need and is flexible enough to branch different compartments of
their IT infrastructure into separate, but interconnected cloud services. Lastly, while clouds are
mostly resilient towards cyber-security attacks, service downtime, and compatibility issues, it’s
important that these and any other issues be addressed so that the cloud model can continue to be
updated. An updated and efficient cloud means that both clients and providers will be able to
take full advantage of a cloud computing system.
References
[1] Mell, Grance, “The NIST Definition of Cloud Computing,” Internet:
http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf, 2011.
[2] “Ajax Asynchronous JavaScript and XML,” Internet:
http://searchwindevelopment.techtarget.com/definition/Ajax, 2007.
[3] “Platform as a Service,” Internet: http://en.wikipedia.org/wiki/Platform_as_a_service,
2013.
[4] “About MobiDM,” Internet: http://www.mobidm.com/about-mobidm/mobile-platform-as-
a-service-mpaas/, 2014.
[5] “Compute Engine,” Internet: https://cloud.google.com/products/compute-engine/, 2014.
[6] “Security as a Service (SaaS),” Internet:
http://searchsecurity.techtarget.com/definition/Security-as-a-Service, 2010.
[7] “Is a Private Cloud Really More Secure?,” Internet: http://cloudandcompute.com/private-
cloud/private-cloud-more-secure/, 2014.
[8] “A Guide to Managing Private Clouds,” Internet:
http://www.datacenterknowledge.com/archives/2010/04/19/a-guide-to-managing-private-
clouds/, 2010.
[9] “Elastic Application Container: A Lightweight Approach for Cloud Resource
Provisioning,” Internet: http://www.datacenterknowledge.com/archives/2010/04/19/a-
guide-to-managing-private-clouds/, 2012.
[10] “Federal IT Shared Services Strategy,” Internet: http://cloud.cio.gov/document/federal-it-
shared-services-strategy, 2012.
[11] “Cloud Bursting,” Internet: http://searchcloudcomputing.techtarget.com/definition/cloud-
bursting, 2014.
[12] “Hybrid Management Tools and Strategies,” Internet:
http://searchcloudcomputing.techtarget.com/tip/Hybrid-cloud-management-tools-and-
strategies, 2012.
[13] “Vint Cerf: Despite Its Age the Internet is Still Filled with Problems,” Internet:
http://readwrite.com/2009/02/15/vint_cerf_despite_its_age_the#awesm=~oCR0Eb6P1drO
cg, 2009
[14] “Google App Engine: Platform as a Service,” Internet:
https://developers.google.com/appengine/, 2014.
[15] “Campfire One: Introducing Google App Engine (pt. 3),” Internet:
https://www.youtube.com/watch?v=oG6Ac7d-Nx8, 2008.
[16] “Amazon Web Services adds ‘Resiliency’ to EC2 Compute Service.,” Internet:
http://www.cnet.com/news/amazon-web-services-adds-resiliency-to-ec2-compute-
service/, 2008.
[17] “Google Compute Engine: Virtual Machines at Google Scale,” Internet:
https://developers.google.com/compute/, 2014.
[18] “The Cloud for Modern Business,” Internet: http://azure.microsoft.com/en-us/, 2014.
[19] “WikiLeaks cables: Shell, Operation Payback and Assange for the Nobel Prize – as it
Happened,” Internet: http://www.theguardian.com/news/blog/2010/dec/09/wikileaks-us-
embassy-cables-live-updates, 2014.
[20] “The Risks Involved in Cloud Computing,” Internet:
http://mobiledevices.about.com/od/additionalresources/tp/The-Risks-Involved-In-Cloud-
Computing.htm, 2011.