Actors: cloud-subscriber, cloud-provider-1, cloud-provider-2, …, cloud-provider-n
Goals: Invoke operations on the most effective clouds available based on a client-side set of rules that are evaluated at runtime.
Assumptions: The cloud-subscriber has already established accounts with multiple IaaS cloud-providers.
Success Scenario (dispatch, IaaS): This use case is for workloads that do not depend on unique resources of a specific cloud-provider. The cloud-subscriber wishes to perform a job on the cloud that can offer the best performance, with the greatest reliability, at the least cost. From the time when the cloud-subscriber opened the account with each cloud-provider, the cloud-subscriber has a record of each cloud-provider's service charges and promised performance and availability. Optionally, the cloud-subscriber queries each cloud-provider for any updates to the SLA regarding these issues and, if there are changes, evaluates the acceptability of the changes as in "Compare Service Level Agreements to Respond to a Change". Then the cloud-subscriber formulates a small test workload, which could have processing aspects, data storage aspects, or network performance aspects. The cloud-subscriber runs the test workload one or more times on each cloud-provider, and sorts the cloud-providers by availability, correctness of the workload's outputs, and performance . Alternatively, the cloud-subscriber queries the cloud-providers for performance, usage, availability, and cost metrics, and dispatches workloads accordingly. In this case, the cloud-provider bears the responsibility to maintain the needed querying interface.
Failure Conditions: (1) The cloud-provider is unable to provide the quality-of-service required for the dispatched workload; (2) the cloud-provider cannot scale to meet the cloud subscriber's demand; (3) cloud-provider is unable to provide meaningful metrics. .
Failure Handling: Cloud-subscriber dispatches workload to another cloud-provider.
Credit: This use case was inspired by the libcloud project [LIBCLOUD], which provides a client-side library for interacting with multiple IaaS cloud-providers concurrently using a single API.