effective devops - velocity new york 2015

Post on 13-Apr-2017

1.734 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Effec%ve'Devops:Collabora'on)and)Tools

Jennifer'Davis'&'Katherine'Daniels

✨ @beerops(@sigje(#effec/vedevops✨ 1

Jennifer'Davis• So$ware)Engineer,)Chef)So$ware

• Co2author)of)"Effec8ve)Devops"

• Founder)of)CoffeeOps

• DevOpsDays)Silicon)Valley)Organizer

✨ @beerops(@sigje(#effec/vedevops✨ 2

Katherine)Daniels• Senior(Opera,ons(Engineer,(Etsy

• Co4author(of("Effec,ve(Devops"

• DevopsDays(NYC(Organizer

• Ship(Show(Podcast(Co4host

✨ @beerops(@sigje(#effec/vedevops✨ 3

Communica)on• Jennifer(DavisTwi/er:(@sigjeEmail:(sparklydevops@gmail.com

• Katherine(DanielsTwi/er:(@beeropsEmail:(sparklyyakshaver@gmail.com

Twi$er:(#effec,vedevops

✨ @beerops(@sigje(#effec/vedevops✨ 4

Feedback• Construc*ve-feedback

• What-did-you-find-helpful?

• What-would-you-like-to-see-more/less-of?

• Was-there-anything-you-found-unclear?

✨ @beerops(@sigje(#effec/vedevops✨ 5

Schedule• Introduc*on+to+teams,+devops+principles

• 10:30911:00am+Morning+Break+9+Su?on+Complex

• Visualiza*on+of+work,+Git,+Infrastructure+automa*on

• 12:3091:30pm+Lunch+9+Americas+Halls+1+&+2

✨ @beerops(@sigje(#effec/vedevops✨ 6

Schedule• Tes%ng(infrastucture(automa%on(and(other(changes

• 3:0073:30pm(A:ernoon(Break(7(Su>on(Complex

• Measuring,(monitoring,(and(wrap7up

• Ignites:(Beekman(Parlor((with(Katherine)

✨ @beerops(@sigje(#effec/vedevops✨ 7

Network(Connec,vity

Network(Name:(VelocityAccess(Code:((none)

Local&Downloads:&h.p://10.10.32.101

✨ @beerops(@sigje(#effec/vedevops✨ 8

Expecta(ons• Safe&space&to&share&experiences,&learn&from&each&other

• Code&of&Conduct

• Learn&effec9ve&workflows&for&using&and&tes9ng&source&control&and&configura9on&management

✨ @beerops(@sigje(#effec/vedevops✨ 9

Team%Introduc.ons

• Meet%your%team!

• What%are%mo/va/ons?%What%are%current%beliefs?%What%are%current%skills?%Gaps%in%skills?

Time:&20&minutes

✨ @beerops(@sigje(#effec/vedevops✨ 10

What%is%Devops

✨ @beerops(@sigje(#effec/vedevops✨ 11

What%is%Devops

Cultural'movement'that'seeks'to:

• change(how(individuals(work,

• value(the(diversity(of(work(done,

• develop(conscious(decisions(in(accelera8on,

• plan(for(scale,(and

• measure(the(effect(of(social(and(technical(change.

✨ @beerops(@sigje(#effec/vedevops✨ 12

Folk%Models• general(popularly(understood(meaning(par2cular(to(a(socio4cultural(grouping(but(which(has(not(been(formally(defined(or(standardized.

✨ @beerops(@sigje(#effec/vedevops✨ 13

Why$Devops?

✨ @beerops(@sigje(#effec/vedevops✨ 14

High%Performing%Devops%Teams

are$more$agile

30X$more$frequent$deployments

8000X$faster$lead$-mes$than$peers

2014%PuppetLabs%State%of%DevOps%Survey

✨ @beerops(@sigje(#effec/vedevops✨ 15

High%Performing%Devops%Teams

are$more$reliable

2X#change#success#rate

12X$faster$mean$-me$to$recovery$(MTTR)

2014%PuppetLabs%State%of%DevOps%Survey

✨ @beerops(@sigje(#effec/vedevops✨ 16

Five%Pillars%of%Effec0ve%Devops

• Collabora(on

• Hiring

• Affinity

• Tools

• Scaling

✨ @beerops(@sigje(#effec/vedevops✨ 17

Collabora'on• Individuals+Working+Together

✨ @beerops(@sigje(#effec/vedevops✨ 18

Hiring• Choosing)Individuals

✨ @beerops(@sigje(#effec/vedevops✨ 19

Affinity• From&Individuals&to&Teams

✨ @beerops(@sigje(#effec/vedevops✨ 20

Tools• Accelerators+of+Culture

✨ @beerops(@sigje(#effec/vedevops✨ 21

Scaling• Evolu'on,*growth*and*advancement*of*the*organiza'on

✨ @beerops(@sigje(#effec/vedevops✨ 22

Collabora'on)and)Tools

✨ @beerops(@sigje(#effec/vedevops✨ 23

Recognizing)your)Devops)Narra3ve

✨ @beerops(@sigje(#effec/vedevops✨ 24

The$Devops$Compact• shared(mutual(understanding

• established(boundaries

✨ @beerops(@sigje(#effec/vedevops✨ 25

Team• Common&purpose

• Defined&beliefs

• Empowered

✨ @beerops(@sigje(#effec/vedevops✨ 26

Careless'Conversa+ons'(inspired'by'Alan'Cyment)

• Pair&up

• Select&one&person&to&go&first.

• For&one&minute,&speaker&talks&about&something&passionate&about.&Listener&stays&seated,&quiet,&and&acts&disinterested.

• Switch&roles&and&repeat.

• Repeat&un@l&both&people&have&done&this&twice.

Time:&5&minutes✨ @beerops(@sigje(#effec/vedevops✨ 27

Careless'Conversa+ons

• How%does%it%feel%not%to%be%listened%to?

• How%does%it%feel%to%ignore%someone?

✨ @beerops(@sigje(#effec/vedevops✨ 28

Cul$va$ng)Empathy

• Collect(stories

• Listen

• Circle(back

✨ @beerops(@sigje(#effec/vedevops✨ 29

Smarter'Teams'Build'Be/er'Value1

• Lots&of&Communica/on

• Contribute&equally&to&team's&discussions

• Theory&of&Mind

• Increased&diversity

1"Engel,"David"et"al."'Reading"The"Mind"In"The"Eyes"Or"Reading"Between"The"Lines?"Theory"Of"Mind"Predicts"CollecCve"Intelligence"Equally"Well"Online"And"FaceIToIFace'."PLoS"ONE"9.12"(2014):"e115212."Web."26"May"2015.

✨ @beerops(@sigje(#effec/vedevops✨ 30

A"life"becomes"meaningful"when"one"sees"himself"or"herself"as"an"actor"within"the"context"of"a"story.

!!"George"Howard

✨ @beerops(@sigje(#effec/vedevops✨ 31

Small%vs%Large%teams• Large'teams'+'roles'may'be'highly'segregated

• Small'teams'+'one'person'may'be'responsible'for'many'roles

✨ @beerops(@sigje(#effec/vedevops✨ 32

Cri$cal(Habits(for(Teams• Code&Review

• Pairing

✨ @beerops(@sigje(#effec/vedevops✨ 33

Code%Review• Max%90%minutes%in%one%se0ng

✨ @beerops(@sigje(#effec/vedevops✨ 34

Pairing• Agile'so*ware'development

• 2'people'work'together'on'1'worksta8on

• Driver':'writes'code

• Observer':'reviews'each'line

• Roles'switch'frequently

✨ @beerops(@sigje(#effec/vedevops✨ 35

Types&of&Pairing• Expert(expert

• Expert(novice

• Novice(novice

✨ @beerops(@sigje(#effec/vedevops✨ 36

Visualiza(on+of+Work• Bug/issue)queue

• Kanban

✨ @beerops(@sigje(#effec/vedevops✨ 37

Factors(for(Success• Management)buy)in

• Training

• Minimize)'pushing'

• Team)sync

✨ @beerops(@sigje(#effec/vedevops✨ 38

Workflow

Work%that%is

• orchestrated

• repeatable

• organized

• moves4from4one4state4to4another

✨ @beerops(@sigje(#effec/vedevops✨ 39

WIP• Work&in&Progress

• work&that&has&had&money&or&people&applied&to&it.

✨ @beerops(@sigje(#effec/vedevops✨ 40

Work%Iden*fica*on• name

• start)date

• end)date

• current)state

• descrip/on

• priority

✨ @beerops(@sigje(#effec/vedevops✨ 41

Task%Handling• What&is&it?

• Can&you&do&anything&with&it?

• What&is&the&next&step?

✨ @beerops(@sigje(#effec/vedevops✨ 42

Projects• Same&requirements&as&a&task

• Larger&in&scope

• May&be&comprised&of&more&than&one&task

✨ @beerops(@sigje(#effec/vedevops✨ 43

Interrupts• Non%planned%work%that%comes%in

• customer%request

• incident

• request%for%help%from%coworker

• single%point%of%knowledge%(you)%work

• high%priority%task%push%from%manager

✨ @beerops(@sigje(#effec/vedevops✨ 44

Blocked(work• Work&that&can&progress&no&further:

• dependent&teams&5&blocked&by&external&team

• insufficiently&qualified&request&5&blocked&by&requester

• dependent&on&SPOK&5&blocked&by&team

• Bme&dependent

✨ @beerops(@sigje(#effec/vedevops✨ 45

Team%Exercise

Discuss&with&your&team:

• What&is&the&difference&between&a&task&and&a&project?

• Do&you&have&interrupts?&What&are&they?

• How&do&you&determine&when&work&is&done?

Time:&15&minutes

✨ @beerops(@sigje(#effec/vedevops✨ 46

Kanban• Start&with&what&you&do&now

• Agree&to&incremental,&evolu7onary&change

• Respect

• Everyone&is&a&leader

✨ @beerops(@sigje(#effec/vedevops✨ 47

Kanban%Prac)ces• Visualize

• Limit-WIP

• Manage-flow

• Make-policies-explicit

• Implement-feedback-loops

✨ @beerops(@sigje(#effec/vedevops✨ 48

Visualize• Intent

• Alignment

• Coherence

✨ @beerops(@sigje(#effec/vedevops✨ 49

Limit%WIP• Pull%(don't%push)

✨ @beerops(@sigje(#effec/vedevops✨ 50

Manage&Flow• Monitor/measure/report

• Incremental2change

✨ @beerops(@sigje(#effec/vedevops✨ 51

Make%Policies%Explicit• Document*processes

• Group*signoff

✨ @beerops(@sigje(#effec/vedevops✨ 52

Implement(Feedback(Loops• Collabora(on

• Retrospec(ves

✨ @beerops(@sigje(#effec/vedevops✨ 53

Devops'Tools• Establish*local*development*environment

• Version*control

• Manual*7>*Automa:on*7>*Con:nuous

• Ar:facts

• Infrastructure

• Sandbox

✨ @beerops(@sigje(#effec/vedevops✨ 54

Local&Development&Environment&(LDE)• Consistent)set)of)tools)across)the)team

• Ability)to)quickly)onboard)new)engineers

✨ @beerops(@sigje(#effec/vedevops✨ 55

Provisioned*Node*,*LDE• AWS%instance%node

• Chef%DK

• Test%Kitchen

• Ruby

• ChefSpec,%ServerSpec

• Git

✨ @beerops(@sigje(#effec/vedevops✨ 56

Configura)on*Management• Process(of(iden-fying,(managing,(monitoring,(and(audi-ng(a(product(through(its(en-re(life(including(the(processes,(documenta-on,(people,(tools,(so8ware,(and(systems.

✨ @beerops(@sigje(#effec/vedevops✨ 57

Version(Control• Records)changes)to)files)or)sets)of)files)stored)within)the)system

• Enable)revisions

• Integrity)checking

• Collabora<on

✨ @beerops(@sigje(#effec/vedevops✨ 58

Ar#fact(Repository• Secure

• Trusted

• Stable

• Accessible

• Versioned

✨ @beerops(@sigje(#effec/vedevops✨ 59

Introduc)on*to*Lab*1Lab$1

User:&chefPassword:&chef

✨ @beerops(@sigje(#effec/vedevops✨ 60

Lab$1

Lab$1

Time:&15&minutes

✨ @beerops(@sigje(#effec/vedevops✨ 61

Introduc)on*to*Lab*2Lab$2

✨ @beerops(@sigje(#effec/vedevops✨ 62

Lab$2

Lab$2

Time:&15&minutes

✨ @beerops(@sigje(#effec/vedevops✨ 63

Welcome'Back• git%review%

✨ @beerops(@sigje(#effec/vedevops✨ 64

git$pull

git$pull$REMOTE

✨ @beerops(@sigje(#effec/vedevops✨ 65

git$push$remote$branch• transfer)commits)from)a)local)repo)to)a)remote)repo.

• counterpart)to)git)fetch

✨ @beerops(@sigje(#effec/vedevops✨ 66

Infrastructure• Aggregate(of(applica/ons,(configura/ons,(access(control,(data,(compute(nodes,(network,(storage,(processes,(and(people.

✨ @beerops(@sigje(#effec/vedevops✨ 67

Infrastructure+Automa/on• Systems(that(reduce(the(burden(on(people(to(manage(services(and(increase(the(quality,(accuracy(and(precision(of(a(service(to(the(consumers(of(a(service

✨ @beerops(@sigje(#effec/vedevops✨ 68

Infrastructure+Automa/on+Tools• Chef

• Puppet

• Ansible

• Salt

• CFEngine

✨ @beerops(@sigje(#effec/vedevops✨ 69

Introduc)on*to*Chef

✨ @beerops(@sigje(#effec/vedevops✨ 70

Resources• Ingredients+of+infrastructure

• Basic+building+blocks

✨ @beerops(@sigje(#effec/vedevops✨ 71

Resource(Declara,on

RESOURCETYPE "RESOURCE_NAME" do PARAMETER PARAMETER_VALUEend

✨ @beerops(@sigje(#effec/vedevops✨ 72

Example(Resource(Type(1(package

A"package"to"be"installed:

package "httpd" do action :installend

✨ @beerops(@sigje(#effec/vedevops✨ 73

Example(Resource(Type(1(service

A"service"that"should"be"started:

service "httpd" do supports :restart => :true action [:enable, :start]end

✨ @beerops(@sigje(#effec/vedevops✨ 74

Resources

A"resource"is"a"statement"of"policy"that:

• Describes)the)desired)state)for)an)element

• Specifies)a)resource)type888such)as)package,)template,)or)service

• Lists)addi;onal)details)(also)known)as)parameters),)as)necessary

• Are)grouped)into)recipes

✨ @beerops(@sigje(#effec/vedevops✨ 75

Recipes• Collec'on)of)ordered)resources

• Combina'on)of)ruby)and)Chef)DSL

✨ @beerops(@sigje(#effec/vedevops✨ 76

Cookbooks• Thema'c

• Collec'on-of-recipes-and-other-suppor'ng-files

✨ @beerops(@sigje(#effec/vedevops✨ 77

Roles• Abstrac)on,describing,func)on,of,system

• Name

• Descrip)on

• Run,list,(ordered,list,of,recipes,and,roles)

✨ @beerops(@sigje(#effec/vedevops✨ 78

Run$List• Ordered&list&of&recipes&and&roles

• Specific&to&a&node

✨ @beerops(@sigje(#effec/vedevops✨ 79

Nodes• Machine)(virtual,)physical,)cloud)server,)or)other)device))that)is)managed)by)Chef

✨ @beerops(@sigje(#effec/vedevops✨ 80

Environments• Abstrac)on,models,workflow

• Name

• Descrip)on

• Cookbook,version,pinning

✨ @beerops(@sigje(#effec/vedevops✨ 81

Supermarket• Community*site*with*a*number*of*cookbooks

• Read*before*using*in*your*environment

✨ @beerops(@sigje(#effec/vedevops✨ 82

Chef%DK• Chef&development&kit

• Includes&a&number&of&u8li8es&and&so9ware&to&facilitate&cookbook&crea8on

• Free&download&off&of&the&website

✨ @beerops(@sigje(#effec/vedevops✨ 83

Berkshelf• Dependency)management

• Included)with)Chef)DK

✨ @beerops(@sigje(#effec/vedevops✨ 84

Test%Kitchen• Included)with)Chef)DK

• Sandbox)automa8on

• Test)harness

✨ @beerops(@sigje(#effec/vedevops✨ 85

Test%Kitchen• Execute(code(on(one(or(more(pla1orms

• Driver(plugins(suppor7ng(various(cloud(and(virtualiza7on(providers

✨ @beerops(@sigje(#effec/vedevops✨ 86

.kitchen.yml• driver

• provisioner

• pla-orms

• suites

✨ @beerops(@sigje(#effec/vedevops✨ 87

.kitchen.yml,driver• virtualiza*on-or-cloud-provider

Example:)vagrant,)docker

✨ @beerops(@sigje(#effec/vedevops✨ 88

.kitchen.yml,provisioner• applica'on*to*configure*the*node

Example:)chef_zero

✨ @beerops(@sigje(#effec/vedevops✨ 89

.kitchen.yml,pla/orms• target'opera*ng'systems

Example:)centos/6.5

✨ @beerops(@sigje(#effec/vedevops✨ 90

.kitchen.yml,suites• target'configura-ons

Example:

name:default run_list: - recipe[apache::default] attributes:

✨ @beerops(@sigje(#effec/vedevops✨ 91

Kitchen(commands((1/2)• kitchen)init

• kitchen)list

• kitchen)create

• kitchen)converge

✨ @beerops(@sigje(#effec/vedevops✨ 92

Kitchen(commands((2/2)• kitchen)verify

• kitchen)destroy

• kitchen)test

✨ @beerops(@sigje(#effec/vedevops✨ 93

Docker• Images

• Registries

• Containers

✨ @beerops(@sigje(#effec/vedevops✨ 94

Introduc)on*to*Lab*3Lab$3

✨ @beerops(@sigje(#effec/vedevops✨ 95

Lab$3

Time:&30&minutes

✨ @beerops(@sigje(#effec/vedevops✨ 96

✨ @beerops(@sigje(#effec/vedevops✨ 97

Managing&Risk• Test

• Small*frequent*releases

✨ @beerops(@sigje(#effec/vedevops✨ 98

Lin$ng• Ensure(code(adheres(to(styles(and(conven2ons

• Weave(expecta2ons(into(development

• Encourages(collabora2on

✨ @beerops(@sigje(#effec/vedevops✨ 99

Tes$ng• Documen)ng+objec)ves+and+intent

• Measuring+"done"

✨ @beerops(@sigje(#effec/vedevops✨ 100

Code%Correctness• foodcri(c

• rubocop

✨ @beerops(@sigje(#effec/vedevops✨ 101

Integra(on*Tests• ServerSpec

✨ @beerops(@sigje(#effec/vedevops✨ 102

Rubocop• Ruby&linter

• Ruby&style&guide

• Included&with&ChefDK

✨ @beerops(@sigje(#effec/vedevops✨ 103

Rubocop'Example$ rubocop cookbooks/COOKBOOK1 cookbooks/COOKBOOK2 cookbooks/COOKBOOK4

✨ @beerops(@sigje(#effec/vedevops✨ 104

Reading(Rubocop(OutputInspecting 8 filesCWCWCCCC

• ."means"that"the"file"contains"no"issues

• C"means"a"issue"with"conven2on

• W"means"a"warning

• E"means"an"error

• F"means"an"fatal"error✨ @beerops(@sigje(#effec/vedevops✨ 105

Disabling)Rubocop)cops

Any$configura,on$in$.rubocop.yml$is$disabled.

To#disable#string#literals:

StringLiterals: Enabled: false

✨ @beerops(@sigje(#effec/vedevops✨ 106

Foodcri'c• Chef&linter

• Chef&style&guide

• Included&with&ChefDK

✨ @beerops(@sigje(#effec/vedevops✨ 107

Foodcri'c(Example

$ foodcritic cookbooks/setup

✨ @beerops(@sigje(#effec/vedevops✨ 108

Reading(Foodcri-c(OutputFC008: Generated cookbook metadata needs updating: ./metadata.rb:2

✨ @beerops(@sigje(#effec/vedevops✨ 109

ServerSpec• Tests&to&verify&servers&func0onality

• Resource&types

• Package,&service,&user,&and&many&others

• Integrates&with&Test&Kitchen

• h?p://serverspec.org

✨ @beerops(@sigje(#effec/vedevops✨ 110

ServerSpec'Generic'Form

describe "<subject>" do it "<description>" do expect(thing).to eq result endend

✨ @beerops(@sigje(#effec/vedevops✨ 111

ServerSpec'Poten,al'Tests• Is$the$service$running?

• Is$the$port$accessible?

• Is$the$expected$content$being$served?

✨ @beerops(@sigje(#effec/vedevops✨ 112

ServerSpec'Example

describe 'apache' do it "is installed" do expect(package 'httpd').to be_installed end it "is running" do expect(service 'httpd').to be_running endend

✨ @beerops(@sigje(#effec/vedevops✨ 113

Reading(ServerSpec(Outputapp::default httpd service is running

Finished in 0.26429 seconds (files took 0.7166 seconds to load)1 example, 0 failures

✨ @beerops(@sigje(#effec/vedevops✨ 114

✨ @beerops(@sigje(#effec/vedevops✨ 115

Introduc)on*to*Lab*4Lab$4

✨ @beerops(@sigje(#effec/vedevops✨ 116

Lab$4

Time:&30&minutes

✨ @beerops(@sigje(#effec/vedevops✨ 117

Introduc)on*to*Lab*5Lab$4

✨ @beerops(@sigje(#effec/vedevops✨ 118

Lab$5

Time:&20&minutes

✨ @beerops(@sigje(#effec/vedevops✨ 119

Test,&Monitor,&or&Diagnos/c2

1. Where'is'it'going'to'run?

2. When'is'it'going'to'run?

3. How'o4en'will'it'run?

4. Who'is'going'to'consume'the'result?

5. What'is'the'en;ty'going'to'do'with'it?

2"Lam,"Yvonne."'Sysadvent:"Day"5"6"How"To"Talk"About"Monitors,"Tests,"And"DiagnosCcs'."Sysadvent.blogspot.com."N.p.,"2014."Web."26"May"2015.

✨ @beerops(@sigje(#effec/vedevops✨ 120

Measuring*Impact*and*Value*of*Change

✨ @beerops(@sigje(#effec/vedevops✨ 121

Impact'of'Change

✨ @beerops(@sigje(#effec/vedevops✨ 122

Impact'on'Availability

• Overall(site/app(availability

• Individual(service(availability

✨ @beerops(@sigje(#effec/vedevops✨ 123

Availability)Monitoring

• Up$me:

• Pingdom,/Moni$s,/Uptrends,/etc

• Ver$cal/Line/Technology:

• Availability/a?er/deploys/changes

✨ @beerops(@sigje(#effec/vedevops✨ 124

✨ @beerops(@sigje(#effec/vedevops✨ 125

Even%nator

✨ @beerops(@sigje(#effec/vedevops✨ 126

✨ @beerops(@sigje(#effec/vedevops✨ 127

Service'Availability

• Nagios:)Service/level)monitoring)and)aler5ng

• Nagios/herald:)Alert)context

• OpsWeekly:)Historical)alert)data

✨ @beerops(@sigje(#effec/vedevops✨ 128

Nagios

✨ @beerops(@sigje(#effec/vedevops✨ 129

define command { command_name check_mongodb_query command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -q $ARG5$}

define service { use generic-service hostgroup_name Mongo Servers service_description Mongo Connect Check check_command check_mongodb!connect!27017!2!4}

✨ @beerops(@sigje(#effec/vedevops✨ 130

define servicedependency{ host_name WWW1 service_description Apache Web Server dependent_host_name WWW1 dependent_service_description Main Web Site execution_failure_criteria n notification_failure_criteria w,u,c}

✨ @beerops(@sigje(#effec/vedevops✨ 131

Nagios'herald

✨ @beerops(@sigje(#effec/vedevops✨ 132

✨ @beerops(@sigje(#effec/vedevops✨ 133

OpsWeekly

✨ @beerops(@sigje(#effec/vedevops✨ 134

✨ @beerops(@sigje(#effec/vedevops✨ 135

✨ @beerops(@sigje(#effec/vedevops✨ 136

✨ @beerops(@sigje(#effec/vedevops✨ 137

✨ @beerops(@sigje(#effec/vedevops✨ 138

Impact'on'Quality

• Service(quality((SLAs)

• Visibility(of(quality

✨ @beerops(@sigje(#effec/vedevops✨ 139

Statsd

✨ @beerops(@sigje(#effec/vedevops✨ 140

>>> import statsd>>>>>> timer = statsd.Timer('MyApplication')>>>>>> timer.start()>>> # do something here>>> timer.stop('SomeTimer')

✨ @beerops(@sigje(#effec/vedevops✨ 141

>>> import statsd>>>>>> counter = statsd.Counter('MyApplication')>>> # do something here>>> counter += 1

✨ @beerops(@sigje(#effec/vedevops✨ 142

>>> import statsd>>>>>> average = statsd.Average('MyApplication', connection)>>> # do something here>>> average.send('SomeName', 'somekey:%d'.format(value))

✨ @beerops(@sigje(#effec/vedevops✨ 143

Graphite

✨ @beerops(@sigje(#effec/vedevops✨ 144

Value&of&Change

✨ @beerops(@sigje(#effec/vedevops✨ 145

Value&of&Availability

• Be$er&for&customers

• Be$er&for&employees&(internal&services)

• Fewer&pages

✨ @beerops(@sigje(#effec/vedevops✨ 146

Value&of&Quality

• Deploys)take)less)-me

• Also)be1er)for)customers

• More)visibility)into)issues

✨ @beerops(@sigje(#effec/vedevops✨ 147

Retrospec)ve+!

✨ @beerops(@sigje(#effec/vedevops✨ 148

Review• Recognizing*your*Devops*Narra4ve

• Applica4on*Deployment*Planning

• Infrastructure*as*code

• Introducing*repeatable,*testable*change

• Measuring*impact*and*value*of*change

✨ @beerops(@sigje(#effec/vedevops✨ 149

Next%Steps• Manual,(Automa-on(to(Con-nuous("X"

• Be(the(storylistener(and(storyteller(in(your(org

• Effec-ve(Devops(available(in(Early(Release

✨ @beerops(@sigje(#effec/vedevops✨ 150

Thank&you!&❤@sigje

@beerops

✨ @beerops(@sigje(#effec/vedevops✨ 151

✨ @beerops(@sigje(#effec/vedevops✨ 152

top related