migration effort in the cloud - the case of cloud platforms
TRANSCRIPT
Migration Effort in the Cloud – The Case of Cloud Platforms Stefan Kolb, Jörg Lenhard, and Guido Wirtz Distributed Systems Group University of Bamberg, Germany
Feasibility of migration and effort?
Why migrate?
2
Diverse offerings
2
1
Consolidation & fast-changing market
3 Cost benefits
four12
Case Study
3
Migration between PaaS
Real-world application
2
1
Cloud-native Stateless, horizontally scalable.
3 Cloud-to-Cloud
4 Developer’s Point-of-View Functional & management interface portability.
Platform?
4
Mike Baird Peter Miller
If all components and capabilities are supported,
we should be able to run our application.
C Non portable
Component A
Component B Capability C
Partial
Portable
5
6
“Key insights from nonfiction books into fifteen minute reads and audio casts.“
1000 books
350 000 registered users
Available for
Android, iPhone, iPad, and Web
www.blinkist.com
Components & Capabilities
7
- 60 000 LOC - Rails, …
Puma 2.8.1 Rails 4.x Ruby 2.0.0
Scale-out Public PaaS Production-ready
8
VENDOR SELECTION
75
vendors
Most recent and comprehensive data set available
http://PaaSify.it
9
Matching components and capabilities
22
vendors
-70 % ecosystem mismatch
10
11
Pivotal Web Services IBM Bluemix
OpenShift Online cloudControl Heroku
EngineYard
AWS Elastic Beanstalk
VM-based Container-based
512 MB RAM 3.75 GB RAM
12
MEASUREMENTS
Pricing
$22 $24
$35 $36
$54 $50
$89
$0
$10
$20
$30
$40
$50
$60
$70
$80
$90
Pivotal Bluemix Heroku OpenShift cloudControl Beanstalk EngineYard
13
∑(2 instances/month) || ∑(1 VM/month)
Container-based VM-based
$22 $24
$35 $36
$54 $50
$89
$0
$10
$20
$30
$40
$50
$60
$70
$80
$90
Pivotal Bluemix Heroku OpenShift cloudControl Beanstalk EngineYard
14
VM-based
Low-cost Containers It’s usually cheaper to start with a Container-based PaaS.
1
1
$22 $24
$35 $36
$54 $50
$89
$0
$10
$20
$30
$40
$50
$60
$70
$80
$90
Pivotal Bluemix Heroku OpenShift cloudControl Beanstalk EngineYard
15
Container-based VM-based
Low-cost Containers It’s usually cheaper to start with a Container-based PaaS.
2
2
1
Complex VM pricing Often additional costs for IP services, bandwidth, storage, …
$22 $24
$35 $36
$54 $50
$89
$0
$10
$20
$30
$40
$50
$60
$70
$80
$90
Pivotal Bluemix Heroku OpenShift cloudControl Beanstalk EngineYard
16
Container-based VM-based
Low-cost Containers It’s usually cheaper to start with a Container-based PaaS.
2
1
3
Complex VM pricing Often additional costs for IP services, bandwidth, storage, …
3 Major price differences 60 % savings among Container-based PaaS possible. Amount of savings dependent on instance count (free quota).
Migration Efforts
If my requirements are supported,
what and how much effort do I need to put into my deployment workflow and application code?
17
Metrics
18
Avg. Deployment Time Deployment Reliability
Number of compilation and packaging steps
Number of deployment steps
+ Number of input
parameters
Median of a number of deployments
LOC of configuration files +
LOC changes in application code
Deployment Effort
𝑠𝑢𝑐𝑐𝑒𝑠𝑠𝑓𝑢𝑙 𝑑𝑒𝑝𝑙𝑜𝑦𝑚𝑒𝑛𝑡𝑠
𝑎𝑡𝑡𝑒𝑚𝑝𝑡𝑒𝑑 𝑑𝑒𝑝𝑙𝑜𝑦𝑚𝑒𝑛𝑡𝑠
Code Changes Packaging Steps
t
Create Update Delete
Automation
19
SSH keys Tokens Host verifications
https://github.com/stefan-kolb/paasyard
Application code Deployment artifacts
Vendor CLI tools
Repeatable workflows Prevents measurement errors.
2
1
Measurement isolation Local and remote isolation of deployments.
1
#!bash scripts
2
Measurements
20
100 runs each
… at varying times during workdays
… in parallel to minimize load-induced influences
… manually analyze deployment script efforts
21
APPLICATION PORTING EFFORTS
Omer Wazir
Average Deployment Time
5.83 6.75 7.03
8.42 9.13
15.94
28.44
0
5
10
15
20
25
30
Pivotal Heroku Bluemix OpenShift cloudControl Beanstalk EngineYard
Min
utes
22
Container-based VM-based
5.83 6.75 7.03 8.42 9.13
15.94
28.44
0
5
10
15
20
25
30
Pivotal Heroku Bluemix OpenShift cloudControl Beanstalk EngineYard
Min
utes
23
Container-based VM-based
Substantial performance differences
1
1
7.52 deviation 11.65 mean
5.83 6.75 7.03 8.42 9.13
15.94
28.44
0
5
10
15
20
25
30
Pivotal Heroku Bluemix OpenShift cloudControl Beanstalk EngineYard
Min
utes
24
Container-based VM-based
Substantial performance differences
2
2
1
Containers are faster than VMs In our case 3x faster than VM deployments. Not only because of VM startup time (~97s).
7.52 deviation 11.65 mean
5.73 6.69 6.61 7.41 5.71
8.71 8.25
0
5
10
15
20
25
30
Pivotal Heroku Bluemix OpenShift cloudControl Beanstalk EngineYard
Min
utes
25
Container-based VM-based
1.08 deviation
3
Substantial performance differences
2
1
Containers are faster than VMs In our case 3x faster than VM deployments. Not only because of VM startup time (~97s).
3 Similar redeployment times
1 1 0.99 0.96 0.89
0.78 0.72
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Pivotal EngineYard Beanstalk Heroku Bluemix OpenShift cloudControl
26
Reoccuring failures during initial deployment SSH key synchronization and other platform errors.
1
1
Deployment Reliability
1 0.96 0.98 0.96 0.93 0.97 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Pivotal EngineYard Beanstalk Heroku Bluemix OpenShift cloudControl
27
2
Deployment Reliability
Reoccuring failures during initial deployment SSH key synchronization and other platform errors.
2
1
Reliable redeployment
Effort of Deployment Steps
10
12
15
17 17
23 24
0
5
10
15
20
25
30
Heroku Beanstalk cloudControl Pivotal Bluemix EngineYard OpenShift
Steps Parameters
28
10 12
15 17 17
23 24
0
5
10
15
20
25
30
Heroku Beanstalk cloudControl Pivotal Bluemix EngineYard OpenShift
29
Different steps, yet semantically the same Reoccurring effort for learning tools or adapting existing automation.
1
14 spread 17 mean
1
10 12
15 17 17
23 24
0
5
10
15
20
25
30
Heroku Beanstalk cloudControl Pivotal Bluemix EngineYard OpenShift
30
Different steps, yet semantically the same Reoccurring effort for learning tools or adapting existing automation.
1
2
2 Not always automatable EngineYard needs a manual initial configuration.
14 spread 17 mean
Code Changes
1 1 1 1 0
7
40
0
5
10
15
20
25
30
35
40
45
Heroku Pivotal Bluemix cloudControl OpenShift EngineYard Beanstalk
Line
s of
Cod
e
31
Procfile-based deployment
1 1 1 1 0
7
40
0
5
10
15
20
25
30
35
40
45
Heroku Pivotal Bluemix cloudControl OpenShift EngineYard Beanstalk
Line
s of
Cod
e
32
Low amount of code changes Relying on open technologies results in low amount of overall changes.
1
1
Container-based VM-based
1 1 1 1 0
7
40
0
5
10
15
20
25
30
35
40
45
Heroku Pivotal Bluemix cloudControl OpenShift EngineYard Beanstalk
Line
s of
Cod
e
33
Low amount of code changes Relying on open technologies results in low amount of overall changes.
2
1
Intelligent runtime detection and defaults Recent platform automation saves on configuration needs.
VM-based 2
1 1 1 1 0
7
40
0
5
10
15
20
25
30
35
40
45
Heroku Pivotal Bluemix cloudControl OpenShift EngineYard Beanstalk
Line
s of
Cod
e
34
Low amount of code changes Relying on open technologies results in low amount of overall changes.
2
3
1
Intelligent runtime detection and defaults Recent platform automation saves on configuration needs.
3 Problematic middleware configuration Portability of native libraries and middleware configurations is problematic.
ENV variables
Linux packages
Server-side scripts
Container-based VM-based
Deployment Effort
14
18 18 19
27
34
55
0
10
20
30
40
50
60
Heroku Pivotal Bluemix cloudControl OpenShift EngineYard Beanstalk
Steps & Parameters (EDS) Code changes (CC) Build (EPC)
35
14 18 18 19
27
34
55
0
10
20
30
40
50
60
Heroku Pivotal Bluemix cloudControl OpenShift EngineYard Beanstalk
Steps & Parameters (EDS) Code changes (CC) Build (EPC)
36
VM-based require more effort … but can be configured more later on.
1
1
41 spread
14 18 18 19
27
34
55
0
10
20
30
40
50
60
Heroku Pivotal Bluemix cloudControl OpenShift EngineYard Beanstalk
Steps & Parameters (EDS) Code changes (CC) Build (EPC)
37
VM-based require more effort … but can be configured more later on.
2
2
1
Container-based are within close range Only small deviation between container-based PaaS.
41 spread
Analysis
38
Portable, but requires substantial amount of work … besides captured effort: how difficult are the changes?
2
1
Tradeoffs in technology setups necessary Server middleware configuration is problematic. Native extensions dependencies are problematic.
3 Container-based PaaS are the future They are faster and require less effort than VM-based platforms.
4 Maturity of PaaS? 4 of 7 platforms included bugs that needed to be fixed.
Study Generalizability
Metrics Refinement Weighting of efforts? Human efforts?
Management API Portability Similar functionality, but very different workflows & commands
Implementation & Environmental Differences e.g. Buildpack unification
PaaS Performance
39
Limitations
Challenges