  The availability of public computing resources in the cloud has
revolutionized data analysis, but requesting cloud resources often involves
complex decisions for consumers. Under the current pricing mechanisms, cloud
service providers offer several service options and charge consumers based on
the resources they use. Before they can decide which cloud resources to
request, consumers have to estimate the completion time and cost of their
computational tasks for different service options and possibly for different
service providers. This estimation is challenging even for expert cloud users.
We propose a new market-based framework for pricing computational tasks in the
cloud. Our framework introduces an agent between consumers and cloud providers.
The agent takes data and computational tasks from users, estimates time and
cost for evaluating the tasks, and returns to consumers contracts that specify
the price and completion time. Our framework can be applied directly to
existing cloud markets without altering the way cloud providers offer and price
services. In addition, it simplifies cloud use for consumers by allowing them
to compare contracts, rather than choose resources directly. We present design,
analytical, and algorithmic contributions focusing on pricing computation
contracts, analyzing their properties, and optimizing them in complex
workflows. We conduct an experimental evaluation of our market framework over a
real-world cloud service and demonstrate empirically that our market ensures
three key properties: competitiveness, fairness, and resilience. Finally, we
present a fine-grained pricing mechanism for complex workflows and show that it
can increase agent profits by more than an order of magnitude in some cases.
