Between Chef, Puppet, Capistrano, Fabric, Pallet, Deployinator, ControlTier, how do you choose?
What tool's good for what?
In this session, Ran will present a taxonomy of deployment automation and infrastructure automation tools. Ran will further analyze their capabilities and help you make an informed decision about choosing the right tool for the right DevOps job.
Presented at DevOps Con Israel 2013
9. Start with a
personal
story
My goal was to:
Deploy apps
Maintain infra
Monday, January 28, 13
10. Start with a
personal
story
That’s me 3 years
ago.
Monday, January 28, 13
11. Confused
Start with a
Chef What should I do?
Puppet
personal What should I
choose?
story
Control I have to maintain
Tier
That’s me 3 years
CFEngine infrastructure
ago. But I also have to
deploy my apps
... Are these the
??? same?
Monday, January 28, 13
14. Aha !!!
I need a tool
that:
Monday, January 28, 13
15. Aha !!!
I need a tool
that:
Maintains
Infrastructure
Monday, January 28, 13
16. Aha !!!
I need a tool
that:
Maintains
Infrastructure
AND
Deploy my apps!
Monday, January 28, 13
17. Maintain
Infrastructure
AND
Deploy my apps ???
Monday, January 28, 13
18. I didn’t find it
Maintain
Infrastructure
AND
Deploy my apps ???
Monday, January 28, 13
19. ???
Maintain
Infrastructure
AND
Deploy my apps ???
Monday, January 28, 13
20. But Why ???
???
Maintain
Infrastructure
AND
Deploy my apps ???
Monday, January 28, 13
21. They are not
the same!
Infrastructure
≠
App Deployment
Monday, January 28, 13
22. Oh...
They are not
the same!
Infrastructure
≠
App Deployment
Monday, January 28, 13
23. Why are
they
different?
And what do they
have in common?
Monday, January 28, 13
24. And what did I end up using?
Monday, January 28, 13
25. What did I use?
Case 1:
Chef
glu
Monday, January 28, 13
26. What does chef do?
Installs infrastructure
java
databases
etc...
Installs Glu
server and agents
Monday, January 28, 13
27. What does glu do?
Deploy our apps
Tomcat based apps
Monday, January 28, 13
28. What did I use?
Case 2:
Chef
Fabric
Monday, January 28, 13
29. What does chef do?
Provision servers
Install Java, Tomcat
Install DBs
Set up users, keys
logstash
nagios, etc...
Monday, January 28, 13
30. What does Fabric do?
Deploys apps
Tomcat based
or jetty
Notifications
tests
Monday, January 28, 13
31. Isn’t it easier to use just one
tool?
Yes!
Monday, January 28, 13
32. So why am I using two
tools?
Because they are
different
Monday, January 28, 13
33. Let’s take a
look at the
tools now
Infrastructure
≠
App Deployment !!!
Monday, January 28, 13
34. Chef
Recipes, Resources,
Convergence.
Monday, January 28, 13
35. Puppet
Define Desired State
Enforce
Monitor
Monday, January 28, 13
36. CFEngine
Desired State
Self Healing
Monitor
Monday, January 28, 13
37. Control
Tier
Command
Dispatcher
Monday, January 28, 13
38. glu
Deployment
Automation and
Monitoring
Monday, January 28, 13
39. fabric
Deployment
and administration
Monday, January 28, 13
40. Capistrano
Remote server
automation
Monday, January 28, 13
41. Hybrid?
So - Chef, Puppet, CFEngine maintain infra
But - can they also deploy applications?
They could...
But - it’s awkward ☹
Example:
Use shef for ad-hoc tasks.
Monday, January 28, 13
42. Hybrid?
So - glu, fab, cap, CTier can deploy
But - can they also maintain infra?
They could...
But - it’s awkward ☹
Example: Use fabric to deploy mysql.
Monday, January 28, 13
43. Why awkward?
Because Infrastructure ≠ Deployment automation
Monday, January 28, 13
44. How is it different?
Let’s see...
Monday, January 28, 13
45. How is it different?
Infrastructure and
application are different
in a few ways
Monday, January 28, 13
47. Confidence
Different level of Confidence
conf(linux || mysql) > conf(in-house apps)
Monday, January 28, 13
48. Confidence
Different level of Confidence
conf(linux || mysql) > conf(in-house apps)
Widely used systems
(linux, mysql)
Monday, January 28, 13
49. Confidence
Different level of Confidence
conf(linux || mysql) > conf(in-house apps)
Widely used systems vs in-house apps,
(linux, mysql) limited testing
Monday, January 28, 13
51. Frequency
Frequency of change
Monday, January 28, 13
52. Frequency
Frequency of change
freq(deploy database) ≪ freq(deploy new version)
Monday, January 28, 13
53. Frequency
Frequency of change
freq(deploy database) ≪ freq(deploy new version)
How often do you deploy a new DB?
every couple of months / years
Monday, January 28, 13
54. Frequency
Frequency of change
freq(deploy database) ≪ freq(deploy new version)
How often do you deploy a new DB?
every couple of months / years
How often do you deploy new apps?
Dozens a day
Monday, January 28, 13
56. Control
Control over the actual process
Monday, January 28, 13
57. Control
Control over the actual process
Deployments:
Monday, January 28, 13
58. Control
Control over the actual process
Deployments:
Control exactly when they happen
Monday, January 28, 13
59. Control
Control over the actual process
Deployments:
Control exactly when they happen
Notify ppl, monitoring systems, with progress
Monday, January 28, 13
60. Control
Control over the actual process
Deployments:
Control exactly when they happen
Notify ppl, monitoring systems, with progress
Gradual, controlled and cautious deployments
Monday, January 28, 13
61. Control
Control over the actual process
Deployments:
Control exactly when they happen
Notify ppl, monitoring systems, with progress
Gradual, controlled and cautious deployments
Test as you go
Monday, January 28, 13
62. Control
Control over the actual process
Deployments:
Control exactly when they happen
Notify ppl, monitoring systems, with progress
Gradual, controlled and cautious deployments
Test as you go
Maybe rollback
Monday, January 28, 13
64. Heterogenous
Homogenous
Heterogeneous v/s Homogenous
Monday, January 28, 13
65. Heterogenous
Homogenous
Heterogeneous v/s Homogenous
Infrastructure lives in Heterogeneous environments
Example: install mysql on ubuntu, centos, osx, win
Monday, January 28, 13
66. Heterogenous
Homogenous
Heterogeneous v/s Homogenous
Infrastructure lives in Heterogeneous environments
Example: install mysql on ubuntu, centos, osx, win
Apps live in Homogenous environments.
Example: Rails apps only need a Rack server
Example: Java apps need only a JVM
Monday, January 28, 13
68. Who’s code is it?
When it’s your code you can:
Instrument it (healthcheck, deployment hooks)
Monday, January 28, 13
69. Who’s code is it?
When it’s your code you can:
Instrument it (healthcheck, deployment hooks)
If it’s not your code, you have less control
hope to get lucky
or hack around it...
Monday, January 28, 13
70. Take Chef and Glu
So, for example...
Monday, January 28, 13
71. Where does Chef stand out?
Recipes for almost anything
Databases, App Servers, Languages...
Monday, January 28, 13
72. Where does Chef stand out?
Recipes for almost anything
Your code no recipes
Databases, App Servers, Languages...
Monday, January 28, 13
73. Where does Chef stand out?
Heterogeneous environments
Any linux, windows, osx (resource providers)
Monday, January 28, 13
74. Where does Chef stand out?
Heterogeneous environments
Deployment environments are Homogenous
Any linux, windows, osx (resource providers)
Monday, January 28, 13
75. Where does Chef stand out?
Runs unattended
to assure state
Monday, January 28, 13
76. Where does Chef stand out?
Runs unattended
Your want to monitor it
to assure state
Monday, January 28, 13
77. Where does Glu stand out?
Fine control over the deployment process
Monday, January 28, 13
78. Where does Glu stand out?
Packaged code theNot neededprocess
Fine control over deployment
Monday, January 28, 13
79. Where does Chef stand out?
Status update and monitoring during deployment
Monday, January 28, 13
80. Where does Chef stand out?
Infrastracture update - usually taken offline
Status update and monitoring during deployment
Monday, January 28, 13
81. Where does Chef stand out?
High frequency model change
Monday, January 28, 13
82. Where does Chef stand out?
Low Frequency model change
High frequency
Monday, January 28, 13
84. To sum up
Chef Infrastructure
Glu / Fabric / Capistrano Applications
Yes - it’s more tools
But - Use the right tool for the job...
Monday, January 28, 13
85. To sum up
Chef Infrastructure
Glu / Fabric / Capistrano Applications
Yes - it’s more tools
But - Use the right tool for the job...
Monday, January 28, 13
86. What does the future hold?
Immutable Servers?
aka Phoenix Servers
vs Snowflake Servers
Pallet?
Monday, January 28, 13
87. This presentation
Is here:
https://speakerdeck.com/rantav/devops-jungle-of-tools
Monday, January 28, 13