87
devops jungle of tools Infrastructure v/s Deployment automation @rantav CTO @ Social Studios TV Monday, January 28, 13

DevOps Jungle of Tools, Ran Tavory

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

Page 1: DevOps Jungle of Tools, Ran Tavory

devops jungle of toolsInfrastructure v/s Deployment automation

@rantav

CTO @ Social Studios TV

Monday, January 28, 13

Page 2: DevOps Jungle of Tools, Ran Tavory

What is Social Studios?

Monday, January 28, 13

Page 3: DevOps Jungle of Tools, Ran Tavory

What is Social Studios?

Monday, January 28, 13

Page 4: DevOps Jungle of Tools, Ran Tavory

What is Social Studios?

Monday, January 28, 13

Page 5: DevOps Jungle of Tools, Ran Tavory

What is Social Studios?

Monday, January 28, 13

Page 6: DevOps Jungle of Tools, Ran Tavory

Monday, January 28, 13

Page 7: DevOps Jungle of Tools, Ran Tavory

devops jungle of tools

Monday, January 28, 13

Page 8: DevOps Jungle of Tools, Ran Tavory

As learnt by - Myselfat

Monday, January 28, 13

Page 9: DevOps Jungle of Tools, Ran Tavory

Start with a personal storyMy goal was to:

Deploy appsMaintain infra

Monday, January 28, 13

Page 10: DevOps Jungle of Tools, Ran Tavory

Start with a personal storyThat’s me 3 years ago.

Monday, January 28, 13

Page 11: DevOps Jungle of Tools, Ran Tavory

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

Page 12: DevOps Jungle of Tools, Ran Tavory

Monday, January 28, 13

Page 13: DevOps Jungle of Tools, Ran Tavory

A h a ! ! !

Monday, January 28, 13

Page 14: DevOps Jungle of Tools, Ran Tavory

I need a tool that:

A h a ! ! !

Monday, January 28, 13

Page 15: DevOps Jungle of Tools, Ran Tavory

I need a tool that:Maintains Infrastructure

A h a ! ! !

Monday, January 28, 13

Page 16: DevOps Jungle of Tools, Ran Tavory

I need a tool that:Maintains Infrastructure

A h a ! ! !

ANDDeploy my apps!

Monday, January 28, 13

Page 17: DevOps Jungle of Tools, Ran Tavory

Maintain InfrastructureANDDeploy my apps ???

Monday, January 28, 13

Page 18: DevOps Jungle of Tools, Ran Tavory

Maintain InfrastructureANDDeploy my apps ???

I d i d n ’ t f i n d i t

Monday, January 28, 13

Page 19: DevOps Jungle of Tools, Ran Tavory

???Maintain InfrastructureANDDeploy my apps ???

Monday, January 28, 13

Page 20: DevOps Jungle of Tools, Ran Tavory

???Maintain InfrastructureANDDeploy my apps ???

B u t W h y ? ? ?

Monday, January 28, 13

Page 21: DevOps Jungle of Tools, Ran Tavory

They are not the same!Infrastructure

≠App Deployment

Monday, January 28, 13

Page 22: DevOps Jungle of Tools, Ran Tavory

They are not the same!Infrastructure

≠App Deployment

O h . . .

Monday, January 28, 13

Page 23: DevOps Jungle of Tools, Ran Tavory

Why are they different?And what do they have in common?

Monday, January 28, 13

Page 24: DevOps Jungle of Tools, Ran Tavory

And what did I end up using?

Monday, January 28, 13

Page 25: DevOps Jungle of Tools, Ran Tavory

What did I use?Case 1:

Chef

glu

Monday, January 28, 13

Page 26: DevOps Jungle of Tools, Ran Tavory

What does chef do?Installs infrastructure

java

databases

etc...

Installs Glu

server and agents

Monday, January 28, 13

Page 27: DevOps Jungle of Tools, Ran Tavory

What does glu do?Deploy our apps

Tomcat based apps

Monday, January 28, 13

Page 28: DevOps Jungle of Tools, Ran Tavory

What did I use?Case 2:

Chef

Fabric

Monday, January 28, 13

Page 29: DevOps Jungle of Tools, Ran Tavory

What does chef do?Provision servers

Install Java, Tomcat

Install DBs

Set up users, keys

logstash

nagios, etc...

Monday, January 28, 13

Page 30: DevOps Jungle of Tools, Ran Tavory

What does Fabric do?Deploys apps

Tomcat based

or jetty

Notifications

tests

Monday, January 28, 13

Page 31: DevOps Jungle of Tools, Ran Tavory

Isn’t it easier to use just one tool?

Yes!

Monday, January 28, 13

Page 32: DevOps Jungle of Tools, Ran Tavory

So why am I using two tools?

Because they are different

Monday, January 28, 13

Page 33: DevOps Jungle of Tools, Ran Tavory

Let’s take a look at the tools nowInfrastructure

≠App Deployment !!!

Monday, January 28, 13

Page 34: DevOps Jungle of Tools, Ran Tavory

ChefRecipes, Resources,Convergence.

Monday, January 28, 13

Page 35: DevOps Jungle of Tools, Ran Tavory

PuppetDefine Desired StateEnforceMonitor

Monday, January 28, 13

Page 36: DevOps Jungle of Tools, Ran Tavory

CFEngineDesired StateSelf HealingMonitor

Monday, January 28, 13

Page 37: DevOps Jungle of Tools, Ran Tavory

ControlTierCommand Dispatcher

Monday, January 28, 13

Page 38: DevOps Jungle of Tools, Ran Tavory

gluDeployment Automation and Monitoring

Monday, January 28, 13

Page 39: DevOps Jungle of Tools, Ran Tavory

fabricDeploymentand administration

Monday, January 28, 13

Page 40: DevOps Jungle of Tools, Ran Tavory

CapistranoRemote server automation

Monday, January 28, 13

Page 41: DevOps Jungle of Tools, Ran Tavory

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

Page 42: DevOps Jungle of Tools, Ran Tavory

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

Page 43: DevOps Jungle of Tools, Ran Tavory

Why awkward?

Because Infrastructure ≠ Deployment automation

Monday, January 28, 13

Page 44: DevOps Jungle of Tools, Ran Tavory

How is it different?

Let’s see...

Monday, January 28, 13

Page 45: DevOps Jungle of Tools, Ran Tavory

How is it different?

Infrastructure and application are different in a few ways

Monday, January 28, 13

Page 46: DevOps Jungle of Tools, Ran Tavory

Confidence

Monday, January 28, 13

Page 47: DevOps Jungle of Tools, Ran Tavory

ConfidenceDifferent level of Confidence

conf(linux || mysql) > conf(in-house apps)

Monday, January 28, 13

Page 48: DevOps Jungle of Tools, Ran Tavory

ConfidenceDifferent level of Confidence

conf(linux || mysql) > conf(in-house apps)

Widely used systems (linux, mysql)

Monday, January 28, 13

Page 49: DevOps Jungle of Tools, Ran Tavory

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

Page 50: DevOps Jungle of Tools, Ran Tavory

Frequency

Monday, January 28, 13

Page 51: DevOps Jungle of Tools, Ran Tavory

Frequency

Frequency of change

Monday, January 28, 13

Page 52: DevOps Jungle of Tools, Ran Tavory

Frequency

Frequency of change

freq(deploy database) ≪ freq(deploy new version)

Monday, January 28, 13

Page 53: DevOps Jungle of Tools, Ran Tavory

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

Page 54: DevOps Jungle of Tools, Ran Tavory

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

Page 55: DevOps Jungle of Tools, Ran Tavory

Control

Monday, January 28, 13

Page 56: DevOps Jungle of Tools, Ran Tavory

ControlControl over the actual process

Monday, January 28, 13

Page 57: DevOps Jungle of Tools, Ran Tavory

ControlControl over the actual process

Deployments:

Monday, January 28, 13

Page 58: DevOps Jungle of Tools, Ran Tavory

ControlControl over the actual process

Deployments:

Control exactly when they happen

Monday, January 28, 13

Page 59: DevOps Jungle of Tools, Ran Tavory

ControlControl over the actual process

Deployments:

Control exactly when they happen

Notify ppl, monitoring systems, with progress

Monday, January 28, 13

Page 60: DevOps Jungle of Tools, Ran Tavory

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

Page 61: DevOps Jungle of Tools, Ran Tavory

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

Page 62: DevOps Jungle of Tools, Ran Tavory

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

Page 63: DevOps Jungle of Tools, Ran Tavory

HeterogenousHomogenous

Monday, January 28, 13

Page 64: DevOps Jungle of Tools, Ran Tavory

HeterogenousHomogenous

Heterogeneous v/s Homogenous

Monday, January 28, 13

Page 65: DevOps Jungle of Tools, Ran Tavory

HeterogenousHomogenous

Heterogeneous v/s Homogenous

Infrastructure lives in Heterogeneous environments

Example: install mysql on ubuntu, centos, osx, win

Monday, January 28, 13

Page 66: DevOps Jungle of Tools, Ran Tavory

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

Page 67: DevOps Jungle of Tools, Ran Tavory

Who’s code is it?

Monday, January 28, 13

Page 68: DevOps Jungle of Tools, Ran Tavory

Who’s code is it?

When it’s your code you can:

Instrument it (healthcheck, deployment hooks)

Monday, January 28, 13

Page 69: DevOps Jungle of Tools, Ran Tavory

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

Page 70: DevOps Jungle of Tools, Ran Tavory

Take Chef and Glu

So, for example...

Monday, January 28, 13

Page 71: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?Recipes for almost anything

Databases, App Servers, Languages...

Monday, January 28, 13

Page 72: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?Recipes for almost anything

Databases, App Servers, Languages...Your code ⇒ no recipes

Monday, January 28, 13

Page 73: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?

Heterogeneous environments

Any linux, windows, osx (resource providers)

Monday, January 28, 13

Page 74: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?

Heterogeneous environments

Any linux, windows, osx (resource providers)Deployment environments are Homogenous

Monday, January 28, 13

Page 75: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?

Runs unattended

to assure state

Monday, January 28, 13

Page 76: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?

Runs unattended

to assure stateYour want to monitor it

Monday, January 28, 13

Page 77: DevOps Jungle of Tools, Ran Tavory

Where does Glu stand out?

Fine control over the deployment process

Monday, January 28, 13

Page 78: DevOps Jungle of Tools, Ran Tavory

Where does Glu stand out?

Fine control over the deployment processPackaged code ⇒ Not needed

Monday, January 28, 13

Page 79: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?

Status update and monitoring during deployment

Monday, January 28, 13

Page 80: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?

Status update and monitoring during deploymentInfrastracture update - usually taken offline

Monday, January 28, 13

Page 81: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?

High frequency model change

Monday, January 28, 13

Page 82: DevOps Jungle of Tools, Ran Tavory

Where does Chef stand out?

High frequency model changeLow Frequency

Monday, January 28, 13

Page 83: DevOps Jungle of Tools, Ran Tavory

Compare

Infrastructure Deployment

Chef ✓ ⍻(shef)

Puppet ✓ ?

Glu ╳ ✓

Fabric ⍻ ✓

Monday, January 28, 13

Page 84: DevOps Jungle of Tools, Ran Tavory

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

Page 85: DevOps Jungle of Tools, Ran Tavory

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

Page 86: DevOps Jungle of Tools, Ran Tavory

What does the future hold?

Immutable Servers?

aka Phoenix Servers

vs Snowflake Servers

Pallet?

Monday, January 28, 13

Page 87: DevOps Jungle of Tools, Ran Tavory

This presentation

Is here:

https://speakerdeck.com/rantav/devops-jungle-of-tools

Monday, January 28, 13