Envisage: Engineering Virtualized ServicesD1.3.1 — Modeling of Deployment (Initial Report)
Presenter: !Behrooz Nobakht���[email protected]
Envisage Year 2 Project Review Brussels, Dec. 1, 2015
http://www.envisage-project.eu
Deliverable responsibility: ���BOL (Gianluigi Zavattaro) ���
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
T1.3 – from the DoW
2
This task formalizes deployment models for virtualized architectures and addresses objective O1.3
O1.3: Formal models of virtualized architectures !
These models will be described in terms of combinations of several features: the amount of processing or memory resources allocated to abstract virtual machines, best and worst execution times, the choice of application-level scheduling policies for client requests, and the distribution over different abstract virtual machines
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
T1.3 – from the DoW
This task formalizes deployment models for virtualized architectures and addresses objective O1.3
O1.3: Formal models of virtualized architectures !
These models will be described in terms of combinations of several features: the amount of processing or memory resources allocated to abstract virtual machines, best and worst execution times, the choice of application-level scheduling policies for client requests, and the distribution over different abstract virtual machines
3
Done in collaboration with T1.2 ���(see D1.2.1 “modeling of resources”)
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
T1.3 – from the DoW
This task formalizes deployment models for virtualized architectures and addresses objective O1.3
O1.3: Formal models of virtualized architectures !
These models will be described in terms of combinations of several features: the amount of processing or memory resources allocated to abstract virtual machines, best and worst execution times, the choice of application-level scheduling policies for client requests, and the distribution over different abstract virtual machines
4
This deliverable ���(see the remainder of this presentation)
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
T1.3 – from the DoW
This task formalizes deployment models for virtualized architectures and addresses objective O1.3
O1.3: Formal models of virtualized architectures !
These models will be described in terms of combinations of several features: the amount of processing or memory resources allocated to abstract virtual machines, best and worst execution times, the choice of application-level scheduling policies for client requests, and the distribution over different abstract virtual machines
5
Initiated in this deliverable ���(to be completed in D1.3.2… see next review)
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem”
- When a cloud application must be deployed it is necessary to:
1. Select the software components to be used
6
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem”
- When a cloud application must be deployed it is necessary to:
2. Define the software architecture (relationships among components)
7
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem”
- When a cloud application must be deployed it is necessary to:
3. Acquire the virtual machines to realize the software architecture
8
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
A “deployed application” in ABS
- Virtual machines deployment components ���(small and large with their type/memory/CPU in the example)
9
DeploymentComponent small = new DeploymentComponent ("m1”,map[Pair(Memory,500), Pair(CPU,1)]);DeploymentComponent large = new DeploymentComponent ("m2”,map[Pair(Memory,1500), Pair(CPU,4)]);[DC: large] Service s1 = new Service();[DC: large] Service s2 = new Service();[DC: small] Balancer b = new Balancer(list[s1,s2]);
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
A “deployed application” in ABS
- Virtual machines deployment components ���(small and large with their type/memory/CPU in the example)
- Software components objects to be initially instantiated ���(s1, s2 and b in the example)
10
DeploymentComponent small = new DeploymentComponent ("m1”,map[Pair(Memory,500), Pair(CPU,1)]);DeploymentComponent large = new DeploymentComponent ("m2”,map[Pair(Memory,1500), Pair(CPU,4)]);[DC: large] Service s1 = new Service();[DC: large] Service s2 = new Service();[DC: small] Balancer b = new Balancer(list[s1,s2]);
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
A “deployed application” in ABS
- Virtual machines deployment components ���(small and large with their type/memory/CPU in the example)
- Software components objects to be initially instantiated ���(s1, s2 and b in the example)
- Relationships the instantiation parameters ���(b is the balancer of the s1 and s2 services)
11
DeploymentComponent small = new DeploymentComponent ("m1”,map[Pair(Memory,500), Pair(CPU,1)]);DeploymentComponent large = new DeploymentComponent ("m2”,map[Pair(Memory,1500), Pair(CPU,4)]);[DC: large] Service s1 = new Service();[DC: large] Service s2 = new Service();[DC: small] Balancer b = new Balancer(list[s1,s2]);
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Current approach in ABS specifications :
- manually write the “deployed application” in a main procedure
- Main contribution of this deliverable:
- incorporation inside ABS of state-of-the-art approaches to automatically generate the main procedure
12
John A. Hewson, Paul Anderson, Andrew D. Gordon: ��� A Declarative Approach to Automated Configuration. LISA 2012: 51-66
Jeffrey Fischer, Rupak Majumdar, Shahram Esmaeilsabzali: ��� Engage: a deployment management system. PLDI 2012: 263-274
Roberto Di Cosmo, Michael Lienhardt, Ralf Treinen, Stefano Zacchiroli, Jakub Zwolakowski, ��� Antoine Eiche, Alexis Agahi: ��� Automated synthesis and deployment of cloud applications. ASE 2014: 211-222
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Given a set of ABS classes (enriched with deployment information)
13
[Deploy: scenario[ MaxUse(1), Cost("CPU", 1), Cost("Memory", 400), Param("c", Default("CustomerX")), Param("ds", Req)]]class QueryServiceImpl (DeploymentService ds, Customer c)
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Given a set of ABS classes (enriched with deployment information)
14
[Deploy: scenario[ MaxUse(1), Cost("CPU", 1), Cost("Memory", 400), Param("c", Default("CustomerX")), Param("ds", Req)]]class QueryServiceImpl (DeploymentService ds, Customer c)
Resource consumptionFunctional dependencies
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Given a set of ABS classes (enriched with deployment information)
- Given a “declarative” specification of the desired application
15
INTERFACE[IQueryService] >= 2 and CLASS[PlatformServiceImpl] = 1 and
DC[ CLASS[QueryServiceImpl] > 0 and CLASS[DeploymentServiceImpl] = 0 ] = 0
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Given a set of ABS classes (enriched with deployment information)
- Given a “declarative” specification of the desired application
16
INTERFACE[IQueryService] >= 2 and CLASS[PlatformServiceImpl] = 1 and
DC[ CLASS[QueryServiceImpl] > 0 and CLASS[DeploymentServiceImpl] = 0 ] = 0
Constraints on the initial objects
Co-installability requirement
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Given a set of ABS classes (enriched with deployment information)
- Given a “declarative” specification of the desired application
- Given a set of available virtual machines!
!
17
{ "DC_description": [ { "name" : "c3.large", "cost" : 105, "provide_resources" : {"CPU" : 2, "Memory" : 375} }, { "name" : "c3.xlarge", "cost" : 210 "provide_resources" : {"CPU" : 4, "Memory" : 750} } ], "DC_availability": { "c3.large" : 5, "c3.xlarge" : 3 } }
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Given a set of ABS classes (enriched with deployment information)
- Given a “declarative” specification of the desired application
- Given a set of available virtual machines!
!
18
{ "DC_description": [ { "name" : "c3.large", "cost" : 105, "provide_resources" : {"CPU" : 2, "Memory" : 375} }, { "name" : "c3.xlarge", "cost" : 210 "provide_resources" : {"CPU" : 4, "Memory" : 750} } ], "DC_availability": { "c3.large" : 5, "c3.xlarge" : 3 } }
Types of machines
Maximal amount of available instances
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Given a set of ABS classes (enriched with deployment information)
- Given a “declarative” specification of the desired application
- Given a set of available virtual machines!
Compute the “optimal” deployment !
19
DeploymentComponent m1.large_1 = new DeploymentComponent("m1.large_1", map[Pair(Memory,750), Pair(CPU,2)]);DeploymentComponent m1.large_2 = new DeploymentComponent("m1.large_2", map[Pair(Memory,750), Pair(CPU,2)]);DeploymentComponent m1.xlarge_1 = new DeploymentComponent("m1.xlarge_1", map[Pair(Memory,1500), Pair(CPU,4)]);DeploymentComponent m1.xlarge_2 = new DeploymentComponent("m1.xlarge_2", map[Pair(Memory,1500), Pair(CPU,4)]);DeploymentComponent amazon_internals = new DeploymentComponent("amazon_internals", map[]);
[DC: amazon_internals] InfrastructureService o1 = new InfrastructureServiceImpl();[DC: m1.xlarge_1] LoadBalancerService o2 = new LoadBalancerServiceImpl();[DC: m1.large_1] DeploymentService o3 = new DeploymentServiceImpl(o1);[DC: m1.large_2] DeploymentService o4 = new DeploymentServiceImpl(o1);[DC: m1.xlarge_2] MonitorPlatformService o5 = new PlatformServiceImpl(list[o3,o4], o2);[DC: m1.large_2] IQueryService o6 = new QueryServiceImpl(o4, CustomerX);[DC: m1.large_1] IQueryService o7 = new QueryServiceImpl(o3, CustomerX);[DC: m1.xlarge_2] ServiceProvider o8 = new ServiceProviderImpl(o5, o2);
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in ABS
- Given a set of ABS classes (enriched with deployment information)
- Given a “declarative” specification of the desired application
- Given a set of available virtual machines!
Compute the “optimal” deployment !
20
DeploymentComponent m1.large_1 = new DeploymentComponent("m1.large_1", map[Pair(Memory,750), Pair(CPU,2)]);DeploymentComponent m1.large_2 = new DeploymentComponent("m1.large_2", map[Pair(Memory,750), Pair(CPU,2)]);DeploymentComponent m1.xlarge_1 = new DeploymentComponent("m1.xlarge_1", map[Pair(Memory,1500), Pair(CPU,4)]);DeploymentComponent m1.xlarge_2 = new DeploymentComponent("m1.xlarge_2", map[Pair(Memory,1500), Pair(CPU,4)]);DeploymentComponent amazon_internals = new DeploymentComponent("amazon_internals", map[]);
[DC: amazon_internals] InfrastructureService o1 = new InfrastructureServiceImpl();[DC: m1.xlarge_1] LoadBalancerService o2 = new LoadBalancerServiceImpl();[DC: m1.large_1] DeploymentService o3 = new DeploymentServiceImpl(o1);[DC: m1.large_2] DeploymentService o4 = new DeploymentServiceImpl(o1);[DC: m1.xlarge_2] MonitorPlatformService o5 = new PlatformServiceImpl(list[o3,o4], o2);[DC: m1.large_2] IQueryService o6 = new QueryServiceImpl(o4, CustomerX);[DC: m1.large_1] IQueryService o7 = new QueryServiceImpl(o3, CustomerX);[DC: m1.xlarge_2] ServiceProvider o8 = new ServiceProviderImpl(o5, o2);
Application to the FRH case study
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in FRH case study
- Fredhopper Cloud Services: customizable web shop platform!
- Considered problem: deploy an appropriate number of service instances, on cloud premises, minimasing the total cost
21
Service EndpointService Endpoint
Infrastructure
Platform Service
Service Instance
Load Balancing Service
Monitoring/AlertingService
Service Endpoint
Service Instance
Service Instance
Service Instance
Deployment Service
Service APIs
Fredhopper Cloud Service
Cloud Provider
Consumes Provides
CustomersCustomers
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in FRH case study
22
INPUT: !
- Specification in ABS already available: ���
Class declarations annotated !with deployment information
- Declarative description of the desired deployment
- Description of the available machines (enriched with costs)
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
The “deployment problem” in FRH case study
23
OUTPUT: !
- An optimal deployment (minimize the costs) modeled in ABS
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
Conclusion- We are now able to automatically generate the typical deployment ���
manually realised by the operation teams at Fredhopper Cloud Services
- Deployment tool integrated inside the ABS tools platform:
24
Behrooz Nobakht (FRH) Envisage Brussels 1.12.2015
D1.3.1 – Modeling of Deployment
QUESTIONS
25