co-located with ICST 2014, Cleveland, Ohio, USA
Historically, organizations that provided and used enterprise-class software, tended to run that software on execution platforms that they owned, controlled and operated. With this approach, costs may have been high, but they were predictable; management may have been complex, but it allowed organizations to optimize their computing resources to ensure the necessary levels of system performance.
Cloud computing, however, upends these justifications by vertically disaggregating the execution platform and the software that runs on it. The execution platform is owned, managed and operated by third-party service providers, who essentially rent the platform to the owners of software applications on an as-needed basis. In addition, cloud platforms strive to be elastic-- that is, ideally, they automatically and continuously provide their users with exactly as much, or as little, of the platform's total capability as they need. However, practitioners report that cloud resource allocation policies often fail to adequately meets their systems' needs, that the costs they ultimately incur have proven difficult to predict, and that those costs have not always been lower than the costs of owning their own platforms.
In this talk, I will introduce a new approach for synthesizing provisioning strategies for precise elastic cloud computing using performance testing. The key novelty is in using our abstractions and algorithms for performance testing to learn behavioral models of software applications that are put at the center of elasticity in cloud computing. This will radically reshape how cloud infrastructures are used in performance testing and deployment by learning and using abstract models of software applications.