Professional Documents
Culture Documents
Promotoren:
prof. Dr. Jan Broeckhove
Dr. Kurt Vanmechelen
Joris Roovers
List of Figures ii
List of Tables iv
Preface vi
Abstract 1
1 Introduction 2
1.1 Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 IaaS in Practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3 IaaS Cloud Markets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4 Problem Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5 Related work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.6 Thesis outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
i
4.2 Implementing Tags and Constraints . . . . . . . . . . . . . . . . . . . . 106
4.3 Implementation of the prototype . . . . . . . . . . . . . . . . . . . . . 113
5 Conclusion 117
5.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
5.2 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Appendices 121
ii
List of Figures
2.1 Evolution of the electricity spot price for 10th of February 2011 on
the European Energy Exchange. . . . . . . . . . . . . . . . . . . . . 38
2.2 Market actors in an commodity market . . . . . . . . . . . . . . . . 49
2.3 Market Settlement: On-demand Resources . . . . . . . . . . . . . . . 57
2.4 Market Settlement: Futures Resources . . . . . . . . . . . . . . . . . 57
2.5 Market Settlement: Reserved Resources . . . . . . . . . . . . . . . . 57
2.6 Market Settlement: Spot Resources . . . . . . . . . . . . . . . . . . . 58
iii
4.3 UML diagram of the webservices of a CRA-based IaaS market . . . 107
4.4 UML diagrams of a Tag and TagSet . . . . . . . . . . . . . . . . . . 107
4.5 UML diagrams of a ConstraintDescription and ContraintParameters
that specify a standard constraint . . . . . . . . . . . . . . . . . . . . 108
4.6 Using a constraint lookup service to determine constraint semantics 109
4.7 Implementing a standard constraint library using reflection . . . . . 110
4.8 Standardized tags in the standardized constraint library . . . . . . . 112
4.9 Implementation of custom constraints using webservices . . . . . . . 112
4.10 Prototype deployment . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.11 Screenshot of the resource specification user interface as offered by a
broker to a consumer . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.12 Screenshot of the user interface offered to administrators to monitor
and manage the market . . . . . . . . . . . . . . . . . . . . . . . . . 116
iv
List of Tables
3.1 Examples of additional constraints that are regularly used when de-
scribing IaaS resources. . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2 Bandwidth prices of different IaaS providers . . . . . . . . . . . . . . 78
3.3 Resources and services that are commonly charged separately by IaaS
providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.4 Provider specified table that defines the relations between usage and
price tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
v
Preface
The writing of a thesis is an essential part of the curriculum of the Master of Com-
puter Science programme at the University of Antwerp, as it fulfills the role of
demonstrating that the author is able to autonomously study and reason about a
complex scientific subject. The particular subject of this subject, “A Market De-
sign for IaaS Cloud Resources”, was chosen by me as I have always been intrigued
with the potential capabilities of cloud computing, as well as by the fact that I have
always had a strong interest in financial and commodity markets. To add a goal-
driven aspect to the thesis, I decided early on to focus on the design of market that
has concrete applicability in today’s IaaS ecosystem. In order to achieve this, an
incremental approach has been used; starting from abstract and simple models and
iteratively taking more complexity into account. The final result of this approach is
this thesis document and an accompanying prototype implementation.
vi
Abstract
In today’s world computers and the Internet have become an integral part of every-
day life and have introduced new ways of mass communication and collaboration
among people from across the globe. The latest iteration in the Internet ecosystem
has been the conception of Cloud Computing, a new service-oriented computing
paradigm that tries to realize the long-lived dream of a global utility-like computing
model by introducing the notion of on-demand, pay-what-you-use, elastic resources.
This thesis is an attempt to shed some light on this topic by investigating whether
it is feasible to design an open market for IaaS resources, as well as elaborate on
the structure of such an IaaS market by pinpointing its core components and mech-
anisms. This thesis spends particular attention to the Continuous Double Auction
(CDA) mechanism that is used in many commodity markets, and finds it unsuit-
able as a market mechanism in the current IaaS setting due to the complexity and
diversity of price models used by providers. To overcome this, a new market mecha-
nism called the Continous Reverse Auction (CRA) is introduced, which solves some
of these issues. In order to validate its practical applicability, some implementation
considerations about the CRA mechanism are made, and a prototype is implemented
that is able to cope with the heterogeneity of different real-world providers.
CHAPTER 1
Introduction
In today’s world computers and the Internet have become an integral part of every-
day life as they are used by millions of people at any given time. The vast online
network of computers that is the Internet, has introduced new ways of mass com-
munication and collaboration among people from across the globe. Although it is
only a few years ago that the Internet was just a collection of simple connected
webpages, the Internet of today is increasingly being defined by complex webap-
plications, social networks and online communities. From a user’s point of view,
the advantages of using such online tools are apparent: they are immediate, easily
accessible, location/time independent and social. Because of this, more and more
users are leaving desktop applications for what they are, and have started using
their online counterparts.
Both the trend of building and using applications on the web as well as the idea to
outsource certain IT tasks to web companies are today more commonly referred to as
Cloud Computing, a new service-oriented computing paradigm that can potentially
1.1. CLOUD COMPUTING 3
disrupt the way the computer industry has worked the last few decades.
The following sections will give a more detailed view of what cloud computing
is, by explaining some of the key concepts behind it and discuss some of its primary
benefits and challenges. Note that it is not the author’s intention to provide an
academic in-depth discussion about cloud computing, as this goes beyond the scope
of this thesis. Rather, the following section tries to outline the general ideas and
principles behind it in simple terms. For a more detailed introduction to cloud
computing, refer to [1] and [2]. Readers that are already familiar with the concepts
of cloud computing can safely skip to section 1.3.
In its most generic definition, cloud computing represents a new way of think-
ing about computer resources in which privately owned infrastructure and software
are replaced by publicly shared variants. In the cloud computing model, private
companies no longer own expensive servers, nor do they build complex proprietary
software. Instead of following this traditional model, companies now pay for specific
services that are offered by specialized IT vendors. This new service-oriented way
of handling computer resources is perhaps the most essential characteristic of cloud
computing. Besides this service orientation, service delivery through the Internet is
another fundamental property of cloud computing. In other words, in order to use
a cloud computing service, one must be connected to the Internet for as long as the
service is being used1 . The term cloud computing expresses this inherit requirement
by using the word cloud as a metaphor for the Internet.
it from other similar paradigms and general service oriented architectures. That
is, the ideas behind cloud computing try to materialize John McCarthy’s idea2 of
utility-computing by exhibiting some of the same properties that are characteristic
of existing utilities such as electricity, water, gas and telephony. More specifically,
there are 3 key aspects that define cloud computing.
On-demand access to resources
Cloud computing resources share the on-demand features of classic utilities. That
is, when using cloud computing solutions, users do not need plan far ahead for pro-
visioning reasons. Instead, they can quickly and dynamically acquire the resources
they need, for the time that they need them. The term on-demand also refers to
the fact that cloud computing resources are accessible from anywhere at anytime,
as the only real requirement to access resources is an internet connection.
Elasticity
When using cloud services, users are given the illusion of having an infinite amount
of computing resources at their disposal that can easily scale to meet their needs.
By giving users the possibility to quickly scale resources up or down, they have
the flexibility to align IT infrastructure and resources with their business needs in
near real-time. The main benefit of this is that companies no longer need to waste
capacity as they provision for peak loads, nor do they need to worry about losing
customers caused by underprovisioning, as illustrated in figure 1.1.
Figure 1.1: Difficulty of provisioning IT infrastructure. (a) Even if peak load can be
correctly anticipated, without elasticity, resources are wasted (shaded area) during
nonpeak times. (b) Potential revenue is sacrificed from users that are not served
(shaded area). Source: [1]
Metered usage
One of the main parallels between cloud computing and existing public utilities is
the payment system. When using a public utility, customers only need to pay for the
amount of resources they have used. Cloud computing suppliers try to adhere to this
model by only letting customers pay for the amount of computer resources that they
have used. This new payment methodology can potentially cause a dramatic shift
2
In 1961, John McCarthy was the first to express the idea that “one day computation may be
organized as a public utility”.
1.1. CLOUD COMPUTING 5
in the way computing resources are dealt with as with such a system, companies no
longer have to make upfront investments in infrastructure. Indeed, a shift to the pay-
what-you-use (or pay-per-use) model, incurs a shift from capital expenses (CAPEX)
to operational expenses (OPEX), which can have far reaching consequences in the
way companies look at and deal with information technology.
Using cloud computing solutions has some other interesting benefits in terms of
cost and flexibility. However, as there is no silver bullet, there are also some key
challenges that remain to be solved. Section 1.1.4 gives an overview of both these
additional benefits and the key challenges.
per provider, virtually all providers apply the pay-what-you-use model for these
services, charging their customers per used storage, bandwidth or time unit.
require only minimal or no development effort but usually offer very limited flexi-
bility. This makes them almost ideal for more widespread applications that handle
common tasks (e.g. email, accounting or human resource management) but less
attractive when more customization is desired. Integration with already existing
systems in particular can be very hard to achieve when using SaaS solutions. Note
that this does not necessarily mean that SaaS solutions are not mature enough, it
only means that SaaS products target a single, specific application. In between IaaS
and SaaS, PaaS often provides a good solution for companies that do want tighter
integration with existing applications or for companies that wish to use specific soft-
ware frameworks without wanting to worry about its deployment and maintenance.
Also, when no (solid) SaaS solution already exists, and there are no specific software
or hardware requirements, PaaS products are often the appropriate choice. Figure
1.2 shows how the different levels of abstraction of IaaS, PaaS and SaaS relate in an
onion model.
Figure 1.2: Onion representation of the cloud computing hierarchy. PaaS builds on
IaaS, while SaaS builds on both PaaS and IaaS.
it is also commonly used in private clouds. Tools such as Eucalyptus [5], Open-
Nebula [6] and VMWare’s vCloud [7] allow system adminstrators to manage such
a private virtualized datacenter by providing installation, monitoring, migration,
checkpointing and backup tools.
Although private clouds typically lack some of the advantages of public cloud
solutions (“infinite” scaling, economies of scale, etc.), they do give local users a flexi-
ble and agile infrastructure to run service workloads within their own administrative
domains. For many applications this can have clear benefits, as e.g. response times
can be much lower compared to public clouds (due to the locality) and security is
generally a lesser concern as the different parties on the cloud are from the same
organization and thus typically trusted.
When some of the public cloud features are wanted, while also benefiting of
these private cloud features, a so-called hybrid cloud can be set up that combines
the benefits from both.
Hybrid clouds
A hybrid cloud is a cloud environment that contains computing resources from both
private and public clouds. This can for example be done by setting up a virtual LAN
between private and public clouds so that from the user’s perspective it seems as if
the computing resources from the public cloud are part of the private cloud. The
use-case of (almost) transparently expanding in-house computing power with off-
premise capacity is certainly one of the core ideas behind hybrid clouds, as it allows
companies to add extra computing capacity on-demand. Perhaps more importantly
however, is the fact that such a hybrid model allows companies to keep using existing
in-house computing infrastructure, while also gaining some of the advantages of
public clouds. This effectively lets companies avoid having to lose existing (long-
term) investments, when switching to cloud computing solutions. Figure 1.3 gives
an overview of how hybrid clouds relate to private and public clouds.
The use of hybrid clouds can also has some interesting benefits in terms of
security. That is, when certain information requires high protection and security
standards, a company can choose to put the data and software that uses the data on
the private part of the hybrid cloud. By doing so, companies do not have to worry
about the additional security issues that public clouds introduce as they have full
control over the software that runs on the machines that contain the sensitive data.
Figure 1.3: Private, Public and Hybrid clouds (Based on image by Sam Johnston,
CC-BY-SA).
Security and certification One of the aspects cloud providers typically invest in
heavily, is security and certification. While security breaches are a risk and
have far reaching consequences for any company, cloud providers risk even
more as an exploit or bug in their software or infrastructure effectively makes
all the companies that use their services vulnerable. Because such failures
of security can lead to customer lawsuits and serious damage to a brand’s
image, cloud providers have a strong incentive to take security very seriously.
Consequently, investing a lot of time and money in security related processes
and certification (also non-security related certification) is a logical thing to
do for many cloud providers. This directly benefits all customers, as making
such heavy investments in security and certification might normally not have
been justifiable for all applications.
1.1. CLOUD COMPUTING 10
Although using cloud computing solutions has many advantages, there are still
challenges that need to be solved before cloud computing will become a mature
computing paradigm. A good overview of the current challenges that cloud comput-
ing solutions face is given by [1]. In order to be concise, only an overview of these
challenges is given here.
Data Lock-in The APIs of cloud computing services itself are still essentially pro-
prietary, and have not been subject of active standardization (although some
initiatives are on the way [11], most notably [12]). In other words, customers
cannot easily extract or export their data and programs from one provider to
run on another. Customer lock-in may be attractive from a cloud provider’s
viewpoint, but by locking users in, they are vulnerable to price increases, to
reliability problems, or even to providers going out of business.
1.1. CLOUD COMPUTING 11
Data Confidentiality and Auditability Most companies are not eager to move
their sensitive corporate data into the public cloud, as by doing so, they move
their data into what is essentially a public network. Consequently, by using
public clouds, companies expose their system to more attacks.
Currently however, most cloud providers give very little guarantees about the
safety of the data of their users. Related to this is the issue of the fact that
many nations set strict rules about moving customer data outside of national
borders (as would typically happen when migrating to a public cloud), or about
having the right to access all stored data (i.e. USA PATRIOT act).
Scalable Storage As many I/O resources (most notable the harddisk) are typically
a lot slower than their computation counterparts, a possible concern can be
whether the storage resources of cloud providers are able to scale along with the
computation resources. Without special purpose hard- and software, access to
storage systems can potentially become the system’s bottleneck.
Scaling Quickly The speed with which cloud providers are able to scale can be
very important to customers as in many scenarios they require that their appli-
cations can scale according to quickly changing real-time loads. The difficulty
(and opportunity) for providers is to be able to respond quickly to scaling
requests in order to save their customers’ money and income opportunities,
without violating service level agreements.
Reputation Fate Sharing Reputations do not virtualize well. One customers bad
behavior can affect the reputation of the cloud as a whole. For instance, black-
listing of a cloud provider’s IP address range by spam-prevention services may
limit other customers’ connectivity and thus which applications can effectively
be hosted.
1.2. IAAS IN PRACTICE 12
through the online AWS Management Console (webinterface). Once launched, users
can access their resources through SSH.
Before launching an instance, users need to make several choices that specify
the different characteristics of the instance. The most important choice perhaps, is
that of the instance type, as it specifies the hardware characteristics of the instance
that is chosen. Table 1.1 gives some examples of different instance types and their
characteristics; a complete overview can be found in [15]. Note the usage of the
EC2 Compute Unit (or ECU for short), which is a hardware agnostic indicator of
the processor’s speed. More information about how the ECU corresponds to various
CPU benchmark results can be found online at [16].
Besides specifying the instance types, users also have to choose from one of
several availability regions, which determines in which of Amazon’s datacenters the
requested resources will be allocated. Currently, Amazon allows users to choose
from 5 different regions from across the globe (US-west, US-east, EU-west, APAC-
Singapore, APAC-Tokyo).
When it comes to pricing, Amazon allows customers to choose from three differ-
ent price models. The most commonly used on-demand model, is the most flexible
price model that adheres most to the pay-what-you-use model as it allows users to
start using instances, stop them at any given time and only pay for the amount of
time (in whole hours) they have actually used the instances. For example, at the
1.2. IAAS IN PRACTICE 14
time of writing, the cost for a small instance in the EU-West region is $0.095/hour if
a Linux or UNIX based AMI is chosen and $0.12/hour if a Microsoft Windows-based
AMI is chosen. Similarly, the cost for a Double Extra Large High-Memory instance
is $1.14/hour for Linux/UNIX and $1.24 for Windows.
The reserved price model allows customers to get cheaper hourly prices with
guaranteed instance availability by making up-front commitments. That is, if users
choose to pay an upfront fee to reserve a certain instance for a whole year at once,
Amazon offers significant discounts on the hourly price for running that instance,
while also guaranteeing the availability of that instance for that year. In reality, an
upfront payment of $227.50 is required in case of a small instance. Afterwards the
hourly cost of running a Linux- or UNIX-based image on that instance will only
be $0.04, which is less than half of the hourly on-demand price. Similarly, when
reserving a Double Extra Large High-Memory reserved instance for whole year at
once (upfront cost: $2650), the hourly cost will effectively drop to $0.48 per hour,
which is only 42% of the hourly on-demand price. Indeed, when it is known up front
that instances will need to run for at long time at once, using reserved instances
can incur significant savings. Figure 1.4 shows that at the current prices a small
instance should at least run 4137 hours a year before using a reserved instance is
more interesting than using an on-demand instance.
Figure 1.4: Total costs of using a reserved small instance vs. using an on-demand
instance on Amazon’s EC2 platform
(EC2) also allows the allocation of so-called spot instances [17]. These instance
types are called so, because they adhere to the volatile pricing characteristics that are
typical of any spot market (see section 2.2.6 for more information on spot markets).
That is, the spot price of the EC2 spot instance is changed on an hourly basis,
according to the current load on EC2. When demand for a specific instance type is
low in a certain availability region, the spot price for that instance type will also be
low for that availability region. Consequently, when demand for an instance type
is high in a certain region, the spot price for that instance type will also be high
within that region.
Since querying the user after each spot price change (after each hour) to deter-
mine whether the user still agrees with the new spot price could potentially generate
a lot of unnecessary traffic, the user is asked to provide a maximum price for the in-
stance before it is started. The spot instance will then keep running until it is either
terminated by the user, or until the spot price exceeds the user specified maximum
price, at which point it is terminated by the EC2 service itself.
Since the spot price of an instance is usually much lower than its on-demand
price, users can potentially save a lot of money by using spot instances instead
of on-demand instances. However, there is always a certain level of uncertainty
about the availability of the spot instances (since the spot price might unexpectedly
peak above the chosen maximum price), which makes using them less interesting for
applications that need guaranteed uptime.
Figure 1.5 shows the the evolution of the spot price for the small instance in
EU-region between 18/01/11 and 23/01/11.
Figure 1.5: Amazon EC2 Spot price of the small instance in the EU-region between
18/01/11 and 23/01/11. Source: [18]
1.2. IAAS IN PRACTICE 16
Besides hourly costs associated with running instances, Amazon also charges
customers to transfer data in and out of their datacenters. Incoming data is priced at
$0.1/GB for all availability regions, while prices for outgoing datatransfer are similar
put depend on the region and the amount of data transfer per month ($0.15/GB for
the first 10 TB in the EU region).
In order to build more complete solutions, Amazon also offers additional services
that provide extra functionality to the EC2 platform at an additional cost.
Elastic Load Balancing Allows customers to balance the load of incoming request
over different instances.
Amazon Elastic Block Store Allows customers to work with block devices (hard-
disks) that can be swapped between different instances.
Details about the extra EC2 services and pricing can be found online [14] [19].
Amazon Simple Storage Service (S3)
The S3 service [20] is a storage service that allows users to store arbitrary data-
objects in so-called buckets that are identified by global unique identifiers. When
using this service, the developer can choose in which of the different availability
regions to create buckets and store data, giving him the freedom to optimize for
latency, minimize costs, or address regulatory requirements. Additionally, Amazon
provides authentication mechanisms that allows developers to ensure that data is
kept secure from unauthorized access. More specifically, objects and buckets can be
made private or public, and rights can be granted to specific users.
Access to the resources is through HTTP or Bitorrent, while the management
of the resources is done through webservices (again, Amazon also provides software
libraries, commandline tools and an online webinterface to do this). Notable is the
fact that Amazon guarantees an availability of 99.99% while guaranteeing a dura-
bility of 99.999999999%, by duplicating all objects over 2 separate facilities. Storing
a GB per month costs $0.14 in the EU-region (for the first 1000GB, afterwards the
price per GB slowly decreases), while $0.01 is paid per 1,000 management requests
(PUT, COPY, POST, LIST) and $0.01 per 10000 access requests (GET).
Amazon Simple Queue Service (SQS)
The SQS service [21] is a scalable hosted queue for storing messages up to 65KB of
text in any format. Such a message queue system can be used to build an automated
workflows in which certain components submit messages (workloads) to the queue
an other components process the messages (workload) by fetching them from the
1.2. IAAS IN PRACTICE 17
queue. Access to the queue is done through webservice calls (software libraries are
also provided). Similar to the S3 service, Amazon allows granular access control by
account, IP-address and time-of-day. A price of $0.01 is charged per 10000 queue
requests for all availibility regions. Additionally, $0.1 is charged per GB of inbound
traffic (into the queue) for all regions, while the prices for outbound traffic differ
depending on region and volume (as with EC2, $0.15/GB for the first 10 TB in the
EU region).
Amazon SimpleDB
The SimpleDB service [22] is a scalable and flexible non-relational data store in
which developers can store and query data items. The idea behind SimpleDB is
that developers only need to worry about accessing the database, and not about the
management of the database itself. In practice, this means that the service creates
and manages multiple geographically distributed replicas of the data automatically
to enable high availability and data durability. The service applies the pay-what-
you-use model by charging customers only for the compute and storage resources
actually consumed in serving their requests. In practice, customers pay $0.154 per
used SimpleDB machine hour3 in the EU region, with an additional $0.1 per inbound
GB and $0.15 per outbound GB for the first 10 TB. Also, $0.275 per GB per month
is charged for data that is actually stored in the database.
Other services
Besides these core services, Amazon also offers a variety of additional products and
services that allows customers to build complete solutions on the Amazon Webser-
vices platform more easily.
Note that some of the services that are provided by Amazon, such as SimpleDB,
RDS, SQS, SES, MapReduce and others should arguably be labeled as PaaS solu-
tions rather than IaaS solutions as those services provide significant abstractions
3
From the SimpleDB website [22]: “Amazon SimpleDB measures the machine utilization of each
request and charges based on the amount of machine capacity used to complete the particular
request (SELECT, GET, PUT, etc.), normalized to the hourly capacity of a circa 2007 1.7 GHz
Xeon processor”
1.2. IAAS IN PRACTICE 18
1.2.2 GoGrid
GoGrid [24] is an IaaS provider that offers services that are similar to that of Amazon
Web Services, albeit in a different form and under a slightly different price model.
At the time of writing, GoGrid offers four different infrastructure components [25].
Cloud Servers
The Cloud Servers service is a service very similar to Amazon’s EC2 service and
allows customers to allocate raw compute power by the specifying a server image
and size (similar to Amazon’s instance image and type). Additionally, the customer
needs to specify in which of GoGrid’s datacenters the server should be allocated
(US-West or US-East). The sizes of the servers are characterized by the amount
of memory, CPU cores and internal storage space they have. Table 1.2 shows the
currently available server sizes. Both standard Microsoft Windows and Linux images
are available, while images with more pre-installed software can be found on the
GoGrid Exchange [26]. Access to the cloud servers is through SSH (Linux) or
Table 1.2: GoGrid Cloud Server sizes. (*Windows Cloud Servers deployed with 16 GB
RAM are assigned 8 cores, Linux cloud servers with 16 GB of RAM have 16 cores.)
stronger up-front commitments are made (if customers pay for a whole month or
year at once), the effective RAM hour cost lays between $0.05 and $0.08. Note that
the price for Windows or Linux-based server images is the same (although some
additional costs apply for the usage of Microsoft SQL Server products). Concerning
bandwidth, $0.29 is paid per GB of outbound transfer if the on-demand model is
chosen, while this can as low as $0.07 per GB when a large upfront commitment is
made. Inbound data-transfer is free.
Dedicated Servers
Besides virtualized hardware, GoGrid also offers their customers access to dedicated
servers, if customers don’t want to run their applications on a multi-customer en-
vironment. Dedicated servers are offered in 3 sizes (standard, advanced and ultra),
offering 4 up to 8 CPU cores and 8 up to 24 GB of RAM. Each server also has
between 500GB and 1TB of RAID storage. Prices range from $300 up to $600 a
month, with extra licensing fees for Windows or Redhat based operating systems.
If an up-front payment for a year is made, customers get a 2-month discount.
A special feature of the Dedicated Servers service is the possibility to setup a
hybrid cloud infrastructure between dedicated servers and cloud servers, combining
the isolation and performance guarantees given by the dedicated servers with the
flexibility and scalability offered by on-demand cloud servers. A possible use-case
could be to run high-performance database servers on dedicated servers while using
cloud webservers that scale according to current demand on a website.
Cloud Storage
The GoGrid Cloud Storage service is a scalable and reliable file-level backup service
for cloud servers running in the GoGrid cloud. Access to the storage is provided
through a variety of protocols such as SCP, FTP, SAMBA/CIFS and RSYNC.
All cloud servers receive a free cloud storage tier that allows customers to save
up to 10GB a month at no additional charges. Once more than this 10GB of storage
is used, $0.15 will be charged per extra GB.
Although as with the Cloud Service service, an 100% uptime (with 10,000% re-
funds) guarantee is given by GoGrid, they do not provide any assurances concerning
backup, nor do they make further commitments in the case of permanent data loss.
Load Balancers
The GoGrid load balancer service is a service allows customers to balance incoming
connections to servers according to the Round Robin or Least Connect4 algorithms.
The Load Balancers service is provided at no additional charge as part of the cloud
server and dedicated server services.
Besides these four core infrastructure components, GoGrid also offers firewall
and content delivery services at additional charges. More information can be found
online [25].
4
The Least Connect algorithm sends incoming connections to the servers with the least amount
of load on them.
1.3. IAAS CLOUD MARKETS 20
The idea of having an electricity-like global computing grid that anyone can
access is however not new; it has been the core idea of what is known as Grid
computing [27] for quite some time. As grid computing has been the subject of
extensive research and as explaining the core differences with cloud computing has no
direct value to this thesis, it will not be discussed further here. A good comparison
between cloud and grid computing is given by [28] while the introduction of [2]
contains a good comparison between cloud, grid and cluster computing.
What is interesting in the context of this thesis however, is a more direct compar-
ison between electricity and cloud computing. To that end, a work by Nicolas Carr
provides valuable insight. In [29], Carr tells the story of the birth of the modern
electricity industry and reasons about the similarities and differences between the
revolution in the power industry and that of the computing industry. Specifically,
Carr emphasizes the analogies between the different problems and stages the power
industry had to go through in order to become a mature utility, and the difficulties
and stages the computing industry has gone through in the past and still has to go
through in order to characterized be as a true utility.
between IaaS clouds and electrical grids was constructed in Table 1.3.
From this table, it can be learned that most of the similarities between IaaS
clouds and the electrical grid are based on their core idea to deliver a commoditized
utility (electricity vs. compute cycles) through a unified network. That is, leveraging
large economies of scale in order to offer consumers a pay-what-you-use model that
allows for easy and virtually infinite scaling. By doing so, consumers no longer
need to worry about the underlying complexity of setting up and maintaining the
hardware that generates the utility.
The main differences between the electrical grid and IaaS clouds are derived
from the observation that the electricity industry is a far more mature industry
than the cloud computing industry. It is important to note that this immaturity
is not due to a lack of technological advancement, but rather due to the lack of
guaranteed high reliability and quality of service in the current cloud computing
industry. Other issues such as the absence of standardization, regulation or a market
on which providers and consumers can trade resources, also contribute to this. In
fact, most of the differences between IaaS clouds and electrical grids are strongly
related to the current challenges cloud computing faces (see section 1.1.4). As such,
if these challenges can be overcome, cloud computing will become more like a true
utility and consequently, the analogy between IaaS clouds and electrical grids will
become stronger. Of course, it is important not to take the analogy between IaaS
clouds and electrical grids to far as in the end they deliver utilities that address very
different use cases.
For most of the twentieth century, when consumers wanted to buy electrical
energy they had no choice but to buy it from the organization that held the monopoly
for the supply of electricity in their region. However, by the 1980s, economists
started arguing that such a model was no longer sustainable. It was argued that the
monopoly status of these organizations removed the incentive to operate efficiently
and encouraged unnecessary investments. Additionally, the economists argued that
the cost of mistakes made by private organizations should be not be passed on to
consumers, as is almost always the case in monopoly economies. In order to solve
this, economists suggested that the supply of electricity should become the object of
market discipline rather than being regulated by a monopoly or government body.
Table 1.3: Comparison of the electrical power grid with current IaaS clouds
1.3. IAAS CLOUD MARKETS 23
electricity market. As a result, the structure of the electricity market now has several
layers and levels, involves many different actors, and stimulates active competition
among its participants. To understand better how this market is exactly structured,
consider figure 1.6 which depicts a schematic overview of the most evolved form of
an open electricity market5 .
Figure 1.6: Retail competition model of electricity market based on model from [32].
Source: [31]
The most prominent feature of the diagram is the fact that 2 different sub-
markets are shown: a wholesale market between electricity generating companies
(gencos) and electricity retailers, and a retail market between consumers and retail-
ers. The existence of these separate markets is rather important as it indicates that
the companies that generate power do not need to be the same companies that sell
the power to consumers (although they regularly are). Implicitly, this also means
that it does not need to be case that the companies that distribute generated power
(so-called discos; which can be different companies than the gencos) to the consumers
are the same companies that are being paid for the delivered power. Indeed, in the
market model as shown here, it is possible that independent retailers lease power
lines from discos and sell electricity directly to consumers. Such a market situation
is particularly interesting for consumers as it gives them choice between different
retailers, allowing them to buy electricity from the retailer that is the cheapest in
their region or best fits their needs. Note that figure 1.6 also indicates that large
customers (such as companies that run factories) can buy their electricity directly on
5
Several less competitive (evolved) forms of electricity markets also exist. The discussion of such
markets is however outside the scope of this thesis. For more detailed information, see [32].
1.3. IAAS CLOUD MARKETS 24
the wholesale market, taking out the middle man and margin that retailers typically
take on the energy they resell.
To get the required power for their customers, retailers thus have to buy electric-
ity from the different generating companies through the wholesale market. Buying
of this electricity can be done through bilateral deals between the gencos and the
retailers, or through a managed market in which a third party takes part in the
deal-making process.
When a bilateral deal is made between a genco and a retailer, they typically
agree on a certain price per kilowatt-hour (KWh) that needs to be delivered by the
genco over a certain period of time. Retailers typically make several of such deals
with different gencos in order to acquire the power that they need in order to satisfy
their customers for a certain period. Note that these deals are entirely private; buyer
and seller are in principle the only parties that know that a trade has occurred.
This is different in a managed market, where a third party helps buyers and
sellers find each other more easily. In practice, this is typically done by letting both
buyers (retailers) and sellers (gencos) submit offers with a price and an amount they
wish to sell or buy to the third party which will then find (optimal) matches be-
tween all submitted offers. Using such a managed market system has the potential
advantages of being fair and optimal while guaranteeing anonymity among the mar-
ket participants (besides the involved buyer and seller, only the market itself knows
which deal occured).
As simple as the idea of retailers buying electricity from gencos and selling it
to consumers may sound, there is a specific issue that comes with this way of trad-
ing that deserves extra attention. That is, as the exact consumption behavior of
customers is typically very unpredictable, it is generally very difficult for retailers
to know up-front how much electricity they will exactly need for a given period,
making it thus impossible for them to trade the exact amount of electricity they
will need. Although heuristic-based techniques can help to make better consump-
tion predictions (for example, statistical analysis may yield expected consumption
for a given period), it is typically very hard to make accurate predictions on small
timescales such as a single hour or less. However, making accurate provisioning is
vital to retailers, as not being able to do so may lead to serious financial losses.
More specifically, in case of overprovisioning, a serious financial loss for the retailer
can be incurred as he will be unable to sell already paid for energy to consumers.
Underprovisioning on the other hand, might mean that certain customers are un-
serviced, risking loss of customers and potential penalties or law suites because of
breaking certain service level agreements.
Related to this is the fact that in many cases, it is very difficult for gencos to
quickly respond to requests for additional power as generating extra electricity might
require the startup of additional generators such as windturbines, hydroelectric- or
fossil-fuel plants and so on, which can be both expensive and time-consuming. Sim-
ilarly, shutting down generators might be time-consuming and may incur additional
1.3. IAAS CLOUD MARKETS 25
future costs when they need to be restarted. Also, as gencos and retailers make up
contracts up front, gencos will typically claim penalties when retailers want down-
scale contracts that were previously agreed upon.
As in reality, many gencos are also retailers, the provisioning problem becomes
more complex for them, as such retailers can both generate the electricity they
need to fulfill the demand of their customers, as well as buy and sell extra capacity
on the spot market. Producing and trading electricity can no longer be strictly
separated in such scenarios, as the most cost-efficient and profitable way of delivering
electricity becomes a combination of bilateral trading, spot market trading and in-
house electricity production.
In this IaaS market model, different IaaS providers sell IaaS resources to each
other and to retailers on the wholesale market, while retailers sell resources to con-
sumers on the retail market. Note that where the single electricity grid made it
possible for providers and retailers to resell electricity to each other in the case of
power markets, the Internet is now the main enabler of the IaaS market. The under-
lying idea of this is that for a whole range of IaaS applications, the actual location
1.3. IAAS CLOUD MARKETS 26
Figure 1.7: Retail IaaS market based on the electricity retail market.
of the physical server on which the resources are allocated is insignificant (and con-
sequently the actual provider that provides these resources is too), as long as the
consumer can access them with a reasonable quality of service6 .
Although the retail market and the wholesale market are depicted similarly in
Figure 1.7, it is important to note that they are actually of a different nature. That is,
as is the case in the electricity industry, the wholesale market should be considered as
a (managed) market on which actual complex trading processes take place between
providers, retailers and large consumers, while the retail market should be observed
as the ad-hoc market that is formed by the free choice that consumers have between
different retailers.
In this context, the function of the retailer can effectively be seen as that of
a broker that hides the complexity of the wholesale market from the consumer.
Consequently, it is clear that the existence of retailers (or retail market) is not a
necessity for an IaaS market to exist, as it is also possible that end consumers take
part in the (wholesale) market directly. As such, the fact whether the wholesale
markets trades only among providers and retailers (inter-provider trading) or also
among providers and (end) consumers is a question of scope that has only limited
influence on the design of the mechanisms that are used in that market. In a less
complex model, consumer and providers thus trade directly with each, without the
6
Of course due to issues surrounding data locality - in many cases programs need to run on a
location (machine) where specific data is present - the statement that any program can run anywhere
is not true in general. However, for a large number of applications that data can be transferred to
the destination along with the program itself. Applications that have more heavy data requirements
can use e.g. distributed file systems to share data both efficient and transparently.
1.4. PROBLEM STATEMENT 27
Although the successful introduction of an IaaS market system has the potential
to materialize the long-lived idea of a truly global computing utility, it is crucial
that this market will be an open market in which many providers and consumers
can participate. That is, only when a market exists that has a sufficiently low entry
barrier that brings together many different consumers and providers, will the price
of computing resources be subject to market discipline rather than being dictated
by hardware vendors or specific IaaS providers.
In order to come to such an open market, there is a need for a exchange markets
that allow different parties to trade more easily by abiding to a predefined set of clear
rules and mechanisms. Only by using such exchange markets will trading become
accessible, fair and transparent.
Actually designing and implementing such an exchange market for IaaS resources
is however no easy feat. The main difficulty with designing an IaaS exchange market
is the fact that the good that is being traded is inherently more complex than in
an other commodity markets such as the electricity market. More specifically, the
problem lies in the fact that the e.g. kilo-watt hour is a one-dimensional homoge-
neous unit, while typical IaaS resources are heterogeneous and multi-dimensional
(e.g. an instance types is characterized by the different hardware components it is
built of). As standardization of resources and APIs among IaaS providers is virtually
non-existent, defining which goods are being traded is non-trivial.
Additionally, in reality many providers use different allocation and price models
(all based on the pay-what-you-use model, but implemented differently) to charge
their customers. Bringing together these different models into a single IaaS exchange
market is not straightforward as it involves searching for a common denominator
between all these models.
The design of a trading language for IaaS resources,the IaaS exchange market
and particularly the exchange’s components and mechanisms are the core subjects
of this thesis, and are progressively discussed throughout the following chapters.
(a) Whether it is theoretically feasible to design an open exchange market for IaaS
cloud resources?
1.4. PROBLEM STATEMENT 28
(b) What would such an IaaS exchange market look like, what are its core compo-
nents and mechanisms?
(c) How can existing web service technology be used to implement such a market?
An other important aspect of the design of the market will be the choice of the
market mechanism that determines which provider offers are matched with which
consumer offers. As the matching mechanism effectively determines how consumers
and providers interact with each other, specifying how it this mechanism works
exactly is obviously very important.
The choice of this matching mechanism language is one of the factors that has
a profound impact on the definition on the bidding language that determines
how different market participants should specify their offers. As IaaS resources are
typically very heterogeneous, this bidding language should be powerful enough to
express that heterogeneity.
Once these theoretical questions have been addressed, focus will be given to the
third question that asks how these proposed ideas can actually be implemented. The
answer to this question will be given by the specification of a software design and
architecture of the market. To verify that this design can be put into practice,
a prototype implementation will also be build and briefly discussed.
As the goal of this thesis is to design an open market for IaaS resources in which
all providers and consumers can participate, the author believes that it is important
1.5. RELATED WORK 29
for the market design to be tailored to today’s IaaS cloud ecosystem to ensure its
real-world applicability. This effectively means that a number of abstractions and
generalizations of IaaS characteristics that are made in other work will not be applied
in this thesis. Doing so ensures that existing IaaS providers can easily take part in
the market. In other words, not forcing providers in a certain price, hardware
or allocation model is a key differentiator of this thesis from other work.
As will become clear in the remainder of this thesis, this choice has a significant
impact on actual market design.
Most of this work has however focused on grid economy management, utility-
driven scheduling and user value-driven resource allocation, while mostly ignoring
provider profit. However, in the cloud computing context, providers and provider
profit are first citizens. As such, not all ideas and principles from this previous work
are still applicable in the IaaS domain.
Some Grid Computing research that is closer related to the cloud computing
paradigm is given in work by Nicolas Dube and by the GridEcon project.
In [39], Nicolas Dube designs a market for grid computing resources based on the
continuous double auction mechanism. In his work, Dube develops a way to describe
heterogeneous computer resources, and describes how using so-called resource sets
in conjunction with a continuous double auction can be used to develop a market
model for grid computing. Dube also incorporates bidding strategies that lead to a
market equilibrium in his model by using an index-based price discovery mechanism.
The GridEcon project [40] [41] [42] was a “Sixth Framework Programme” Eu-
ropean Community funded project, that “explored the perceived economic barriers
to the adoption of grid and cloud computing”. In particular, the GridEcon project
worked out market matching mechanisms that determine which consumer can have
access to limited provider resources by using virtual machine scheduling algorithms.
A prototype of the proposed market architecture including the matching algorithms
can be found on the GridEcon website.
1.6. THESIS OUTLINE 30
Unrelated to grid computing is the recent launch of the Spotcloud platform [43]
by the US-based company Enomaly. Spotcloud is a spot market for cloud computing
resources that is built on Google’s App Engine which offers consumers “a secure
central platform for buying or selling unused cloud capacity based on location, cost
and quality”. Specifically, SpotCloud allows consumers to choose from a set of
hardware profiles and VM images that have been submitted by providers. Pricing
is determined by the providers and is fixed per appliance (hardware and VM) per
hour; this price also contains all extra costs such as bandwidth or storage costs. In
order to make profit, Enomaly takes a 30% cut from the profit of the providers.
This chapter provides some background information about markets in general, which
is needed to understand what the important aspects are when designing a market
for IaaS resources. To this end, different types of markets, auction models and the
typical components of a commodity market are briefly covered and related to the
design of an IaaS market. Also, a short outline of some desirable market properties
is provided. The goal is not to provide an in-depth analysis of each of these topics
as a lot of other work (such as [44]) already does that, but to outline the relevant
fundamental notions useful to computer scientists.
on at least one of its two sides. In other words, in a market, forces of demand and
supply are always present. Markets typically vary in size, location and type as well
as in the types of goods and services traded.
Many other formal and informal definitions of markets can be found in various
works [45] [46].
A practical way to classify markets, is by the way goods are traded. That is,
in some markets there are intermediates that help buyers and sellers trade good to
each other, while in some markets buyers and sellers trade directly with each other.
Markets in which intermediates have a prominent role are sometimes also referred to
as managed markets or exchange markets. When there is no such party involved, the
term over-the-counter (OTC) or bilateral trading is often used. Where a core aspect
of OTC trading is that no strict form-factor exists, exchanges are typically char-
acterized by transparent pricing, clear basic trading regulations and mechanisms,
and precise transaction costs and fees. Additionally, a typical exchange market in-
cludes mechanisms to determine the price of the traded item, to communicate price
information to its participants and to facilitate deals and transactions.
A third way to classify goods is by the types of good or services the market
2.2. FINANCIAL MARKETS 34
trades. The most well-known of these are the physical retail markets, such as local
farmers’ markets which are held in town squares on an ongoing or occasional basis.
These markets are characterized by their adhoc nature and the absence of strict
regulation. More regulated and structured are the so-called financial markets, which
is a group of markets that focus on trading either financial securities (such as stocks
and bonds), liquid assets or commodities through exchanges or OTC trading. As
the financial markets are widely considered to be the most mature and sophisticated
trading platforms, having a closer look at them can provide valuable insight. In
the following section, an overview of the most important financial markets is given
together with some considerations of how some ideas and principles of these markets
apply to the IaaS cloud market.
As can be seen in the table, stock markets are almost exclusively exchange mar-
kets; OTC trading is almost never used for stocks. The type of exchange mechanism
that is used is typically chosen by the exchange itself, and can thus be different for
each exchange. For example, the NYSE is an auction market that uses an open-
outcry double auction mechanism (see 2.3.5), while the NASDAQ is a dealer market.
market, and as in reality almost all large companies are enlisted on such a stock
market, it is essentially possible to extract aggregated information about a larger
set of companies at once. Doing so can give buyers and sellers a better idea of how
an industry or even an entire economy is doing. The means of doing this is through
a so-called market index, which shows how a set of publicly owned companies have
traded during a standard trading session in the stock market. By comparing the
value of the index against previous values, economists can get an idea how markets,
industries or economies are forming. Some well-known indices are shown in Table
2.2.
Index Aggregation
Dow Jones 30 large US-based companies
NASDAQ Composite Over 3000 component, mainly technology-
oriented companies
S&P 500 500 large US-based companies that trade
on NYSE or NASDAQ
Nikkei 225 225 large companies listed on the TSE
FTSE 100 100 most highly capitalized UK companies
listed on the LSE
Although stock markets and markets to trade IaaS resources seem to have little
in common, there is an important lesson that can be learned from the discussion of
stock markets in the context of this thesis. Namely that even a market that is as large
and mature as the stock market still exists of multiple exchanges that all use different
rules, auction types and have different specializations. In other words, even after
years of experience and change, markets still remain highly heterogeneous. As such,
expecting that a single exchange market will emerge on which all IaaS resources will
be traded is not realistic. Instead, it is more likely that through a combination of
research and commercial incentives, multiple IaaS exchange markets will emerge that
use different mechanisms, rules and practices. As the IaaS industry is particularly
heterogeneous (both in the resources that are offered as in the use of different price
and allocation models), there is certainly room for multiple IaaS exchange markets
that have different characteristics and specialties. Given these remarks, it is clear
that this thesis does not claim to search for or present the solution, but rather to
present a solution that is based on well-founded ideas and principles.
bond market because of its size and liquidity. (Similarly to the stock market, the
bond market can be divided in a primary and secondary market in which bonds are
issued for the the first time or re-traded among market participants). Contrary to
stock markets, most trading is done OTC in bond markets.
The primary goal of the global foreign exchange is to make international trade
easier, by allowing businesses to convert one currency to another. The current forex
market took shape during the early 1970s when countries gradually switched from
the fixed exchange rate system as defined by the Bretton Woods System2 to floating
exchange rates.
Rooting from the middle of the nineteenth century in the United States to trade
agricultural products, commodity markets have grown to become the largest of all
financial markets in terms of daily traded monetary volume. Trade can occur both
OTC or through market exchanges. Today about 30 major of such commodity
exchange markets exist, of which the Chicago Mercantile Exchange (CME) is prob-
ably the most well-known. Table 2.3 lists some other examples of large commodity
markets along with the products that are traded on these markets.
Although the term futures market is mostly used to refer to the stock, bond or
forex market, it can also be used to refer to any other market that exchanges con-
tracts that are to be fulfilled at some point in the future. For example, in commodity
markets, a futures contract refers to an agreement to buy or sell a specified volume
of a commodity for a fixed price at some point in the future. Clearly, the idea of fu-
2.2. FINANCIAL MARKETS 38
Figure 2.1: Evolution of the electricity spot price for 10th of February 2011 on the
European Energy Exchange. Time is represented on the horizontal axis, price on
the vertical axis. The bold black line represents the average price over 24 hours, the
red bold line the average price during peak hours (between 08.00h and 20.00h).
tures (and options) can also be applied to the IaaS context, where a futures contract
would involve now buying or selling a set of computational resources that are to be
used at some point in the future. By trading futures contracts, both IaaS providers
and consumers can make medium and longterm provisioning decisions more easily.
Examples of large spot markets are the forex spot market, in which traded cur-
rency needs to be delivered within 2 days, and various energy spot markets. As
already mentioned in the introductory chapter, in electricity spot markets, different
providers trade electricity on an hourly basis. Doing so allows them to cope with
the mismatch between their provisioned capacity and the capacity they actually
need. In many cases, it is cheaper to buy extra electricity from other providers
than to pay for the startup cost to power on an extra generator (also, depending on
the generator type, starting an extra generator might take a substantial amount of
time). Likewise, in many cases it is cheaper to keep producing electricity and to sell
overcapacity, than to shutdown a generator and risking to have to restart it again
within the next few hours (incurring the startup cost) [49].
Figure 2.1 shows the evolution of the electricity spot price of the 10th of February
2011 of the European Energy Exchange (EEX) [50] - the leading energy exchange
in Central Europe. On the graph, you can clearly see human behavioral patterns.
That is, the spot price is lower during night hours (when demand is lower), and has
peaks in the morning when most people wake up and during the early evening when
people arrive home from work.
In the IaaS cloud context, spot markets can also play an important role to deal
with short timespan volatility in demand and supply of computational resources.
Such a spot market can be global in nature, as by leveraging the fact that many
IaaS applications are essentially location and provider independent, it is possible to
(live) migrate applications according to where computational resources are currently
the cheapest. This can be done among consumers and providers, but also among
providers themselves (inter-provider trading) as is regularly done in the power in-
dustry. By doing so, providers can effectively cope with short-term shortages or
excesses of computational resources in their datacenters.
Note that the computational resources that are acquired on such a global spot
market do not necessarily need to follow the spot allocation model as introduced
by Amazon [17], in which resources are automatically deallocated if the spot price
exceeds a consumer specified maximum price. Also, as the heterogeneity between
different kind of computational resources is large, it will be difficult to specify a
single spot price (if not impossible, see section 3.2.1 for more information about the
problems with a single price component model for IaaS resources) for all types of re-
sources. Instead, it is more likely that in such a spot market, specific predefined sets
of resources (instance types) are traded as that greatly simplifies the introduction
of a single spot price.
The use case in which resources are traded in a spot like manner is however not
necessarily tight to the use of a single spot price. Indeed, when a price for a set of
2.3. AUCTION TYPES 40
computational resources is negotiated on the spot (that is, directly) and allocation
takes place directly afterwards, there are not that much fundamental differences
with spot markets that use a single spot price. As such it is reasonable to call any
IaaS market that adheres to the principles of direct allocation and demand/supply
based price volatility a type of spot market.
In reality, many variations on this basic auction form exists. Differences among
these auctions include time limits, minimum or maximum limits on bid prices, and
special rules for determining the winning bidder(s) and sale price(s). Also, partici-
pants in an auction may or may not know the identities or actions of other partic-
ipants. Depending on the auction, bidders may participate in person or remotely
using telecommunication or computer networks (telephone, Internet, etc.). In order
for the auctioneer (the entity that organizes the auction) to make profit, the seller
usually has to pay a commission that is either fixed or variable (e.g. based on a
percentage of the final sale price).
Below, the most prevalent auction types are discussed in more detail.
A bidding system in which all bids are public is typically referred to as an open
2.3. AUCTION TYPES 41
outcry auction, as historically bidders cried out their bids (this is still done in some
cases, but alternatives signaling such as raising a bidding paddle also exist).
This type of auction is primarily adopted when goods are to be auctioned quickly,
as completing the auction only requires a single bid. Additionally, the descending-
price structure of dutch auctions increases competition among bidders as it makes
acting fast a necessity.
When multiple units are being auctioned, the Vickrey auction generalizes to a
uniform price auction (see section 2.3.6) which is not incentive compatible. However,
a variation of the Vickrey auction - the Vickrey-Clarke-Groves (VCG) auction - exists
which remains incentive compatible for multi-unit auctions [53].
3
The process of discovering what the current market value for a certain good is, is called price
discovery and is discussed in more detail in section 2.5.4.
2.3. AUCTION TYPES 42
The reverse auction is primarily used in cases where considerable financial stakes
are involved, or when a lot of different providers are available. For example, the
reverse auction is commonly used to procure large service or construction contracts
in the private or public sector (such as road construction or factory maintenance).
Typically, a double auction uses time frames during which it accepts asks and
bids (e.g. an hour). At the end of such a time frame, a specific matching algorithm
(also called the clearing algorithm) is used to match asks with bids. Since finding
an optimal solution - that is, the matching that maximizes the allocative efficiency
(for more details about allocative efficiency, see section 2.4.1) - might be a very
time-consuming or even intractable task (the number of combinations between asks
and bids becomes rapidly very large), various heuristics are typically applied to find
a reasonable matching within acceptable time.
A common variant of the double auction, the continuous double auction (CDA),
uses such a heuristic to improve matching speed. In the CDA, a bid or ask is, when
possible, immediately matched to an existing ask or bid. If no matching bid or ask
exists, it is added to the pool of asks or bids that have not been matched yet so that
it can be matched at a later time. By matching each offer at the time it arrives,
the CDA avoids the combinatorial explosion that typically occurs at matching time.
Of course the downside of this, is that the CDA can only be maximum allocative
efficient for the incoming bid and ask at that moment in time while the regular double
2.3. AUCTION TYPES 43
auction can (theoretically) find a maximum allocative efficient matching under all
the offers that arrive in a time frame4 .
it is imperative that both buyers and sellers submit prices that are truthful to the
actual value they attach to the good they wish to sell or buy (a market is said to be
incentive compatible if its matching mechanism encourages this behavior, see section
2.4.3). Obviously, a market can only find the real maximal allocative efficient match
if it is given the real values participants attach to goods.
participants will only be able to maximize their own profit if they reveal their own
information truthfully. In most cases, this information pertains to the participant’s
valuation for the good. This means that participants cannot gain additional utility
by underbidding or overbidding. Note the subtlety in the fact that although in
many market mechanisms, under- or overbidding will change the outcome of a sale,
it might not actually benefit the participant that did the false bidding. For example,
if a buyer acquires a good by overbidding, he does not actually maximize his own
profit as the good itself does not have the same value as the value the buyer attaches
to the money he needed to buy the good (the buyer thus incurs negative utility).
Similarly, if a buyer is not able to get hold of a good because of underbidding,
opportunity loss occurs, as the buyer might have been able to increase his own
profit by bidding truthfully and possibly acquiring the good that was on sale.
to have a market mechanism that has all desirable properties. The fact that this is
so emphasizes that there cannot be a single (or multiple) ‘ideal’ market mechanism
or design that fits every situation. Instead, the choice of a certain mechanism is
inherently dependent on the context in which it is used, as that context dictates
which concessions are acceptable and which choices appropriate.
of these actors are the buyers and sellers that trade goods on the exchange. Buyers
are also referred to as consumers, while sellers are also called providers. Although
both terms can be used interchangeably, the terms ‘consumer’ and ‘provider’ lay
more weight on the consumption aspects of the buyers and sellers. Note that it does
not necessarily need to be the case that the seller is the same party that actually
provides the good that is being sold, nor does the buyer needs to be the party that
actually consumes the acquired good. Throughout the remainder of this thesis, the
terms ‘buyer’ and ‘seller’ might occasionally be mentioned, but most of the time the
terms ‘consumer’ and ‘provider’ will be used.
The market or exchange is most of the time also considered as a market actor.
If the exchange is auction-based, it is sometimes also referred to as the auctioneer.
Again, both terms can be used interchangeably. Throughout this thesis, the words
‘market’, ‘market mechanism’, ‘auction’, ‘auction mechanism’ and ‘exchange’ are
also used to denote the same entity. For clarity; this entity is the component that
accepts offers from consumers and providers and finds matches between them. Ad-
ditionally, this component may provide extra functionality such as price discovery
mechanisms (section 2.5.4) and contract enforcement (section 2.5.6).
The role of brokers
Although consumers and providers regularly take part in the market themselves, in
many situations they use also brokers to participate in their place. In this context
brokers are also called bidding-agents, as they place bids on behalf of providers
and consumers. The use of such bidding-agents can have many benefits for both
providers and consumers. Such a key benefit is that brokers can hide some (possibly
all) of the complexity of the market by translating specific requests and constraints
of consumers and providers to the market’s - possibly complex - bidding language
(section 2.5.2). Additionally, brokers can hide much of the different steps that
typically occur in a bidding process and only present the end-result to the consumer
or provider. Such a service can be especially helpful to consumers and providers when
electronic trading platforms are used that require complex hardware and software
setups to interact with. Examples include brokers that hide all complexity behind
simple user interfaces or implement certain bidding strategies in order to maximize
profit.
Another more general role of bidding-agents can be that of the retailer that
effectively hides the market from the consumer or provider. That is, a retailer sells
goods to consumers or buys goods from a provider using a custom price model (fixed
price per good, fixed part and variable price, etc.) that is apparently independent
from what is going on the market itself. Doing so is advantageous to the customer
(either consumer or provider) as using such a retailer effectively allows him to protect
himself against price fluctuations in the market.
Retailers make profit by leveraging the mid- to long-term differences between
the actual market price at which they buy or sells goods and the price they offer to
their customers. Note that the broker-retailer principle presented here is essentially
2.5. DESIGNING A COMMODITY MARKET 49
the same as in the retailer model used in the power industry as discussed in the
introduction (section 1.3.2).
Besides their roles as bidding-agents or retailers, brokers can also perform func-
tions on behalf of the market itself. For example, in order to reduce the complexity
of the market design and implementation, as well as to give market participants
the freedom to use multiple alternatives, the market may outsource functions such
as price discovery, contract enforcement and accounting to external broker parties.
Doing so has the advantage that the market becomes more self-contained and au-
tonomous as certain responsibilities are no longer part of it. In the case of electronic
trading platforms, this has the additional advantage that the platform becomes more
modular and the risk of introducing single points of failure is reduced.
Provider In the IaaS market, the IaaS providers are the organizations offering IaaS
resources for sale on the market. These will typically be virtualized instance-
like resources oriented towards computational use-cases. Other products such
as non-virtualized hardware and software, firewall or load balancing services
2.5. DESIGNING A COMMODITY MARKET 50
Consumer In the IaaS market, the consumer is the party that wants to lease com-
putational resources for a certain time. Possible use-cases for these resources
include hosting webapplications, performing (scientific) calculations (so-called
High Performance Computing (HPC) [58]), deploying development and test
environments and many others. Note that the role of the consumer can also
be taken by an IaaS provider that wishes to buy extra capacity from other
providers to cope with temporary capacity shortages. Such inter-provider
trading was already mentioned in the discussion of spot markets in section
2.2.6.
Market (exchange) In the IaaS cloud context, the role of the exchange is to match
IaaS resources offered by IaaS providers with requests for certain resources as
demanded by the consumers.
Broker The role of brokers in the IaaS market is very similar to that of the brokers
as depicted in Figure 2.2; they provide services that simplify market inter-
action for the consumers and providers. These include providing easy-to-use
front-ends, implementation of bidding strategies, protection against rapid price
fluctuations and others. Additionally, brokers can be used to provide market
related services such price discovery or any of the auxiliary services described
in section 2.5.6.
Note that up until now, it has been assumed that an offer cannot be split,
meaning that the volume specified in the bid or ask needs to be traded at once
at the specified price or not at all. However, many commodity markets allow for
so-called partial matches in which only a part of the original offer is matched, by
splitting offers into several sub offers. In such a case, the price that is part of the
offer specifies the unit price instead of the price of the whole volume. Of course,
variations in which multiple prices are given (one for the whole volume, one for a
single unit, one for x units, etc) can also be thought of. In such cases, the bidding
language will need to be adjusted to accommodate this functionality.
Importance of the unit definition in a commodity market
Strongly related to the specification of the bidding language is the specification of
the good under sale itself. An important aspect in this context is the specification
of the quantity of a good that is defined as a single unit. Doing so is an absolute
requirement as without it, trading of a certain volume of the good has no mean-
ing at all as different actors might use different unit sizes. In existing commodity
markets, these good units are therefore standardized. Examples include the oil bar-
rel (158.9873 liter), the ounce (when trading gold) and the wheat bushel (although
today replaced by standard weights).
2.5. DESIGNING A COMMODITY MARKET 52
Besides determining the quantity the unit represents, there should also be a
description of the properties and characteristics of the single unit of trade as in many
cases there exists substantial qualitative differences between different units. For
example, in the oil industry, a barrel of oil is categorized according to its crudeness5 .
Similar unit categorization exist for almost all commodities.
Although similar units of different categories are in many cases traded on different
markets (as is the case with oil), it is also possible to trade these units on the same
market, as long as the bidding language is expressive enough to denote the differences
between the units of different categories.
Without going into to much detail for now, it is apparent that in the context of
cloud computing, the definition of the IaaS unit will be far from straightforward as
the goods that are being traded on such a market will be a lot less homogeneous
than the goods that are traded on more classic commodity markets. Indeed, when
comparing different offers of different IaaS providers (see section 1.2), it is clear that
there exists considerable differences in both the resources that are being offered, as
well as in the way these resources are described. Additionally, extra information such
as the price for certain resources, the time that resources need to be allocated, extra
quality of service constraints or the time a certain offer is valid, should also be easily
describable. As such, a vital step in the design of any market for IaaS resources is
the specification of a clear bidding language that is able to express both the inherit
resource heterogeneity as well as any additional constraints and properties of an
offer. In the context of this thesis, this topic is revisited in detail in section 3.1.
Given that the auction mechanism determines when and how consumers and
providers can place offers, it is logical that it has a strong influence on the entire
bidding process, and consequently the bidding strategy that is used by consumers
and providers. Likewise, the auction mechanism has a large influence on the bidding
language as depending on this mechanism, the bidding language should to be able
to express the particularities of the bidding process. For example, when a Dutch
Auction is used (section 2.3.2), the bidding language only needs to be able to express
an ‘accept’, while in double auctions, the bidding language is far more complex as it
also needs to be able to express what the consumer or provider is exactly offering.
Pricing rule
The pricing rule is closely related to the allocation rule as it determines the price
that is to be paid by the buyer once an allocation is found. Sometimes, this pricing
rule is entirely determined by the allocation rule itself (as is the case in second-
price auctions), but with other allocation rules, it is possible to use different pricing
rules with the same allocation rule. For example, in double auctions many different
pricing rules can be used. The rather straightforward rule is to let the consumer
pay the provider the price he actually bid, while another rule might be to let the
consumer only pay the price that was asked by the provider. The first choice favors
the provider as he effectively receives all surplus that the consumer was willing to
pay above the provider’s requested price. The second choice than does the opposite;
it favors the consumer by not letting him pay for the surplus he was willing to pay
for the good. Note that this second pricing rule requires sealed bids, as making
bids public will heavily affect the consumers’ bidding strategy. That is, if consumers
know that they only need to pay for the price that is requested by the provider, they
will start overbidding to acquire a good knowing that they will not need to pay the
price they are actually bidding.
More complex pricing rules also exist. For example, some auctions use a pricing
rule that lets consumer and providers share the surplus. In such a case, the clearing
price p that needs to be paid by the consumer is equal to (a + b)/2 where a is the
provider’s ask price and b the consumer’s bid price. A generalization of this rule,
the so-called k-pricing rule parameterizes this rule with a parameter k by setting
the clearing price p to kb + (1 − k)a. Clearly, the basic case (all surplus is equally
split between both parties) is given by setting k = 0.5, while any k > 0.5 favors the
seller and any k < 0.5 favors the buyer.
The choice of the pricing rule has a large influence on both the bidding strategy
of the participants and the allocative efficiency of the market. More information
about the pricing rule in double auctions can be found in [59].
IaaS cloud market mechanism
Given the similarities between the power industry and IaaS clouds as indicated in
the introductory chapter, trying to design an IaaS cloud market using a double
2.5. DESIGNING A COMMODITY MARKET 54
The use of price discovery mechanisms has two distinct advantages. First of all,
it allows new buyers or sellers to discover the price at which the market is currently
clearing offers. For example, in a double auction, a good price discovery mechanism
allows consumers and providers to discover a price at which they are likely to buy
or sell goods. This can for example be the average price at which units are currently
being traded (in which case bidding a price that is higher than the average price
increases the buyer’s chances of actually making a trade, while lowering the price
decreases that chance; the opposite is true from the seller’s point of view).
a bidding strategy that optimizes their own profit or utility by choosing the moment
at which they buy or sell certain resources. Such a bidding strategy can be tailored
to short term periods, as well as medium to long term periods. For example, a short
term bidding strategy might describe the bidding behavior needed to quickly obtain
a large amount of a good for the lowest price possible, while a medium or long term
bidding strategy might involve deciding a which point in time to buy certain goods
by carefully monitoring the prices of past trades, and looking for patterns. A good
example of such a pattern can be found in electricity markets, in which the price
for a Kilowatt/hour is usually lower at night when general power usage is lower (see
Figure 2.1 in section 2.2.6). Consequently, it is cheaper to run non-critical operations
that consume substantial amounts of electricity at night than during the daytime6 .
When considering price discovery in an IaaS cloud context, it is clear that the
same remarks hold. Both the ability to get an idea of the price at which computa-
tional resources are traded for new providers and consumers as well as the possibility
for existing providers and consumers to make better provisioning decisions are valu-
able tools in the cloud computing setting. Note that this process of making good
provisioning decisions is however more complex in the IaaS cloud context, as opti-
mality is no longer only determined by the choice of provider or consumer and time,
but also by the choice of the resources itself. That is, by choosing different types
of resources (that is, different hardware or software components), different levels of
performance for different applications will be obtained. Additionally, by allocating
the same resources via different allocation models (such as on-demand, spot, future
or reserved - detailed in section 2.5.5), the price, performance and behavior for the
same set of resources during the same time period can be totally different. As such,
far more complex methods and heuristics will be needed to intelligently make the
aforementioned trade-off between price and received or delivered quality of service.
The discussion of such techniques is however beyond the scope of this thesis, and
will as such not be further considered.
The issue of price discovery itself is however an important topic in the context
of this thesis. However, due to the heterogeneity of the resources that are being
traded, giving a good indication of what certain computational resources or services
will actually cost at a given time is far from trivial and closely related to the market
mechanism and bidding language that are being used. Because of this, it is hard
to make more explicit statements about price discovery in an IaaS market without
first having a closer look at its matching mechanism and bidding language. As such,
exact considerations about the price discovery mechanism in the IaaS cloud market
are postponed until section 3.3.3, after the discussion of these other components.
6
Given that electricity providers pass this price reduction to their consumers, as is the case with
the well-known night-tariffs.
2.5. DESIGNING A COMMODITY MARKET 56
As the choice of the matching mechanism has a profound impact on almost every
other part of the market (such as the bidding language, bidding process, actors’
strategies and price discovery mechanism), it is clear that the choice of the delivery
time of the market is an important one.
In the IaaS cloud market, the situation is however a bit different. That is, as the
goods that are being traded are very heterogeneous in nature, the delivery time of
these goods can easily be considered as yet another characteristic that differentiates
it from other goods. When studying the different offers of IaaS providers, it can
be observed that this is exactly what is done in practice: different IaaS providers
offer computational resources to their customers and allow them to allocate these
resources using a variety of different models such as on-demand, spot or reserved.
When choosing a different allocation model, customers get the exact same resources,
but get different guarantees in terms of price and resource availability.
On-demand When using the on-demand model, resources are available immedi-
ately and can be used by a consumer for a non-specified amount of time.
Consumers are billed at a fixed rate per time-unit (hour, minute, ...). Figure
2.3 shows a timeline of how the on-demand model works.
Figure 2.3: On-demand resources, resources are allocated at a time t and stay allo-
cated for an indefinite length of time (until deallocated by the consumer).
Futures When using the futures model, resources are available for a specified point
in the future and for a specified amount of time. Consumers pay an up-front
fixed price. Figure 2.4 shows a timeline of how the futures model works.
Figure 2.4: Futures market timeline, resources are allocated from a time t + x until
t + y.
Reserved The reserved pricing model offered by many IaaS providers is a special
futures model that borrows principles from the on-demand model. Specifically,
in the reserved price model an upfront fixed price is paid to make sure resources
are available in a certain period, and additionally a (lowered) price is paid per
time-unit the resources are actually used. Figure 2.5 shows a timeline of how
the reserved model works.
Figure 2.5: Reserved market timeline, resources are reserved from time t until t + y
and allocated at various intervals (chosen by the consumer) within the specified
boundaries.
7
Note that this does not mean that IaaS resources with different delivery times must be traded
on a single market, it is just easier to do so in the context of IaaS markets.
2.5. DESIGNING A COMMODITY MARKET 58
Spot When using the spot model, the model as introduced by Amazon is used.
That is, consumers get access to resources immediately and specify a maximum
spot price. Every time-unit (hour, minute), the spot price is changed by the
provider. The consumer always pays the spot price for that time unit. As long
as the spot price is lower or equal than the maximum spot price specified by the
consumer, the resources will remain available. When the spot price is higher
than the spot price, the consumer should be either notified or the resources
should be released immediately (this can be a provider specific policy). Figure
2.6 shows a timeline of how the spot model works.
Figure 2.6: Spot market timeline, resources are allocated from a time t and stay
allocated until t + 3 when the spot price of the provider exceeds the maximum price
of the bid.
Money transfer service Service that allows two parties that do not entirely trust
each other to exchange money. Note that the function is different as that of
a bank as the service knows the details of the deal made by the market, and
can thus verify that the consumer has paid the right amount of money at the
right time. Additionally, the service can cope with different currencies.
Good delivery service Service that delivers the goods to the consumer at a pre-
determined time and place. Service is either paid for by the consumer of
provider, depending on market rules.
Contract enforcement service Service that verifies whether the quality of the
delivered good is adequate (e.g. purity of metal, crudeness of oil) and whether
the good was delivered in time and on the right location. It is quite common
that a mutually trusted third party (such as an government official or bailiff)
is used to do the actual verification.
this accurately, a trusted third party must be able to run a potentially large
number of tests and benchmarks at regular randomized intervals in such a way
that the results cannot be influenced by the consumer or provider. Putting
this into practice this is a rather difficult administrative and technical challenge
that requires advanced monitoring and analysis tools. Today, some companies
such CloudHarmony [16] and CloudSleuth [60] already provide rather detailed
analyses of the performance of well-known IaaS providers; integrating such
tools as broker services into the market has significant value and can be the
subject of future research.
After having discussed the importance of introducing a market for IaaS resources
in the first chapter, as well as given an overview of how such a market should be
built in the second chapter, it is now time to elaborate on the most critical parts
of the market, namely its bidding language and matching (auction) mechanism.
This chapter will start with the introduction of a Continuous Double Auction based
market for grid resources that was developed by Nicolas Dube in [39]. Once this
market model has been properly introduced, the author will point out some problems
this model faces in the cloud computing setting. Working from the particularities of
these problems, a new bidding language and market mechanism that is able to cope
with the specific issues of the IaaS ecosystem will be iteratively constructed.
The ratio behind the choice to start from an existing CDA model is twofold.
First of all, given the resemblances between the power industry and IaaS clouds as
discussed in section 1.3.1, using a double auction based market is a reasonable first
choice as this market mechanism is already being used in power markets. Indeed,
without studying the problem in more detail, it seems that once the appropriate
bidding language is introduced that can express the heterogeneity of IaaS resources,
the CDA mechanism is a viable market mechanism as it is able to quickly match
bids and asks of multiple providers and consumers.
A second reason to start from an existing market model is the fact that a market
design is something that needs to grow steadily and is not something that just
sprouts into the mind; this chapter starts from an existing solution before deviating
from it to reflect the iterative process the author went through while designing the
market model detailed throughout this chapter.
By the end of this chapter, a bidding language for cloud computing resources
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 61
will be proposed that uses so-called tag sets to describe resources and constraint sets
to specify consumer and provider constraints on these resources. Additionally, a
new auction mechanism called the Continuous Reverse Auction is introduced which
attempts to solve the problems of the Continuous Double Auction in the cloud
setting.
Dube’s market exists of a central market component that accepts bids from
consumers and asks from providers. As with every CDA, the market maintains two
queues, one for the bids and one for the asks. The queue containing the bids is
sorted by decreasing price, the queue containing the asks is sorted by increasing
price. When a new bid or ask comes in that cannot be matched against an existing
offer it is added to its according queue. A bid is matched against an ask if the
resource set attached to the bid that describes the requested computing resources
matches that of the ask, and if the price of the bid is higher or equal to that of the
ask. Similarly, an ask is matched against an existing (not previously matched) bid
if the resource set attached to the ask fulfills the bid’s resource requirements and
the price attached to the ask is lower than that of the bid.
The actual matching algorithm for an incoming bid works by iterating over the
queue containing the asks and trying to match each of the asks in the queue to the
new bid. Once a match is found, the mechanism removes the matching ask from
1
Dube’s price discovery mechanism will not be discussed in detail here; more information about
it can be found in [39].
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 62
its queue and notifies both parties (consumer and provider) that a match has been
found. Matching an incoming ask with an existing bid works similarly.
Although it might seem that so far, there are no apparent differences between
the classic continuous double auction as used in the power industry and Dube’s
version that was just described, the introduction of the resource sets do introduce a
significant change to the model. That is, rather than only comparing bids an asks
based on price, they are now also compared using the resource sets with which they
are both annotated. This adds algorithmic complexity to the matching process.
The key point is however, that in effect, Dube has extended the double auction
mechanism so that it can cope with very heterogeneous commodities. It is clear
that this change can have a significant impact on the characteristics of the double
auction, as optimal matching is no longer only determined by price, but also by the
optimality of resource set matching. To better understand how this change alters
the matching mechanism, the following section describes the resource sets in more
detail, by explaining how they are actually used to describe the different components
of a computational resource.
S = {x86proc arch , 2proc cores , 2.4proc clock , 4mem size , 16disk size } (3.1)
Obviously, the used unit as well as the type and domain of each of the items
in the set should be clearly defined. Dube does this by specifying a discrete, finite
domain set for each of the types of resources, along with the used unit (if applicable).
Some examples of such domain sets can be seen in 3.2.
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 63
Φproc arch = {x86, itanium, intel, amd, power, bleugene, sparc, nec}
Φproc clock = {1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0} (Ghz)
Φproc cores = {1, 2, 4, 6, 8, 16, 32}
Φproc L2 = {1, 2, 4, 6, 8, 12, 16} (MB)
Φmem size = {1, 2, 4, 6, 8, 16, 32, 64, 128, 256} (GB)
Φdisk size = {1, 2, 4, 6, 8, 16, 32, 64, 128, 256, 512, 768, 1024} (GB)
Φnet tech = {100T, GigE, 10GigE, IB SDR, IB DDR, Myrinet, NumaLink4}
Φnet bw = {10, 100, 1000, 2000} (MB/s)
(3.2)
The domains of these software packages and benchmarks also need to be defined,
as is done in 3.4.
Φsoft package = {BLAST 2.2.14, GROMACS 3.3.3, FLUENT 6.3, GLOBUS 4.0.6}
Φsoft driver = {OFED 1.2.5, InfiniPath 2.1}
Φproc linpack = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 96, 128} (GFlops)
Φproc specint = {20, 40, 60, 80, 100, 120, 140, 160, 180, 200} (2006, rate, base)
(3.4)
Intuitively, it is thus clear that 3.5 expresses that a requirement set matches a
component set if all items in the requirement set have a matching item in component
set. Consequently, a component set matches a requirement set if it contains a
matching item for each of the items in the requirement set. Note that a component
set can thus match a requirement set with less items in it, while requirement sets
can never match component sets that have fewer items.
Although matching bids and asks by matching their respective resource sets
as just described is computationally intensive (due to the possibly high number
of comparisons between item sets), the number of bids and asks that are actually
compared with each other should be relatively low due to the continuous nature of
the matching algorithm and the fact that the queues are sorted by price. The fact
that the auction is continuous guarantees that a single offer is matched immediately
when it arrives, compared to a regular double auction where all bids are compared
to all asks at the end of the offer submission period. The use of the sorted queues
on the other hand, ensures that once a match is found there is no need to search for
an other match since the found match will be maximally efficient (as discussed in
2.3.5).
When comparing IaaS resources against grid resources, there are besides hard-
ware and software constraints almost always additional constraints - such as price,
QoS and security constraints - that need to be taken into account. The fact that
this is the case is based on the observation that in the cloud computing setting these
additional constraints are first citizens, while they are far less prevalent in the grid
computing setting. While most existing compute grids still only offer publicly funded
best-effort services that are oriented towards scientific workloads, cloud computing
services aim to deliver general purpose, metered usage solutions with guaranteed
quality of service. This broader and more commercial view means that providers
and consumers consider a far larger and more complex set of criteria when specifying
a particular resource. The use of these extra criteria and requirements will become
even more pervasive with the advent of the so-called cloud 2.0, which promises to
offer value beyond the provision of raw hardware by focusing on delivering high per-
formance, highly available and secure computing infrastructure for business-critical
production applications [63].
In order to get a more concrete idea of some of these criteria, consider Table 3.1
which expresses them as constraints.
Other constraints, such as the Region and the Software version range constraints
are also difficult to express using Dube’s resource sets as the resource sets do not
provide the more elaborate matching semantics that are needed by those constraints.
In particular, to match a Region constraint, knowledge of geographical location is
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 66
Constraint Description
Quality of Service (SLAs)
Uptime Provider guaranteed hardware uptime.
Refund policies Policy used by the provider when SLAs are violated.
Delivered performance Actual delivered performance. May include many pa-
rameters: CPU performance (flops), memory perfor-
mance, disk performance.
Network performance Average and maximum access times (network delay),
available up and downstream bandwidth.
Price
Hourly price Price that is paid per hour for the resources.
Bandwidth price Price that is paid for the used bandwidth.
Future price Stability Provider guarantees about price future stability.
Historic price information Information about the price of the resource in the past.
Security
Resource access Supported methods to access resources (SSH, FTP,
Remote Desktop, etc.).
Certification Security certificates held the provider (e.g. SAS70).
Patch policy How fast (critical) patches in the provider’s manage-
ment software (e.g. VM management) are applied.
Misc
Region Geographical region in which the resources are lo-
cated.
Allocation model Whether on-demand, future, reserved or spot re-
sources are used.
Software version range Support for different versions of the same software
package.
API Software API used to access and manage resources.
Additional services Other optional services (firewall, load balancer, . . . )
Table 3.1: Examples of additional constraints that are regularly used when describ-
ing IaaS resources.
needed to know which regions are included or overlap with others. This kind of
matching is not supported by the resource sets. Similarly, the possibility to specify
a range of versions of a particular software suite (by either listing the supported
versions or by specifying a min and max version) cannot be done by Dube’s “exact
matching” or “comparative matching” semantics.
This lack of expressiveness in the matching mechanism of the resource sets be-
comes even more apparent when trying to combine different simple constraints into
new, more complex constraints. Such situations can for example occur when con-
sumers are willing to make compromises if the compensation is large enough. That
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 67
is, it is not unthinkable that a consumer is willing to accept lower uptime guaran-
tees if more interesting refund policies come with it. Similarly, customers might be
willing to pay higher prices if the resources they can acquire will be able to get the
job done faster. Expressing these kinds of constraints is just not possible using the
matching semantics of resource sets. Instead, in the case of a CDA, several different
bids that express these subtle trade-offs in requirements should be submitted to the
market. Note that doing so is typically problematic as the consumer only wishes to
match a single of all those bids. In other words, giving consumers a language that
is able to express complex constraints such as trade-offs between simple constraints
has substantial value as it gives them the ability to model their bids much closer to
their actual requirements, increasing the overall usefulness of the market.
Besides the fact that when using resource sets certain constraints cannot be
expressed, there is a potentially other important issue that is of a more practical
nature. That is, when using resource sets, a market is needed that has specific
knowledge about each of the types of resources that are used as it needs to know
how to match these resources, i.e. it needs to know the different matching semantics
of each of the resources. Although using such a mechanism was still feasible when
considering a fixed set of resources with fixed domain sets and only two types of
matching (that is, exact matching and comparative “greater than” matching); in a
situation where more and more complex constraints are used with complex matching
semantics, using such a system is no longer viable. Indeed, given the heterogeneity
of IaaS solutions today, using a matching mechanism in which the market must be
aware of all possible resources and constraints is not manageable nor future proof.
Instead, a bidding language is needed in which offers can be compared and matched
to each other without the market needing to have specific knowledge about each
of the constraints and resources that are part of the offers. The following section
introduces such a market-agnostic resource specification language by letting the
consumers and providers specify constraint matching semantics.
Finally, by splitting the values from the matching semantics, the specification of
complex constraints that can express constraints that span multiple resources (such
as the QoS or consumer trade-off constraints that were mentioned before) can be
introduced relatively easily.
T = [NT , AT ] (3.7)
The name NT of the tag can be any regular string3 , but has to be unique for
each type of tag and within a tag set (there can not be two tags with the same name
in the same tag set). The attributes AT associated with the tag (see 3.8) is a set of
key-value pairs.
AT = {(x, f (x))}
(3.8)
f : x ∈ string 7→ value
These attributes will typically contain the values that further characterize a
given tag. For example, in the case of a Disk tag (NT =“Disk”), the tag attributes
will contain both the unit in which the hard disk size is specified (typically GB)
as well as the actual size of the disk, i.e. [Disk, {(unit, GB), (value, 160)}].
Similarly, an OperatingSystem tag may contain both the name as well as the version
of an operating system, as in [OperatingSystem, {(name, Windows), (version,
7)}]. The values of attributes do not have to be singular values, they can also be of
a compound nature. That is, it is also possible that these values are lists or nested
tags. For example, if multiple operating systems are supported by a provider, he
can list them all as follows.
[SupportedOperatingSystems, {(list, {
[OperatingSystem, {(name, Windows), (version, 7)}],
[OperatingSystem, {(name, Ubuntu), (version, 11.04)}]}
)}]
The most apparent difference between the tag sets as defined here and Dube’s
resource sets is that using tag sets multiple properties (or attributes as they are
called here) can be under grouped under a single tag, allowing for a more hierarchical
approach to resource specification. A less visible difference is that tag sets in itself
have no significance during matching, they are just values that describe an offer. The
3
When implementing the tag, this can just be the string type provided by the programming
language of choice.
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 69
real matching semantics of tags are given by so-called constraint sets that accompany
tag sets.
These constraint sets contain constraints that define a certain matching restric-
tion on an offer. Formally, a constraint (3.9) is a function that defines such a
matching restriction on an offer O1 , by expressing restrictions between the tags of
O1 and the tags of an other offer O2 against which O1 is matched.
Given the generic definition in 3.9, it is clear that in practice the outcome of
a constraint function can be influenced by a large number of factors. To better
understand how constraints work in practice, consider a consumer specified memory
constraint as given by Algorithm 1.
Algorithm 1 MemoryConstraint(T S 1 , T S 2 )
T1 ← T S 1 [“Memory”];
T2 ← T S 2 [“Memory”];
if T1 6= null and T2 6= null then
if (AT1 [“unit”] = AT2 [“unit”]) and (AT1 [“value”] ≤ AT2 [“value”]) then
return true;
end if
end if
return false;
As already noted, a constraint function always takes two arguments: the tag set
(T S 1 ) that belongs to the same offer to which the constraint belongs and the tag
set (T S 2 ) that belongs to the offer against which the constraint is verified. The
Memory constraint works as follows. First, the Memory tag is looked for in both tag
sets. In practice, this can either be done by iterating over both sets and comparing
the names of each tag, or by using a hash table like structure to store tag sets that
maps tag names to tags, in which case a lookup can happen in a single step. If one
of both sets does not contain the Memory tag than the result of the constraint is
negative. If both tag sets do contain the Memory tag, the algorithm first compares
4
Certain providers apply restrictions on the countries of origin of their consumers. Most notably,
all US-based providers may not do business with consumers from a certain number of countries on
which the US government has set a trading restrictions.
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 70
the “unit” attributes to verify whether both tags are specified in the same unit, and
then checks whether “value” specified in T1 is less than or equal to that of T2 (note
that the efficiency remark concerning hash table lookup of attributes also applies
here). If this is the case, the result of the function is positive (the constraint is thus
fulfilled), in all other cases the result is negative.
In this example, the Memory constraint was used to define matching semantics.
Besides the Memory constraint, many other constraints obviously exist. Some of these
operations should be standardized by the market to avoid confusion among the mar-
ket participants, while others can remain consumer- or provider-specific. Examples
of constraints that should be standardized are simple hardware-related constraints
such as the Memory, Disk and CPUClock constraints. More complex standardized
constraints may include the aforementioned Region and SoftwareVersions con-
straints.
A good example of a situation where e.g. the consumer would want to specify
a custom constraint is the previously given case where a trade-off between resource
uptime and refund policy is required. A conceptual overview of how such a complex
constraint can be defined is given by Algorithm 2.
Algorithm 2 UptimeRefundConstraint(T S 1 , T S 2 )
Tu1 ← T S 1 [“uptime”];
Tr1 ← T S 1 [“refund”];
Tu2 ← T S 2 [“uptime”];
Tr2 ← T S 2 [“refund”];
if Tu1 6= null and Tr1 6= null and Tu2 6= null and Tr2 6= null then
delta ← 0
if Tu1 [“value”] > Tu2 [“value”] then
delta ← (Tu1 [“value”]− Tu2 [“value”])
end if
if Tr2 [“value”] ≥ (Tr1 [“value”] + delta * Tr1 [“compensation”]) then
return true;
end if
end if
return false;
Now, although up until now it may have seemed that verifying whether these
constraints are fulfilled or not is straightforward as it only involves applying the given
algorithms, in practice actually verifying the constraints is a bit more difficult. This
is primarily caused by the fact that in reality, the consumer and provider must have
a way to transfer the algorithm that embodies the constraint to the market. The
most obvious way to do this, is by allowing consumers and providers to run custom
code that can verify these constraints within the market. Despite the fact that the
action of running custom programming code on a remote location itself is relatively
straightforward using some software libraries, doing so introduces a whole new set
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 71
of technical challenges as this remote code must be verified to be safe prior to being
executed on the market. That is, in order to guarantee the market’s integrity, it
must be verified whether the consumer’s or provider’s code that verifies a constraint
does not contain malicious code. While introducing a system that actually does this
is certainly possible, there is also a way to avoid the technical hassle of having to
examine the code of each incoming constraint.
By giving the market a database of standard constraints for which it knows the
matching semantics and leaving the matching of non-standardized constraints to the
consumer and provider themselves, the technical difficulties that remote code intro-
duces are effectively avoided. In practice, such a system would work by letting the
consumers and providers specify the name of the constraint as part of the constraint
set when a standard constraint is used and specify the endpoint of a webservice
that can verify custom constraints in the other cases. Note that by doing this, the
market still remains agnostic of the matching semantics of resources themselves, as
the relation between a resource (tag) and its matching semantics is still determined
by the consumer or provider.
When elaborating on this idea of using a set of standard constraints for which
the market knows the matching semantics, it is interesting to introduce a set of
more generic constraints in order to maximize the number of constraints that can
be matched by the market itself. The idea being that such constraints should be
able to verify whether the properties in any given tag in both the provider and
consumer set have a certain relation. For example, having a constraint such as the
LessThan constraint as defined in Algorithm 3, allows consumers and providers to
express that the bid or ask against which their bid or ask is matched should have a
specific tag and that the value of a specific attribute in that tag should be less than
the value of the attribute with the same name in the same tag that accompanied
the bid or ask that specified the constraint. Other generic constraints such as the
GreaterThan, Equal, LessThanOrEqual and GreatThanOrEqual would have similar
semantics. Constraints such as the EqualAll constraint defined in Algorithm 4 could
similarly be used to express that two tags sets should both contain a certain tag and
that all attributes in the tag of the first set should have an attribute with the same
name and value in the tag of the second set5 .
To further indicate the usefulness of such constraints, consider the Resource con-
straint in Algorithm 5 which is a generalization of the Memory constraint of Algorithm
1 that can also be used to implement many other hardware related constraints (such
as Disk or CpuClock).
In order to express which tag is checked in a generic constraint, the notation
Constraint[Parameters...] (as in Resource[Memory] or Equal[AllocationType,
value]) will be used in the remainder of this thesis.
5
Note that this is different from requiring that both tags have the exact same attributes, as the
second tag might have more attributes than the first tag. Obviously, the market could also choose
to define the semantics to be so that both tags must have the exact same attributes.
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 72
The technicalities of how this system with standard and custom constraints (us-
ing web services) would work exactly go beyond the scope of this chapter, but will
be explained in detail in the next chapter, as part of the software architecture of the
IaaS market.
Figure 3.1: Overview of the Continuous Double Auction for IaaS Resources
From this figure it can be seen that the market process can be split in three
distinct phases. In the first phase, consumers submit bids and providers submit
asks to the market. The bidding language that is used to describe a consumer’s bid
and a provider’s ask is technically the same and can be represented as the following
5-tuple.
As noted before (in section 2.5.2), in order to determine which bids can be
matched with which asks, it is important that the market knows whether asks and
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 74
bids with a Volume larger than 1 can be split into several sub bids with smaller
volumes or not. Although this decision could be made market-wide (that is, a
decision is made whether splitting offers is allowed or not, and this decision applies
to all offers), using the tagsets it is also possible to let consumers and providers decide
for themselves whether they allow their offer to be split. Concretely, this is done
by adding the [Splittable, (value, x)] tag, which specifies that the number of
units of an offer that has to be matched at once must be a multiple of x. The fact
that this kind of consumer and provider specific behavior can be incorporated into
the market without needing to change the bidding language again demonstrates the
flexibility of the tag and constraint based approach.
The second phase that is shown in Figure 3.1, is the matching phase within the
market itself. For this, the sorted queue based matching mechanism that has been
described before is used. An incoming bid matches an existing ask in the price
ascending ask queue if the price of the incoming bid is higher than that of the ask
and if the constraints in the constraint sets of both the bid and ask are fulfilled (as
shown formally in 3.10 for a bid B and ask A).
If a match is found, the third phase of the market process is entered in which
the consumer and provider are notified of the found match. If no match is found,
the consumer’s bid is added to the bid queue that is sorted according to decreasing
price. The process for an incoming ask is completely analogous. If no match can
be found before the expiration date of an offer, it is automatically removed from
its queue. Whether the consumer or provider that submitted the offer is notified of
this or not is of little overall importance and can be considered an implementation
detail.
Consider a market with 4 different consumers and a single provider (that is, Ama-
zon), and let the bidding process proceed as follows.
In this ask, the hardware aspects of the small instance are described using
various tags (Memory, Disk, etc). Additionally, the provider also added a list
of supported operating systems, a list of supported AMIs (Amazon Machine
Image), a Splittable tag indicating that the ask can be split into single units,
a tag describing the region in which the resources are located, etc. Note among
these tags the use of the AllocationType tag to indicate that the resources are
offered according to the on-demand allocation model. Other values for this tag
could be Spot, Future or Reserved as discussed in section 2.5.5. When the
chosen allocation model is on-demand, future or reserved, the price specified
in the ask should be considered as a price that needs to be paid periodically
according to the time unit specified in the Time tag6 . When Spot is chosen, this
Time tag keeps it’s meaning as the periodical length of the time after which
the consumer needs to pay, but the price in the ask should be interpreted
as the current spot price rather than the price that needs to be paid every
time unit. As this price changes after each period, the ask’s expiration date
should consequently be set to expire after the passing of the current period. If
the provider wishes to offer spot resources for another period, he should then
resubmit the ask with an updated price.
As the price of this bid is lower than that of Amazon’s ask in the ask queue,
it is not matched and consequently added to the bid queue.
3. A consumer submits a bid with a price of $0.12 and some hardware constraints.
As the price of this bid is higher than that of the ask in the ask queue and both
provider and consumer constraints are fulfilled, this bid is matched against the
ask.
4. A consumer submits a bid with a price of $0.20 and the following tags and
constraints.
As this bids contains constraints on CpuClock and CpuCores tags that are not
present in Amazon’s ask, it can not be matched and will thus be added to the
bid queue.
As a side note, notice that the consumer is requesting specific processor hard-
ware here, which is not supported by most IaaS providers. That is, most of the
time, a high level of abstraction is made when it comes to processor power. By
using processor type agnostic units such as the ECU, cloud providers can hide
heterogeneity among there own infrastructure while at the same time allow
consumers to specify a processor based on its delivered performance rather
than on its specific hardware characteristics.
A few providers (such as Newservers [64] and CloudSigma [65]) do however
allow consumers to express more specific processor requirements.
3.1. CONTINUOUS DOUBLE AUCTION FOR IAAS RESOURCES 77
5. A consumer submits a bid with a price of $0.14 and the following tags and
constraints.
Although the offered price of this bid is higher than the price in Amazon’s ask
and the consumer constraints are all met, no match will occur. This is due
to the fact that this bid comes from someone from Libya, which means that
the ConsumerLocationExclusion constraint set by the provider will not be
fulfilled and consequently the bid and ask will cannot be matched with each
other.
After these bids and asks, the bid and ask queue are as follows.
Table 3.3: Resources and services that are commonly charged separately by IaaS
providers
model to charge their customers poses a real problem to the use of the CDA mech-
anism in the IaaS cloud setting, as the CDA model can only take into account a
single price. When looking at this problem for the first time, it might seem that
there is a rather simple solution to this problem. That is, letting consumers and
providers specify a price as part of their offer for the allocation of a set of resources
and letting them use constraints that define restrictions on the minimum or maxi-
mum price of the extra price components. For example, a consumer can specify that
he is offering to pay 10ct per hour for a certain set of resources and additionally
specify an OutboundBandwidthCost constraint that verifies that the price that he
specified in an OutboundBandwidthCost tag accompanying his bid is lower than that
of the provider. Analogous, a provider can specify that he is asking a price for a
set of resources and additionally specify a constraint that checks that the price in
the consumers tag is higher or actual to the price the provider wants for a GB of
outgoing bandwidth.
Although at first it thus may seem that using constraints that impose maximum
or minimum values solves the problem of the extra price components, it actually
does not. There are several reasons for this. First of all, it might be very difficult
for the consumer to determine what a realistic price is for each of the different cost
components (although this can probably be solved using some (advanced) price dis-
covery mechanisms). Related to this, is the fact that many consumers are probably
only interested in the total cost of using a set of resources, and not in the exact
allotment of all different price components.
Secondly, when a minimum or maximum price constraint is set, it is not entirely
clear what the actual unit-price for use of the particular resource or service should
be once a match is made. That is, should the price specified by the consumer be
used, the price specified by the provider, or is a more complex pricing rule needed?
Although this is in essence not really a problem, but rather a decision that needs
to be made, the fact that such decisions potentially need to be made on a per price
component and per provider basis does add more complexity to this method.
3.2. ISSUES WITH THE CDA MODEL FOR IAAS RESOURCES 80
The most important issue however, is the fact that when this kind of constraints
are used, the market can no longer guarantee optimal matches using the information
that is currently provided. This comes directly from the fact that minimum/maxi-
mum price constraints do not take the actual usage of the specific resource or feature
into account, only its unit price. To understand why this is an issue, consider Figure
3.2, which depicts the total cost of 2 instances7 (at different providers) that use an
increasing amount of bandwidth within a single hour. It is assumed that a fixed
hourly price of 10 ct is paid for instance A, while the fixed hourly price for instance
B is 13 ct. Additionally, the provider of instance A charges 10 ct per used GB of
network bandwidth, while the provider of instance B charges 7 ct per used GB. It
is intuitively clear, and shown on the graph, that when no bandwidth is used, using
instance A is the cheapest. However, when bandwidth is consumed, the difference
in total cost between instance A and B becomes smaller. If more than 1 GB is
consumed, using instance B will minimize total costs. Figure 3.3 shows the same
Figure 3.2: Graph showing the importance of taking into account the usage of
additional costs components. As long as less than 1 GB of data is transfered, using
instance A is the cheapest, otherwise using instance B is the cheapest.
result, but varies both the used time (in hours) and the used bandwidth (in GB).
7
The term instance in this context denotes a basic virtualized computing environment, in the
same way Amazon uses this term to denote the virtualized servers it offers on its EC2 platform.
3.2. ISSUES WITH THE CDA MODEL FOR IAAS RESOURCES 81
Obviously, the provider corresponding to the lowest plane for any time-bandwidth
combination is the cheapest.
It is clear that this example can be generalized to incorporate n providers and
m price components. Finding the cheapest provider for a specific set of usage values
is then the same as searching through n hyperplanes in an m + 1 dimensional space,
and finding the hyperplane that has the smallest cost value at the point defined by
the m given usage values.
Figure 3.3: Graph showing the importance of taking into account the usage of
additional costs components. Both time and bandwidth vary, the cheapest instance
for a given time and bandwidth combination is given by the lowest (smallest total
cost) plane.
In other words, figures 3.2 and 3.3 indicate that ordering bids and asks in queues
according to a single price-component as is done in the CDA-based market makes
no sense for IaaS resources as this ordering does not reflect the actual price that
will need to be paid or will be charged to make use of these resources. If a CDA
mechanism based on a single price component would still be used, it is destined to be
gamed by providers that advertise very low prices for that single price component,
but charge expensive prices for the actual use of resources. That is, in this mechanism
a provider might be ranked at the top of the ask queue by advertising an hourly
3.2. ISSUES WITH THE CDA MODEL FOR IAAS RESOURCES 82
price of $0.001 for a set of computational resources, while charging a whole dollar for
1 MB of network bandwidth. Almost surely, this makes it a very expensive provider
for a whole range of consumers compared to other providers that advertise a higher
hourly price. Consequently, this provider should be at the bottom of the ask queue
and not on top. Obviously, such an IaaS market that only incorporates a single-price
component system has limited applicability.
Usage and price tags
It is thus clear that if any IaaS market is to make acceptable matches, it needs to
have consumer usage data for all of the different price components as well as the
actual prices as determined by the providers. As such, it is imperative that con-
sumers specify their usage of different resources as part of their bid and providers
specify the different price components as part of their ask. Luckily, this can be
done rather easily using the previously introduced tag sets. For example, ex-
pressing that 3.6 GB of outgoing bandwidth will be needed is as easy as defining
[OutgoingBandwidthUsage, {(unit, GB), (value, 3.6)}] as part of the tagset
of a bid. Similarly, specifying that the price for that bandwidth is $0.10 per GB
is as easy as adding [OutgoingBandwidthPrice, {(unit, GB), (value, 0.10)}]
to the tagset of the ask.
Using these usage values and prices, it is theoretically possible for the market to
determine the actual price for the use of a given set of resources. However, it will turn
out that due to the heterogeneity of price models that are used by different providers,
actually determining this price is still unfeasible without more information about
how the different price components relate to each other. Before explaining this in
more detail, a remark concerning the importance of the accurateness of the consumer
specified usage values must be made. That is, as the choice of which consumer
is matched with which provider is determined by the total cost of using a set of
resources, it is clear that the accurateness of the values in the usage tags is crucial
as they directly influence the total cost for the use of these resources. However,
in reality, determining these usage values is not always that easy. To accurately
determine the bandwidth usage or the disk I/O behavior of a certain application,
advanced analysis is often necessary. As doing such analyses is time-consuming
and requires a certain expertise, many customers might not be able or willing to
determine accurate (or at least sensible) usage values. To solve this, brokers should
be used that benchmark certain applications or use-cases for consumers in order to
determine good usage values. Alternatively, brokers might help consumers estimate
these values based on the consumer’s use-case (e.g. small website, scientific CPU
intensive application, etc).
X
P (a, b) = v(T ) pA (T ) (3.11)
T ∈ (T S a ∪ T S b )
In this formula, the exact price P (a, b) for a certain bid b that is matched with
an ask a of provider A is determined by the weighted sum (according to the usage
of the consumer) of the different price components of the provider. The weights are
given by v(T ), which is defined to be the value of the usage-tag that is used by the
price-component for the resource specified by tag T . The term pA (T ) is then the
unit price specified by provider A for usage of the resource specified by tag T .
In practice, the formula in 3.11 would be translated to a combination of an
OutgoingBandwidthUsage tag with and OutgoingBandwidthPrice tag for network
bandwidth or to a combination of a TimeUsage with a TimePrice for a memory
resource (specified by a Memory tag). The total cost for a given bid is then determined
by the sum of all these different combinations8 .
As simple as the idea behind the formula in 3.11 might be, actually incorporat-
ing it into the market mechanism and specifically the market’s bidding language is
non-trivial. This comes from the fact that the relation between the usage tags and
the price tags must be specified by the provider as the market itself does not have
this provider-specific knowledge. The way of expressing this must be flexible enough
to allow providers to indicate which prices belong to which resource and usage tags
as well as indicate that certain combinations of tags only incur a single cost. For
example, when the consumer specifies a Memory tag and constraint, it should be
possible for the provider to indicate that the combination of the value in the con-
sumer’s TimeUsage tag and the value in the provider’s MemoryPrice determine the
actual cost of the memory. Similarly, a provider should have the means to indicate
that when when both CpuClock and Memory tags and constraints are present, the
consumer should only be charged once for both resources by using the values in the
consumer’s TimeUsage and the provider’s TimePrice tags.
Finally, note that it is very well possible that the usage is not specified in the
tags attached to the bid but that the matching ask imposes a standard usage. In
practice, this is particularly true when certain hardware resources are specified (e.g.:
Memory) but no usage tags (such as TimeUsage) are given (the usage function should
than return e.g. a single hour for those hardware constraints).
A possible way to define the relations between the usage tags that define v(T )
and the unit price tags that define pA (T ) is by using a table such as Table 3.4 that
specifies which resource tags should by measured by which consumer usage tags as
well as the unit and unit price that should be used to determine the actual price for
the given resources.
8
Note that the formula in 3.11 implicitly assumes that the usage unit in the usage and price
tags are the same (e.g. hour, MB, etc.). It is certainly also possible that only compatible units
are required (e.g. minutes in the usage tag and hours in the price tag), and that v(T ) and pA (T )
automatically convert between compatible units.
3.2. ISSUES WITH THE CDA MODEL FOR IAAS RESOURCES 84
Table 3.4: Provider specified table that defines the relations between usage and price
tags
Note that some resource types such as Memory and CpuClock are grouped to-
gether while other resources, such as LoadBalancing occur multiple times in the
table. By grouping the resources, providers can indicate that the consumer should
only be charged once for those resources. Similarly, by adding a resource multiple
times with different usage tags, the provider can indicate that certain resources in-
cur costs that are determined by multiple factors (in the case of the load balancing
service, both per hour and per in- or outgoing GB). Note that if a certain resource
is not specified in the table, no cost will taken into account for that resource. Also
note that there might be tags in the first column that are not really resources but
rather requirements that also incur a cost. For example, Table 3.4 indicates that
if an SLA tag is specified but no Memory, CpuClock, CpuCores or Disk tags, a cost
dependent on the TimeUsage tag will still be applied.
Although a solution using a model similar to 3.11 and the price table specified in
3.4 would probably work, such a solution is still flawed in two important ways. First
of all, it assumes that when certain tags are present in a bid, there are also constraints
specified in the same bid that enforce the use of these tags. More concretely, the
model assumes that when a Memory tag is present in a bid, the consumer should
automatically be charged for that (typically according to the TimeUsage tag), even
though it is perfectly possible that no Memory constraint is attached to the bid that
actually enforces any memory requirement. In order to solve this, a more complex
bidding language, based on a more evolved form of Table 3.4, should be introduced
that also takes into account the relation between tags and constraints.
A second, more problematic issue with the proposed price model is that it is
linear in nature as it makes a linear combination of the consumer’s usage values and
the provider’s price components. However, in reality many providers do not use such
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 85
a simple linear price model, but use more complex models to charge their customers.
For instance, many providers use stepped pricing rules in which consumers pay less
per unit if they buy more units9 . Besides such stepped prices, it is not unthinkable
that certain providers may wish to use more complex (non linear) functions or even
a piece of software code to determine their exact quotation for a given bid. A good
example of such a use case is given by NewServers [64], which provides 3 GB of free
outgoing bandwidth per hour, but charges $0.10 per additional GB. Expressing such
complex pricing rules that take several units into account can only be done using
programmed code.
Towards a flexible solution
The only real way of solving all price model related problems as well as the con-
straint enforcement issue is by letting providers run custom code - that determines
a quotation for each matching bid - within the market itself. However, one can ask
whether the term continuous double auction is still applicable in such case. In fact,
such a market mechanism looks more like a reverse auction (since each provider
provides a new quotation for each matching bid based on custom code) than it looks
like a double auction. When further exploring this idea, one can ask whether taking
the difficult step of allowing remote code to run within the market (which intro-
duces a lot of security issues that need to be taken care of) can not be replaced by
letting that code run on the providers itself, similar to how the problem of custom
constraint code was avoided by the use of web service calls as put forward in section
3.1.4.
Indeed, by contacting each provider and asking for a quotation for each incoming
bid, the market can determine exact prices for bids without needing to sacrifice price
model flexibility. The next section introduces a new market mechanism, called the
Continuous Reverse Auction, that does exactly that.
Figure 3.4: Schematic overview of the workings of the Continuous Reverse Auction
that consumers and providers specify prices for a predefined set of resources they
are requesting or offering. Instead, consumers submit requests to the market and
providers provide quotes for these requests through the market. Specifically, the
bidding process is started with a consumer submitting a request to the market. The
market will subsequently find the cheapest provider for that request by querying
a group of previously registered providers and ask them for a quote for the given
consumer request. Providers answer to this request by either sending a quote to the
market specifying the price they will charge to fulfill the request or by indicating
that they are unable to match the given request. After all providers have delivered
their quote, the market is able to select the cheapest of all the quotes and offer it as
a match to the consumer who can then either accept or decline the match.
Although the reasons why a quote-based approach for providers is used in the
CRA have been explained extensively, the reason why consumers no longer submit
prices in the CRA has not yet been covered. The rationale behind this choice stems
from the fact that in the CRA, it is no longer necessary for the consumer to do so.
To understand this, consider the reasons why a consumer does submit a price in the
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 87
CDA.
First of all, in the CDA, the price specified in a bid is used to determine which
provider asks need to be considered for matching and which do not. That is, the
price specified in a bid is in fact the maximum price the consumer is willing to
pay for the resources he is requesting. Any asks that are more expensive than the
price specified in the bid will not be considered when trying to match the bid, even
though it is very well possible that only those asks fulfill the necessary constraints.
By doing this, the market is able to match asks to bids more efficiently as it no
longer needs to perform computationally intensive constraint checks for asks that
are too expensive. In the CRA however, this is no longer an issue as the market
no longer needs to check provider constraints itself. As all quotes returned to the
market fulfill the consumer’s constraints per definition, there is no need for a price
to perform a selection among the provider offers.
A second, arguably more important, reason why a price is specified in a bid when
using the CDA is to create an ordering among consumers. That is, if a bid is not
matched immediately, it is placed in the bid queue according to descending price
(bids with lower prices are placed further down the queue) in order to be matched
at a later time. The reasoning behind this ordering is that consumers that are
willing to pay more for their resources should get preference above consumers that
are paying less as this increases the overall allocative efficiency. By first considering
the bids at the top of the queue when matching an incoming ask, this preference
is effectively created among the consumers. Concretely, this means that if two
consumers are requesting the same resources, the consumer that is willing to pay
most gets matched first as this is maximizes the overall profit. That is, by matching
with the consumer that specified the higher price, the provider will be able to get
more money for the resources and the consumer that attaches to most value to the
resources gets to actually allocate them.
However, in the IaaS ecosystem, this is no longer important as the principle of
“infinite provider capacity” leads to the fact that providers currently do not differ-
entiate among consumers, and will always serve both consumers at the same price.
As such, there is no need for a direct ordering between consumers, and consequently
the price specified as part of a bid is also no longer necessary. Section 3.3.5 makes
some further considerations about this in the context of allocative efficiency.
Also, observe that modifying the CRA model as to allow consumers to submit
prices to the market in order to preserve the surplus between the price a consumer
is willing to pay and the price the provider is asking, is not that difficult. Doing so
only involves letting the market check whether the consumer’s price is higher than
that of the cheapest provider and apply a certain pricing rule as to determine which
price will actually need to be paid by the consumer10 . Although there is currently no
direct need to implement this kind of matching due to the infinite capacity model,
it is theoretically not impossible that th view towards the infinite capacity model
will change in the future and that providers will increasingly start differentiating
among different consumers by using price and allocation models that follow demand
and supply more closely. The EC2 spot market is already a good example of such a
model within a single company. The further study of these kinds of market model
is an interesting subject for future research.
Relation to the Reverse Auction
As the name suggest, the Continuous Reverse Auction is based on principles of the
Reverse Auction. Although there consequently are a lot of resemblances between
both auction mechanisms, there are also some notable differences between them.
The main differences between the CRA and the regular RA can be found in the
facts that the CRA is a continuous auction and deals with multiple buyers, while
the RA is not continuous and also considers multiple sellers but only a single buyer.
As with the CDA, the word continuous in Continuous Reverse Auction refers to the
fact that the market tries to find a match immediately after a request is submitted,
as compared to a regular double auction in which matches are made in a specific
matching phase or a regular reverse auction in which multiple price request rounds
are used. In short, by using the word continuous in the name of the CRA, it is thus
implied that the CRA uses only a single price request round and that matches are
returned directly.
The reason why the CRA only uses a single price round is based on the observa-
tion that for virtually all requests such multiple price rounds are just not beneficial
as in the IaaS ecosystem providers are not interested in competing with each other
for every single consumer request. That is, assuming an IaaS market that will
have to match a very large number of requests at any given time (in the order of
thousands per hour or even minute), the matching of a single additional request is
financially insignificant compared to the total number of requests that are matched
by a provider; even if that specific request involves a considerable amount of money.
As such, from a providers point of view, trying to ‘win’ a single additional request is
just not effective. Instead, in order to make significant financial gains, the provider
should adjust its general matching strategy as to ‘win’ a whole range of similar re-
quests. How a provider can do this is briefly explained in section 3.3.3, which deals
with price discovery in the CRA.
Note that the insight that the multiple price rounds are no longer needed in the
10
Recall the pricing rule examples in section 2.5.3.
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 89
CRA is in fact derived from the reason why multiple rounds are needed in the regular
reverse auction. That is, in the normal RA, multiple price rounds are used because
large amounts of money are involved and only a single (typically special) good or
service is being bought by the consumer. Because of this, winning the auction
is crucial to providers in order to do any trading at all. In the IaaS ecosystem
however, the goods that are being bought are cheap and abundant (in other words,
commodities). If a provider is unable to win a particular request, nothing is lost,
as there are plenty of opportunities to do win requests in the future. As such, the
multiple price rounds as used by the RA are no longer needed as providers do not
need to compete over a single request in order to trade resources.
Of course, only using a single price request round also has some benefits in terms
keeping the system’s complexity limited. That is, there is no need for providers
to maintain state as each price request is independent from any previous request.
Additionally, as only a single message needs to be exchanged between the market
and providers for a match to occur, the load on the entire system is reduced, as well
as the time that is needed to find a match.
The bidding process of the CRA begins with a consumer that wants to allocate
a set of IaaS resources. In order to do so, the consumer submits a request to the
market. The bidding language that is used to specify this request, is based on the
tag and constraint sets that have been introduced before.
Once the request has arrived at the market, the market will send out a price
request to all registered providers, to which the providers respond with either a
negative answer meaning that they cannot match the request or with a quote that
specifies a price for the request.
Besides the Price, the quote also contains a Volume that indicates how many
units the provider can or is willing to match (this is only important if the consumer’s
request is splittable, that is, tagged with the Splittable tag). The Identifier in
the quote allows a consumer to actually allocate resources after a match has been
found on the market; it allows the consumer to proof the commitment a provider
made when it handed out a certain quote. How this works exactly is detailed in the
following chapter.
After all registered providers have returned a quote (or have replied that they
cannot match the request), the market returns the cheapest quote as a match to
the consumer. If bids can be split, the market can match different units of a con-
sumer’s request with different providers and return multiple matches. Naturally, this
matching occurs according to the quote prices specified by the providers (cheaper
providers are matched first). Algorithm 6 shows how the market could implement
such a matching procedure. In order to be concise, Algorithm 6 does not incorporate
splittable bids.
After the consumer has received the match (or multiple matches), he only needs
to confirm or decline this match to the market in order for the matching process to
complete.
Compound Requests
This section detailed the bidding language and process of the CRA mechanism.
Among other things, it defined which components are part of a consumer’s request.
However, the given definition implicitly assumes that the application for which the
consumer is submitting a request has a clear and single behavioral profile. This does
not necessarily need to be the case. That is, there exist several applications that
can be split in several distinct phases that each have different behavioral profiles
and resource requirements. A good example of such an application is a scientific
batch queue application in which a large amount of data is fetched in a first phase,
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 91
calculations occur in a second phase and results are reported back in a final phase.
In the CRA market, price discovery is in fact already built-in for consumers
as they have the possibility to request a quote from the market at any given time
without any further obligation. As such, both new as existing consumers can always
discover the price for any request and make decisions based on that.
The situation is a bit different for providers as they have no idea at which price
and rate certain resources are being traded except when they are the provider that
actually gets to trade the resources for a given request. The best providers can do
is get an estimation about which resources are in popular demand according to the
price requests they are receiving from the market.
In order to solve this lack of price discovery tools for providers, the CRA model is
extended with a billboard-like mechanism on which the market publishes anonymized
consumer accepted matches. This is done in real-time; after a match is found, it is
directly published on the billboard. Because of this real-time behavior, the billboard
effectively represents the current market situation. Whether the billboard contains
only the last match, or the last x matches is an implementation detail and does not
change its applicability. Figure 3.5 shows an updated design of the CRA that takes
the billboard into account.
Using the billboard, providers can analyze the anonymized matches and adjust
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 92
Figure 3.5: Price discovery in the CRA market using a billboard to publish
anonymized bids
their pricing strategy accordingly. For example, if a provider is able to learn from the
matches that the price of matches in a specific category of requests is consistently
lower than the price it is offering, it might be interesting for the provider to adjust
its strategy and lower its quote price in order to get more matches. Analogously, if a
provider learns from the billboard that it is the only provider that has matches for a
specific category of requests, it might be interesting for the provider to increase the
quote price for that category of requests, in order to increase its profit. This notion
that providers will adjust their strategy according to the prices of the matches they
observe on the billboard introduces a form of indirect competition among providers
which is desirable in terms of market dynamics. Section 3.3.5 briefly revisits this
idea in the context of allocative efficiency.
Decision Support Systems
Decision Support Systems (DSS) are computer-based information systems that sup-
ports business or organizational decision-making activities. In the context of markets
and resource allocation, such systems often make heavy use of available price discov-
ery techniques to determine optimal bidding strategies or trade-offs. As this involves
contacting the market (and through the market the providers) very frequently in case
of the CRA, the question whether the use of such systems put to much strain on
the market becomes very relevant. Although the CRA market mechanism itself
is computationally inexpensive, the amount of communication per request between
consumer, market and providers is considerable (see section 3.3.5). In order to relieve
some of the strain from the market, it can consequently be interesting to allow con-
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 93
sumers to have access to the billboard, so that they can do analysis on the matches
that are posted there. This would allow consumers to approximate the price of a
set of resources, based on e.g. the average or normalized price for these resources.
In other words, giving consumers a different way to do price discovery that puts no
additional burden on the market.
Note that doing this kind of analysis can become very complex as it involves
extracting price information from matches that rarely contain exactly the same
resources and usage values. Nonetheless, because of the potential benefits of doing
such analysis, its further study is an interesting topic for future research.
Assume that 3 providers (Amazon AWS, GoGrid, Rackspace [66]) are registered
with the market prior to the arrival of any request and consider the arrival of fol-
lowing requests.
1. A consumer submits a simple request to the market for that contains a Memory
constraint.
Request1 = [1, {
[Memory, {(unit, MB), (value, 1200)}],
[AllocationType, {(value, OnDemand)}],
[TimeUsage, {(value, 1), (unit, hour)}],
[Consumer, {(name, "John Smith"),
(location, "Paris, France, EU")}] },
{ Resource["Memory"], Equal["AllocationType", "value"],
EqualAll["TimeUsage"] }
]
After relaying this request to the providers, they will all respond with a quote
that contain the following prices11 .
In order to return these prices, the different providers first have to make sure
that they had an offer that actually matches all constraints that are specified
in the request. To do this, providers should model their own offers using the
11
In the following examples, prices are based on the actual prices of these providers on April 25th,
2011.
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 94
tag and constraint sets and match the requests against these offers by verifying
whether both the consumer’s and the provider’s constraints are satisfied. Note
that it is assumed here that providers understand the tags and constraints as
specified by the consumer. In reality this will only be the case if providers
and consumers share a set of common tags and constraints. The next chapter
(section 4.2 in particular) elaborates on how this sharing of tags and constraints
can be achieved.
Only when providers have determined whether they can match a request with a
certain offer, they should determine the actual price for that offer based on the
usage values specified in the consumer’s bid. Note that providers should specify
their quote in the same time unit as the time unit specified in the request. This
is enforced by the TimeUsage constraint in the consumer’s request. If no such
constraint is present, then the quotes returned by the provider are in fact
meaningless. As such, it is the consumer’s responsibility to make sure that
such a TimeUsage constraint is always present.
As was the case with the Time tag in the example of section 3.1.6, the mean-
ing of the TimeUsage tag should be interpreted differently according to the
AllocationType tag that is part of the same request as the TimeUsage tag.
That is, if the specified allocation type is on-demand or spot, the TimeUsage
tag should be interpreted as the size of a single time-frame, while in case of a
future allocation (or if no AllocationType tag is present), the TimeUsage tag
should be interpreted as the total time the resources are requested. In case the
allocation model is reserved, there will be a need for an additional tag (e.g.
ReservationTimeFrame) that specifies what the reservation timeframe is.
In case of Request1, the market will return Amazon’s quote to the consumer
as it has the lowest price. In reality, this quote corresponds to a small instance
with 1.7GB of RAM, 1 ECU and 160GB of hard disk space.
2. A consumer submits a more complex request to the market that contains some
hardware, software and bandwidth descriptions.
Request2 = [1, {
[Disk, {(unit, GB), (value, 80)}],
[Memory, {(unit, MB), (value, 2000)}],
[OperatingSystem, {(name, Windows), (version, Server 2008)}],
[OutgoingBandwidthUsage, {(unit, GB), (value, 3)}],
[AllocationType, {(value, OnDemand)}],
[TimeUsage, {(value, 1), (unit, hour)}],
[Consumer, {(name, "Jan Modaal"),
(location, "Brussels, Belgium, EU")}] },
{ Resource["Disk"], Resource["Memory"], EqualAll["TimeUsage"]
Equal["AllocationType", "value"], EqualAll["OperatingSystem"] }
]
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 95
As Rackspace offers the cheapest solution, the market will return that quote
to the consumer. In reality, this quote corresponds to a Windows 2008 Server
instance with 2GB of RAM, 4 virtual CPU cores and 80GB of hard disk space.
3. A consumer submits a request for a one-time allocation of 2 servers for a fixed
time (in other words, a Future request).
Request3 = [2, {
[Disk, {(unit, GB), (value, 500)}],
[Memory, {(unit, MB), (value, 12000)}],
[OutgoingBandwidthUsage, {(unit, GB), (value, 50)}],
[IncomingBandwidthUsage, {(unit, GB), (value, 10)}],
[AllocationType, {(value, Future)}],
[TimeUsage, {(value, 500), (unit, hour)}],
[StartTime, {(value, 15/06/11 14:00:00 UTC-2)}]
[Consumer, {(name, "Jan Modaal"),
(location, "Brussels, Belgium, EU")}] },
{ Resource["Disk"], Resource["Memory"],
EqualAll["AllocationType"],
Equal["StartTime", "value"], Equal["TimeUsage", "unit"]
GreaterThanEqual["TimeUsage", "value"] }
]
The market once again relays the request to the providers, of which only two
respond that they can match the request (GoGrid does not have an offer with
more than 8GB of RAM).
The fact that this is impossible, is a result of the “infinite capacity” model cloud
providers currently convey to their customers. In this model, computing capacity is
abundant and consequently direct competition for capacity among consumers does
not exist as there is plenty of capacity for all. In reality however, forces of demand
and supply do exist, and there are certainly times at which capacity is a lot scarcer
than at other times. In order to cope with this, while at the same time keeping
the illusion of infinity capacity, providers increasingly let their customers engage in
forms of indirect competition by increasing the price of their resources according to
demand. The Amazon EC2 spot market is a good example of this: it let’s consumers
specify a maximum price they are willing to pay for a certain set of resources, thereby
giving priority to consumers that are willing to pay higher prices.
By letting the consumer decide what the maximum price is at which he accepts
a certain match the CRA does in fact the same. As such, the CRA does have an
implicit mechanism that let’s providers differentiate among different consumers.
The use of this mechanism in itself does not make the market allocative effi-
cient on a short timeframe as no difference is made between consumers that accept
matches at the same point in time. However, this indirect competition between
consumers does give the market allocative efficient-like characteristics when viewed
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 97
over a longer period of time. That is, by the fact that in the CRA-based market
the price for a set of resources varies according to current demand, the market will
iteratively converge to a situation where scarcer resources are allotted to consumers
with higher valuations for those resources (as consumers with lower valuations will
no longer accept the proposed price for those resources). As such, given enough com-
petition among providers (which makes sure that the price for resources reflects their
demand), a CRA-based market will exhibit optimal-like matching characteristics.
Individual Rationality
In its essence the term Individual Rationality conveys the question whether taking
part in the market is the most rational choice for each of the markets participants. In
case of the CRA, this is certainly so for consumers as the CRA’s matching mechanism
guarantees that consumers get the lowest available price. Additionally, as consumers
can always decide to not accept a match, they are never forced to incur negative
utility.
The situation is a bit different from the provider’s point of view, as the CRA
introduces a form of increased competition among the providers by the use of the
billboard. In reality this will mean that large well-known providers (such as Amazon)
will have the least added value by joining a CRA-based market as doing so increases
competition among them and others. However, as these providers are large, they
typically enjoy better economies of scale than the smaller providers, meaning that
the cost of their resources should be lower than that of other providers, allowing
them to have larger profit margins for the resources they sell on the market.
The small providers will however also benefit from entering the market, as the
direct competition allows them to directly target a very large audience. This is
also true for providers that are specialized in particular IaaS solutions, as their
specialization usually allows them to offer their solutions at cheaper prices than
similar solutions from other non-specialized providers, meaning that they will be
able to ‘win’ most requests that fall under their specialization.
In any case, a provider does not gain negative utility by entering a CRA-based
market as he is never required to sell below the cost of production (or service). Note
that the fact that the provider might have to pay a fee to take part in the market
is ignored here. If a provider has to pay such a fee to take part in the market, he
might incur a negative utility (if this fee to take part in the market is larger than
the profit he makes from trading resources on the market). The same is obviously
true for consumers.
Incentive compatibility
As mentioned in section 2.4.3, a market is called incentive compatible if its match-
ing mechanism forces the participants to bid truthfully in order to maximize their
personal utility. When considering whether the CRA model is incentive compatible
or not, it is clear that little can be said regarding the consumers, as in the CRA
mechanism, consumers themselves do not submit prices. As the consumer is a price
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 98
taker in the CRA, he can never directly influence the price of his match. Also, as
the auction is continuous, the consumer cannot influence the price of his match by
taking the role of a provider and submitting shill bids to try and influence the price
of the other providers.
While there is not much to say about incentive compatibility for the consumers,
some remarks do hold for the providers. That is, as all providers have perfect infor-
mation about the price of the resources that are being traded due to the introduction
of the billboard and given that there is enough competition among providers, there
will be an incentive among providers to send quotes to the market that contain
prices that are close to the actual value the provider attaches to offered resources at
that moment. This comes from the fact that the only way a provider can increase
its chance to match certain resources is to decrease its price. As such, it seems
reasonable to suggest that in general providers will have a tendency to lower their
prices to the point at which they have reached their current marginal value. In such
a scenario, the actual price for a given set of resources on the market will exhibit
spot market behavior as it will reflect the current demand for those resources.
Budget Balanced
Recall that a market is called budget balanced if the party that organizes the market
does not have to add extra money to the market in order for a market clearing to
occur. When considering a CRA-based market, it is clear that it is budget balanced
as the consumer always pays to full costs that are asked by the provider when a match
is accepted. As such, the market never has to intervene to make sure that a trade is
financially balanced. However, the market does have the additional cost of having
to run the electronic trading platform. To cover these costs, any real-world market
will probably ask participants to pay a fee to take part in the market. Although
requesting a flat subscription based fee is surely possible, a more fair model is based
on the pay-what-you-use principles and charges participants based on the number
of interactions they have with the market. That is, consumers pay for each request
they make, while providers pay based on the number of price requests they receive
(and responses they send back). A more fine-grained model may charge participants
based on the number of web service or even HTTP (GET, POST) requests. Whether
the market is then weakly or strongly budget balanced is clearly dependent on the
exact details of the payment model and of no further importance here.
Computational Tractability
When considering the subject of computational tractability in the light of the Con-
tinuous Reverse Auction, it is intuitively clear that algorithmic complexity of the
matching mechanism itself is rather low as the only real task the market has to do
is determine which of the quotes for a specific request contains the lowest price. By
letting the providers determine whether they match a certain request as well as de-
termine the price for that specific request, the market has effectively distributed the
computational complexity that is inherent in the matching of the heterogeneous IaaS
resources. Furthermore, as no bids or asks need to be stored in queues as is the case
in the double auction, no state needs to be maintained between subsequent matches.
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 99
As such, parallelizing the market’s matching mechanism over different servers is pos-
sible, adding to attractiveness of the CRA mechanism from a computational point
of view.
A downside to the CRA, is that the amount of communication between all in-
volved actors will be larger than in other market mechanisms (particularly, the dou-
ble auction) as the market sends out price requests to all providers (which send back
replies) for each consumer request. Concretely, if there are n registered providers
that can all fulfill a certain consumer request, 2n + 3 messages will be needed for a
match to occur. That is:
• 1 initial request from the consumer to the market
• n price requests from the market to the providers
• n responses from the providers to the market
• 1 match message from the market to the consumer
• 1 match acceptance message from the consumer to the market
When comparing this to the Continuous Double Auction in which no additional
messages with providers need to be exchanged for an incoming consumer bid, it is
clear that the flexibility the CRA offers comes at a considerable communication cost.
In order to keep this cost manageable, providers might use brokers that have very
good connectivity to the market. However, in the end, it is of course the network
connectivity of the market itself that becomes the bottleneck. In order to cope
with this, a hierarchy of market components can be setup that each determine the
3.3. THE CONTINUOUS REVERSE AUCTION FOR IAAS RESOURCES 100
cheapest match and forward that to the their parent component. An overview of
how this could work is depicted in Figure 3.6.
Without going in further detail, it is clear that the car rental market exhibits
the same heterogeneity (both in the used price models as in the description of the
commodity) as the IaaS market. As such, using the CRA to trade rental cars seems
to be a viable option.
CHAPTER 4
Market Implementation
In order to give an idea of the involved complexity, this chapter focuses on the
previously introduced concepts of tag and constraint sets as well as the Continuous
Reverse Auction, and discusses how they can be implemented concretely. Further-
more, a prototype that was implemented as part of this thesis to show the real world
applicability of the CRA based market will be briefly discussed at the end of this
chapter.
the goals of this thesis is to design a market model for IaaS cloud resources that can
be used today, it is imperative that the chosen communication technology is mature
and in wide-spread use. Based on these requirements, the choice for a WSDL/SOAP
based web service architecture seems valid as web service technology was specifically
designed with these requirements in mind. As a discussion about the exact work-
ings and principles of this technology is outside the scope of this thesis, readers are
referred to [69] for more information about web services.
The core components of the market itself are the webservices that allow the
consumers to make requests and providers to register in order to respond to price
requests.
In practice however, it is important that some additional remarks are taken into
account. That is, the implementation of Listing 4.1 should be modified to contact
the different providers in parallel as this is obviously far more efficient. Additionally,
it is important that the market enforces some quality of service rules when query-
ing providers. Concretely, in order to guarantee that matches are found within a
considerable amount of time (that is, within the order of a few seconds at most)
the market requires the PriceRequestServices to answer requests within a certain
amount of time (e.g. 500 ms). If a specific PriceRequestService does not answer
within this timeframe, the market should be allowed to continue the matching pro-
cess without waiting for a response, effectively ignoring this service for the request in
question. When a PriceRequestService fails to meet the QoS constraints multiple
times, the market may apply more severe penalties. For example, it can decide to
only contact violating services for certain (randomly selected) consumer requests in
1
Actually, the code in Listing 4.1 is very similar to the code that is actually used in the prototype
that accompanies this thesis; the only noteworthy additions are a few JAX-WS annotations on some
interfaces and classes.
4.1. IMPLEMENTATION OF THE CONTINUOUS REVERSE AUCTION 104
order to lower the workload on that service. In extreme cases, the market may ban
the service entirely.
In this respect, the only service the market really can provide is passing a
provider- and match-specific identifier from the PriceRequestService to the con-
sumer once he accepts a match, so that the consumer can identify the accepted
match to the provider’s ExecutionService. Note that no further details on how a
consumer needs to do this are given here, as this is entirely provider specific. It is
possible that this process happens fully automatically through web service calls or
through brokers, or the consumer could manually provide the given identifier through
the provider’s website. The further issues in actually acquiring the resources (which
can involve authenticating, passing e.g. certificates or tokens, installing tools, etc.)
are not further discussed here.
The Billboard webservice should allow the market to publish anonymized matches.
Additionally, the operator of the Billboard webservice should also host a website
4.2. IMPLEMENTING TAGS AND CONSTRAINTS 106
Figure 4.2: Passing encrypted tickets between the PriceRequestService and the
ExecutionService via the consumer
An overview of all the operations of the different webservices can be seen in Figure
4.3, which shows them in UML representation. Note that the PriceRequestService
and ExecutionService parameters of the register() method of the Provider-
IaaSMarket represent descriptions (which contain among others, the WSDL loca-
tion) of actual deployments of these standardized services.
diagrams of the implementation of the Tag and TagSet in the Java programming
language.
As already mentioned before, the name of the tag can just be of the regular
string type of the language (in this case, the native java.lang.String type). The
tag attributes are easily implemented using associative array like structures, such as
Java’s java.util.Map. By using a HashMap, constant lookup times are guaranteed.
The implementation of the TagSet also uses the HashMap to have fast Tag lookup
within the TagSet.
the constraint (this can again be implemented with the use of associative arrays). Fig
4.5 shows an UML representation of how this can be done in the Java programming
language.
It is clear that multiple such services can exist, possibly specializing in different
categories of constraints. A good way to avoid constraint name clashes in the case of
multiple lookup services is by using the Reverse DNS naming convention as regularly
applied when using the Java programming language.
Figure 4.6 shows how the consumers and providers would interact with such a
lookup service. Note that the lookup table in the figure contains a column with an
expiration date for each given constraint name. This expiration date indicates how
long the given constraint definition is valid; that is, the date indicates until when the
semantics for a certain constraint name are guaranteed to be unchanged. Using this
expiration date, both consumers and providers can effectively cache the semantics
of constraints, drastically reducing the amount of communication between them
and the lookup service. It is clear that many constraints, such as the Resource-
Constraint or EqualityConstraint, are unlikely to change at all, and can thus
have expiration dates that lay several months in the future.
Since lookup services define a unique binding between the name and the meaning
of a constraint, it is important that lookup services are officially recognized and
accredited by a mutually trusted third party, as constraints are a core part of the
contract between provider and consumer when a match is accepted. This extra
4.2. IMPLEMENTING TAGS AND CONSTRAINTS 109
third party (which could be the market, the lookup service or another broker), can
then be trusted to objectively verify whether the contract is met by both parties or
not. This includes making sure the consumer has paid for the resources, as well as
verifying that provided resources actually meet the constraints that were specified
in the consumer’s request3 .
Note that the concept of the lookup service does not necessarily need to exist
as a webservice; as long as there is a way for providers and consumers to share the
semantics of particular constraints. In many cases it is thus sufficient that a provider
states the meaning of a certain constraint on his website. A good example of such a
constraint would be the ECUConstraint that can be used to model Elastic Compute
Units.
they can even use the software library to determine whether a given request matches
one of their offers or not.
Additionally, providing such a library will limit the proliferation of constraints
that have similar or the same semantics. The market should also embrace a default
lookup service that contains the definition of all the constraint operations in the
software library as a backup for customers and providers that do not have direct
access to the software library.
Using the reverse DNS naming convention that is used to identify constraints and
reflection it is easy to implement such a standard constraint library. Figure 4.7 shows
the class diagrams of the command pattern that could be used to implement such a
library in an elegant way. Specifically, the Constraint interface specifies a validate
method that is used at the provider side to actually validate the constraint. The
MyConstraint diagram represents a concrete constraint implementation (such as
the ResourceConstraint) that is provided as part of the library. When a consumer
specifies a constraint, he will specify the qualified name of the class that implements
the desired constraint as part of a ConstraintDescription that he attaches to his
request. This will make validating the constraint easy for the provider, as he then
only needs to create an instance of the specified constraint class using reflection, and
call the validate method on the resulting object, passing the consumers tags, the
tags used to model the provider’s offer and the constraint parameters as specified
by the consumer.
Listing 4.2 shows how a consumer would specify such a constraint as part of his
request specifically, while 4.3 shows the Java code that the provider can use to verify
whether the constraint is met.
Although using constraints with well specified semantics is the only real require-
ment for market participants, it is quite unlikely that many matches will occur if
the tags that consumers and providers use to model resources, requirements, services
and features are not standardized. That is, most (if not all) constraints require that
there are tags with specific names or attributes in the tag set that accompanies the
constraint. For example, when using the ResourceConstraint, a tag with a specific
name that has value and unit attributes is required in both the consumer and the
provider tag set in order for a match to occur.
To address this, lookup services should also define tags (names and associated
attributes) besides constraint semantics. The Reverse DNS convention can again be
used to avoid name clashes. The standard constraint library should also be extended
to include set of standard tags (and the default lookup service should consequently
also contain these tags). Figure 4.8 shows class diagrams of some of the tags that
are part of the standard library.
Implementing custom constraints
Besides the standardized constraints, consumers also have the possibility to specify
custom constraints that allow them to express specific matching behavior that is
not available as part of the standard library or in any of the lookup services. To
do this, the consumer should setup a webservice (or use a broker that does this for
him) that is able to check whether a given constraint is met given a tag set that was
4.2. IMPLEMENTING TAGS AND CONSTRAINTS 112
specified by the consumer and a tag set that describes a provider’s offer. Figure 4.9
shows how such a system would work.
Note that from an efficiency standpoint, it is more interesting that the provider
first verifies all standardized constraints as no time consuming webservice calls are
needed to check these constraints. When the provider finds out that one of the
standard constraints is violated (and that a specific offer can thus not be matched
with the consumer’s request), there is no longer a need to check the other constraints.
If it turns out that certain custom constraints are often used by consumers, it is
obviously beneficiary to add an implementation of the constraint directly to a lookup
service so that it can be downloaded by providers and consumers. Note however,
that there may be situations in which the verification of the constraint involves
the usage of proprietary code or contacting additional web services or databases.
Submitting such code to a lookup service may not be desirable or even possible. In
these cases, the use of the webservice-based custom constraint mechanism based is
an appropriate alternative.
were used. A real-world deployment was made on Amazon’s EC2 platform, using 4
small instances, as shown in figure 4.10.
4
Although implementing some of this functionality is actually non-trivial.
4.3. IMPLEMENTATION OF THE PROTOTYPE 115
Technology Explanation
Java EE The Java programming language was chosen due the
author’s personal experience and affinity with the lan-
guage. Furthermore, as Java is in widespread use, de-
ployment on different platforms is easy.
JAX-WS The JAX-WS library allows developers to expose reg-
ular Java classes as web services by adding a few an-
notations. JAX-WS effectively hides all complexity
involved with interpreting WSDL, as well as marshal-
ing SOAP messages.
Spring Framework The Spring framework provides developers with ex-
tensions for building web applications on top of the
Java EE platform more easily. Specifically, the Model-
View-Controller model, dependency injection library
and some of web service libraries were used in the pro-
totype.
HTML, CSS, JSP, JSTL Various technologies that can be used for the imple-
mentation of the representational aspect of websites.
JSP is the server-side technology that can bring to-
gether front-end markup and backend business logic.
Javascript Javascript (AJAX) allows asynchronous communica-
tion between a website front-end and backend, allow-
ing the server to interaction asynchronously with the
user when it is performing time-consuming tasks. This
is used in the prototype to notify the consumer of the
progress of the matching process.
EAR The Enterprise ARchive allows the deployment of mul-
tiple web services (packaged in Web ARchives) as a
single application. The prototype uses EARs to de-
ploy the various grouped web services as single appli-
cations.
Glassfish application server Java EE Application server used to host the different
EARs.
Conclusion
This final chapter summarizes the previous chapters and puts forward the core con-
cepts and idea that were introduced in this thesis. To finish, it puts forward some
future work and formulates a final conclusion.
5.1 Summary
This thesis started with an introduction to the topic of cloud computing which
is materializing the long-lived dream of a general-purpose utility-like computing
platform that can be accessed from anywhere at anytime. To do so, cloud computing
introduces core concepts from existing utilities such as quick on-demand provisioning
and the pay-what-you-use model to allow users to focus on their core activities while
leaving the task to build and maintain IT solutions to expert companies. During
the study of cloud computing in the first chapter of this thesis, it was established
that the most hardware oriented layer of cloud computing, offered by the so-called
Infrastructure-as-a-Service solutions, is the one that most resembles existing utilities;
power utilities in particular. From this observation it became apparent that in order
to have a genuine global computing utility, there is a need for an open market in
which consumers and providers, as well as providers among each other, have the
possibility to trade computing resources on an immediate basis. Although attempts
have recently been made to introduce such a market (most notably [43]), current
solutions are still in its infancy and require providers to fit strict service and price
models as well as implement specific APIs or use particular frameworks. Given
the simplicity and imposed restrictions of these products, the question still remains
whether it is feasible to create a truly open and accessible IaaS market. As such, the
core question of this thesis has consequently been how such an open market, that is
able to cope with the heterogeneity of the current IaaS landscape, can be built.
5.1. SUMMARY 118
In order to tackle this question appropriately, the second chapter looked further
into the principles behind market design. After looking into the different kinds
of markets, existing auction mechanisms as well as theoretically desirable market
properties were discussed. Towards the end of the second chapter, focus turned
to the design of commodity markets in particular; identifying core components,
functionality and responsibilities. During this discussion, special attention was given
to how these components and functionalities are applicable when designing an open
IaaS market.
In the third chapter the two most important of these components, the market’s
bidding language and matching mechanism, were discussed in further detail. To do
this, the author started from a Continuous Double Auction-based market for grid
computing resources introduced by Nicolas Dube in [39]. In Dube’s model, so-called
resource sets are used by consumers and providers to describe the hardware and
software components they require or offer. Based on the observation that in the
IaaS cloud computing setting, a more generic constraint mechanism is needed as
in the commercial cloud context many other factors such as price and quality of
service play a key role, the concepts of tag and constraint sets were introduced. By
using tag and constraint sets, both consumers and providers have the possibility
to express complex constraints on the resources they are requesting or offering.
This is achieved by separating the specification of a matching constraint on an
offer from the properties that characterize that offer. Specifically, so-called tags
that contain attributes (key-value pairs) are used to describe a given offer, while
additional constraint operations attached to the offer specify matching restrictions
based on these tags.
Using this new tag and constraint mechanism, a market based on the Continuous
Double Auction was presented. Although this CDA based market is simple and
elegant, studying it in more detail revealed that because of the heterogeneity of the
price models used by IaaS providers today, the CDA mechanism cannot be used
without making considerable assumptions and forcing providers in a tight service
and price model. As one of the goals of this thesis was to avoid forcing consumers
or providers to adhere to a strict set of rules (based on the observation that if
an IaaS market is to be successful, it needs to accommodate current practices), a
different solutions was needed. In the search for a solution, a new kind of auction
mechanism - the Continuous Reverse Auction (CRA) - was introduced, which applies
principles from the Reverse Auction to commodity markets by modifying its behavior
to cope with both multiple consumers and providers. By letting providers determine
themselves whether they wish to match a certain consumer bid, the CRA takes away
this computational intensive task from the market and allows providers to use custom
price models. Matching bids is greatly simplified by the use of the tag and constraint
sets that were introduced before.
The issue of price discovery is solved by the CRA by the non-obligatory char-
acter of the mechanism from a consumer point of view and by the introduction of
5.2. CONCLUSION 119
a billboard to allow providers to monitor prices for specific resources more closely.
When studying the Continuous Reverse Auction in more detail, it became clear that
the mechanism can also be used in other commodity markets that deal with com-
plex heterogeneous goods and price models. Also, from a first examination, it seems
that the CRA (partially) holds some desirable market properties such as individ-
ual rationality, maximum allocative efficiency, budget balance and computational
tractability. However, more in-depth work is needed to verify this.
The one but last chapter of this thesis dealt with the more practical side of
building an IaaS market, by considering how the previously introduced concepts can
be molded into a software architecture. It was explained that a lookup service will
be needed to easily share the semantics of tags and constraints among providers and
consumers. Additionally, it was argued that a software library containing a set of
standard tags and constraints is desirable for efficiency and consistency reasons. To
implement the market itself, it was pointed out that several different components are
needed. Interfaces for these components were defined and discussed in detail. Extra
attention was given to the (simple) implementation of the CRA matching algorithm
and to the issues concerning the lack of standardization in APIs to access acquired
resources.
To proof the real-world applicability of the tag and constraint sets as well as
the CRA based market, a web-service based prototype was implemented in the Java
programming language with the help of the Spring Library. In this prototype, the
offers and pricing models of different providers were implemented to show that the
proposed solutions are indeed capable of dealing with the heterogeneity of current
IaaS solutions.
5.2 Conclusion
Based on the previous summary, the main conclusion of this work is that it is possible
to design a market for IaaS Cloud resources. However, to deal with the heterogeneity
of the current IaaS landscape, a complex bidding language and market mechanism
is needed. To this end, this thesis argues that the (Continuous) Double Auction
lacks the possibility to deal with this heterogeneity and proposed the Continuous
Reverse Auction combined with a bidding language based on the concept of tag and
constraint sets as a solution.
Future work may include an in-depth study of the CRA mechanism to validate
its ideas and possible significance. To this extent, the use of simulations can prob-
ably provide valuable insights. Furthermore, the study of IaaS markets that are
oriented towards specific use-cases such as high-performance or scientific computing
can be interesting as in these use-cases many assumptions can be made. Dube’s
thesis already proved that given a simple price model in which only a single price
component needs to be taken into account, it is possible to create a CDA-based
5.2. CONCLUSION 120
market for grid resources. Based on this, the author believes that using constraint
sets, use-case specific CDA-based IaaS markets can be build in which the use of only
use a single price component is justifiable.
Additional future work may include the impact of allowing consumer to submit
prices to the CRA mechanism as discussed in section 3.3.1 and the research of ad-
vanced price discovery techniques as discussed in the section about Decision Support
Systems in the context of the CRA (section 3.3.3).
A.1 Software-as-a-Service
There are a plethora of SaaS applications on the Internet, ranging from personal
photo-sharing services such as SmugMug [71] to more enterprise oriented applica-
tions such as the HreForce [72] HRM application. In order to be brief, only 2
well-known SaaS suites are discussed here; a more complete listing of different SaaS
applications can be found online [73].
Google Sites Online tool to quickly build and integrate simple webpages.
Google Reader Web-based aggregator, capable of reading Atom and RSS feeds.
Users can choose to either make use of the Google-branded versions of these
applications that have advertisements, or choose to use custom branded versions
that are hosted by Google but can be tightly integrated into a corporate website.
A free tier with a limited amount of accounts and support exist for the corporate-
version of Google Apps, but is mainly focused on very small businesses. Larger
corporations pay $50 per user per year, and receive more storage, better security
and SLAs (99.9 percent uptime) for that price.
As of 2010, Google also has an Apps Marketplace [75] on which it allows inde-
pendent developers and software vendors to offer free or subscription-based online
applications that integrate with the Google Apps application suite.
A.1.2 Salesforce
Salesforce [76] is well-known for its online Customer Relationship Management
(CRM) products that include marketing, sales, analytics and service & support
applications.
Sales Cloud The Sales Cloud application provides a wide set of tools that allows
sales representatives to track customer profiles and account history, allows
them to manage marketing campaigns and track other information unique to
the representative’s company sales process.
Salesforce uses a subscription-based pricing model for all of its service that re-
quires customers to pay a certain fee per user per month. The exact prices depend
on the which of the different editions of the services is used; more expensive editions
offer more features and increased reliability and support. Details can be found online
[77].
A.2 Platform-as-a-Service
Although the number of SaaS products is seemingly endless, PaaS products are a
lot more scarce; only a handful large IT vendors offer mature PaaS solutions today.
Two of those, offered Google and Microsoft, are discussed here.
A.2. PLATFORM-AS-A-SERVICE 124
Google Web Toolkit Java-based development toolkit for building and optimizing
complex browser-based applications.
App Engine Memcache Fast, transient distributed storage for caching the results
of datastore queries and calculations.
App Engine URL Fetch Allows access to resources over the web, and to com-
municate with other hosts using the HTTP and HTTPS protocols.
App Engine Images The Images service lets applications transform and manip-
ulate image data in several formats.
App Engine Mail Allows App Engine applications to send email messages on be-
half of the app’s administrators, and on behalf of users with Google accounts.
App Engine XMPP Allows App Engine applications to send and receive instant
messages to and from users of XMPP-compatible instant message services.
Google provides a rather substantial free tier for App Engine usage (exact quotas
depend on the used services, details can be found online [79]), but once more than the
free quota is used, Google charges the prices according to the amount of bandwidth
used, data stored and CPU time used by their servers. Details can be found on the
AppEngine billing webpage [80].
applications. These services include advanced access control services, caching ser-
vices, messaging services and integration with the Microsoft Bizztalk server [83] that
provides Enterprise Application Integration (EAI) features. Additionally, applica-
tions can integrate with the SQL Azure Database service which is a cloud computing
oriented online database service based on Microsoft SQL Server technology [84]. On
an even higher level, Microsoft allows developers to integrate their applications with
some of the SaaS products Microsoft offers as part of their Windows Live brand,
which includes online photo, email, contact and office applications.
For billing, Microsoft uses a model that is similar to that of IaaS providers by
charging developers by the hour depending on the instance type they choose to run
the Windows Azure operating system on (see section 1.2). Additional charges for
bandwidth, storage and the usage of the AppFabric and SQL Azure services also
apply. Details can be found online [85].
APPENDIX B
Compound Requests
Besides the normal requests, the market should also have a mechanism that allows
for a different kind of request; the so-called compound request. The compound
request is a consumer request that is composed of several normal requests and can
be used in cases where the usage of the requested resources can be partitioned into
several distinct phases or stages. For example, it is quite common (especially with
scientific workloads) that the time used by cloud resources can be partitioned into
fetching input data, subsequently processing that input data, and finally writing
back the output data. Similarly, there are applications that only periodically need
to transfer a lot of data, while transmitting very few to no data at other moments.
This occurs most typically in scenarios where periodical backups are taken.
In other words, there are multiple applications that exhibit this behavior of
having different distinct workload profiles at different points in time. Although such
profiles are typically characterized by being either bandwidth- or compute-focused,
there are certainly different scenarios possible in which e.g. an application might
periodically need a lot of memory or CPU cycles to perform heavy tasks, while most
of the time only needing a fraction of those resources.
It is clear that by only using the normal requests that were defined before, ex-
pressing such behavior is impossible. However, giving consumers a mechanism to do
so, can have distinct advantages for both themselves as for the cloud providers sup-
plying the resources. To better understand this, consider an example of a scientific
workload that exists of 3 distinct stages:
1. Transfer 30 GB of raw data to the cloud.
2. Process data in the cloud. No simultaneous data-transfer (except for occasional
heart-beat message), at least 10 computing hours necessary on requested re-
sources.
127
The main difference with regular requests is however that the tagset may contain
tags that have attributes that itself are requests. By doing so, sub requests can
effectively be nested inside other requests, and constraints can be specified between
these sub requests as part of the ConstraintSet that is part of the top-level request.
Good examples of such constraints are for example a RequestDependency constraint
that specifies in which order the resources in the subrequests will have to be allocated
or a DataLocality constraint that specifies that the requests should fulfilled on a
single physical machine (or at least that the local data should be preserved between
switching between resources of sub requests).
To fully understand how this could be done, consider the the compound request
that specifies the previously mentioned three-phase application.
},
{ [Resource["Memory"], EqualAll["TimeUsage"]}
]
)
}
]},
{ RequestDependency["SubRequest2", "SubRequest1"],
RequestDependency["SubRequest3", "SubRequest2"],
DataLocality["SubRequest1", "SubRequest2"],
DataLocality["SubRequest2", "SubRequest3"]
}
]
Note that no allocation type has been specified in the different subrequests, which
means that the provider can decide itself which kind of resources to allocate (this can
even be Spot !)3 . The second request does contain a MinDuration request specifying
the minimum duration the consumer will be using the resources. As already noted,
the use of the RequestDependency and DataLocality ensure the desired behavior
of the resources once they are acquired.
Despite the fact that implementing compound request as part of the market is
not very difficult, there are some technical difficulties to support the different parts
(stages) of the compound request and the transition between them. Most impor-
tantly, it is not trivial for cloud providers to provide the possibility to dynamically
change the allocated resources (vertical scaling), or to only pay for transfered data
without needing to pay for other cloud resources (instances) that are storing the
transfered data. However, some providers are already making (significant) efforts
to allow for such increased flexibility. Indeed, certain cloud providers such as Ama-
zon and GoGrid are already offering cloud storage facilities (Amazon S3 [20] and
GoGrid Cloud Storage [86]) that allow customers to store data without needing to
run instances. Similarly, Amazon allows users to dynamically change instance types
by using Elastic Block Devices [87].
Of course, as was the case before, the market only acts as an intermediate be-
tween the consumer and provider. Actually giving the consumer access to the ac-
quired cloud resources, helping the consumer setting up his requested environment
and coordination the transition between the different stages is an different matter
entirely, and should be handled by separate broker services. Section 4.1 touches this
subject in a little more depth with the introduction of the ExecutionService.
Bibliography
[4] R. S. Kaplan and W. Bruns, Accounting and Management: A Field Study Per-
spective. Harvard Business School Press, 1987.
[8] Environmental Protection Agency, “Report to congress on server and data en-
ergy efficiency,” 2007.
[17] Amazon Web Services LLC, “Amazon EC2 Spot Instances,” 2009. Last accessed
on 24/03/2011.
[27] I. Foster and C. Kesselman, The Grid: Blueprint for a New Computing Infras-
tructure. Morgan Kaufmann Publishers, Inc, first ed., 1998.
[28] I. Foster, Y. Zhao, I. Raicu, and S. Lu, “Cloud computing and grid computing
360-degree compared,” in Proceedings of the Grid Computing Environments
Workshop (GCE 08), 2008.
[29] N. Carr, The Big Switch: Rewiring the world, from Edison to Google. New
York, NY, USA: W.W. Norton, 2008.
[30] M. Chetty and R. Rajkumar Buyya, “Weaving computational grids: How anal-
ogous are they with electrical grids,” Computing in Science and Engineering,
vol. July/agust, pp. 61–71, 2002.
[33] L. Leong, “Adopting cloud infrastructure as a service in the ’real world’,” tech.
rep., Gartner, 2011.
[36] K. Vanmechelen, Economic Grid Resource Management using Spot and Futures
Markets. PhD thesis, University of Antwerp, 2009.
[39] N. Dubé, SuperComputing Futures: the Next Sharing Paradigm for HPC Re-
sources. PhD thesis, Université Laval, 2008.
[54] M. Silvano and P. Toth, Knapsack Problems: Algorithms and Computer Imple-
mentations, ch. Knapsack Problem, pp. 13–15. John Wiley and Sons, 1990.
[67] D. Fudenberg and J. Tirole, Game Theory. Cambridge: MIT Press, 1991.