Realizing the full potential of virtualized computation—the cloud—requires rethinking software development. Deployment decisions, and their validation, can and should be moved up the development chain into the design phase.
The elasticity of software executed in the cloud gives designers control over the execution environment’s resource parameters, such as the number and kind of processors, memory, storage capacity, and bandwidth. Parameters can even be changed dynamically at run time. Thus, cloud-service clients can not only deploy and run software, but they can also fully control the tradeoffs between incurred costs to run the software and the quality of service (QoS) delivered.
To maximize cloud computing’s potential, software development demands a new methodology that models deployment during the design phase and facilitates detection of deployment errors early and efficiently through the use of software tools such as simulators, test generators, and static analyzers. Making deployment decisions during the design phase can help shift control from the provisioning layer to the client layer and enables the client service to become resource aware. This provides numerous attractive opportunities.
- Fine-grained provisioning
- Tighter provisioning
- Application-specific resource control
- Application-controlled elasticity
In particular, the deployment decisions for a specific instance of a virtualized service can be driven by the service-level agreement associated with this instance.
An article in the June 2015 issue of IEEE Computer discusses the approach taken by Envisage to the design of virtualized services. (A preprint is available here.)
Two white papers explain our approach to modeling and to SLA-driven deployment:
- Modeling Deployment Decisions for Elastic Services with ABS
- Analysis of SLA Compliance in the Cloud: An Automated, Model-based Approach
You can try the modeling language and analysis tools over at the ABS Collaboratory website! The tools are open source and contributions and improvements are welcome! Look here: