Upload
devops-israel
View
13.470
Download
0
Tags:
Embed Size (px)
DESCRIPTION
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
Citation preview
devops jungle of toolsInfrastructure v/s Deployment automation
@rantav
CTO @ Social Studios TV
Monday, January 28, 13
What is Social Studios?
Monday, January 28, 13
What is Social Studios?
Monday, January 28, 13
What is Social Studios?
Monday, January 28, 13
What is Social Studios?
Monday, January 28, 13
Monday, January 28, 13
devops jungle of tools
Monday, January 28, 13
As learnt by - Myselfat
Monday, January 28, 13
Start with a personal storyMy goal was to:
Deploy appsMaintain infra
Monday, January 28, 13
Start with a personal storyThat’s me 3 years ago.
Monday, January 28, 13
Start with a personal storyThat’s me 3 years ago.
C o n f u s e dWhat should I do?
What should I choose?
I have to maintain infrastructure
But I also have to deploy my apps
Are these the same?
ChefPuppet
ControlTier
CFEngine
...???
Monday, January 28, 13
Monday, January 28, 13
A h a ! ! !
Monday, January 28, 13
I need a tool that:
A h a ! ! !
Monday, January 28, 13
I need a tool that:Maintains Infrastructure
A h a ! ! !
Monday, January 28, 13
I need a tool that:Maintains Infrastructure
A h a ! ! !
ANDDeploy my apps!
Monday, January 28, 13
Maintain InfrastructureANDDeploy my apps ???
Monday, January 28, 13
Maintain InfrastructureANDDeploy my apps ???
I d i d n ’ t f i n d i t
Monday, January 28, 13
???Maintain InfrastructureANDDeploy my apps ???
Monday, January 28, 13
???Maintain InfrastructureANDDeploy my apps ???
B u t W h y ? ? ?
Monday, January 28, 13
They are not the same!Infrastructure
≠App Deployment
Monday, January 28, 13
They are not the same!Infrastructure
≠App Deployment
O h . . .
Monday, January 28, 13
Why are they different?And what do they have in common?
Monday, January 28, 13
And what did I end up using?
Monday, January 28, 13
What did I use?Case 1:
Chef
glu
Monday, January 28, 13
What does chef do?Installs infrastructure
java
databases
etc...
Installs Glu
server and agents
Monday, January 28, 13
What does glu do?Deploy our apps
Tomcat based apps
Monday, January 28, 13
What did I use?Case 2:
Chef
Fabric
Monday, January 28, 13
What does chef do?Provision servers
Install Java, Tomcat
Install DBs
Set up users, keys
logstash
nagios, etc...
Monday, January 28, 13
What does Fabric do?Deploys apps
Tomcat based
or jetty
Notifications
tests
Monday, January 28, 13
Isn’t it easier to use just one tool?
Yes!
Monday, January 28, 13
So why am I using two tools?
Because they are different
Monday, January 28, 13
Let’s take a look at the tools nowInfrastructure
≠App Deployment !!!
Monday, January 28, 13
ChefRecipes, Resources,Convergence.
Monday, January 28, 13
PuppetDefine Desired StateEnforceMonitor
Monday, January 28, 13
CFEngineDesired StateSelf HealingMonitor
Monday, January 28, 13
ControlTierCommand Dispatcher
Monday, January 28, 13
gluDeployment Automation and Monitoring
Monday, January 28, 13
fabricDeploymentand administration
Monday, January 28, 13
CapistranoRemote server automation
Monday, January 28, 13
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
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
Why awkward?
Because Infrastructure ≠ Deployment automation
Monday, January 28, 13
How is it different?
Let’s see...
Monday, January 28, 13
How is it different?
Infrastructure and application are different in a few ways
Monday, January 28, 13
Confidence
Monday, January 28, 13
ConfidenceDifferent level of Confidence
conf(linux || mysql) > conf(in-house apps)
Monday, January 28, 13
ConfidenceDifferent level of Confidence
conf(linux || mysql) > conf(in-house apps)
Widely used systems (linux, mysql)
Monday, January 28, 13
ConfidenceDifferent level of Confidence
conf(linux || mysql) > conf(in-house apps)
Widely used systems (linux, mysql)
vs in-house apps, limited testing
Monday, January 28, 13
Frequency
Monday, January 28, 13
Frequency
Frequency of change
Monday, January 28, 13
Frequency
Frequency of change
freq(deploy database) ≪ freq(deploy new version)
Monday, January 28, 13
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
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
Control
Monday, January 28, 13
ControlControl over the actual process
Monday, January 28, 13
ControlControl over the actual process
Deployments:
Monday, January 28, 13
ControlControl over the actual process
Deployments:
Control exactly when they happen
Monday, January 28, 13
ControlControl over the actual process
Deployments:
Control exactly when they happen
Notify ppl, monitoring systems, with progress
Monday, January 28, 13
ControlControl 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
ControlControl 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
ControlControl 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
HeterogenousHomogenous
Monday, January 28, 13
HeterogenousHomogenous
Heterogeneous v/s Homogenous
Monday, January 28, 13
HeterogenousHomogenous
Heterogeneous v/s Homogenous
Infrastructure lives in Heterogeneous environments
Example: install mysql on ubuntu, centos, osx, win
Monday, January 28, 13
HeterogenousHomogenous
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
Who’s code is it?
Monday, January 28, 13
Who’s code is it?
When it’s your code you can:
Instrument it (healthcheck, deployment hooks)
Monday, January 28, 13
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
Take Chef and Glu
So, for example...
Monday, January 28, 13
Where does Chef stand out?Recipes for almost anything
Databases, App Servers, Languages...
Monday, January 28, 13
Where does Chef stand out?Recipes for almost anything
Databases, App Servers, Languages...Your code ⇒ no recipes
Monday, January 28, 13
Where does Chef stand out?
Heterogeneous environments
Any linux, windows, osx (resource providers)
Monday, January 28, 13
Where does Chef stand out?
Heterogeneous environments
Any linux, windows, osx (resource providers)Deployment environments are Homogenous
Monday, January 28, 13
Where does Chef stand out?
Runs unattended
to assure state
Monday, January 28, 13
Where does Chef stand out?
Runs unattended
to assure stateYour want to monitor it
Monday, January 28, 13
Where does Glu stand out?
Fine control over the deployment process
Monday, January 28, 13
Where does Glu stand out?
Fine control over the deployment processPackaged code ⇒ Not needed
Monday, January 28, 13
Where does Chef stand out?
Status update and monitoring during deployment
Monday, January 28, 13
Where does Chef stand out?
Status update and monitoring during deploymentInfrastracture update - usually taken offline
Monday, January 28, 13
Where does Chef stand out?
High frequency model change
Monday, January 28, 13
Where does Chef stand out?
High frequency model changeLow Frequency
Monday, January 28, 13
Compare
Infrastructure Deployment
Chef ✓ ⍻(shef)
Puppet ✓ ?
Glu ╳ ✓
Fabric ⍻ ✓
Monday, January 28, 13
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
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
What does the future hold?
Immutable Servers?
aka Phoenix Servers
vs Snowflake Servers
Pallet?
Monday, January 28, 13
This presentation
Is here:
https://speakerdeck.com/rantav/devops-jungle-of-tools
Monday, January 28, 13