Transcript
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


Recommended