devops with smell

72
DEVOPS WITH SMELL ANTONS KRANGA

Upload: latcraft

Post on 14-Feb-2017

215 views

Category:

Software


0 download

TRANSCRIPT

Page 1: DevOps With Smell

DEVOPS WITH SMELLANTONS KRANGA

Page 2: DevOps With Smell

~ WHOAMI

▸ Full stack developer ~ 15years

▸ Cloud Architect

▸ DevOps evangelist

▸ Innovation Center of Accenture Cloud Platform

▸ Speaker

▸ Marathon runner

ANTONS KRANGA

Page 3: DevOps With Smell

WHY DEVOPSDEVELOPERS VERSION

Page 4: DevOps With Smell

DRIVERS FOR SOFTWARE DEVELOPMENT

▸ development price

BEFORE AFTER

▸ innovations speed

Page 5: DevOps With Smell

DRIVERS FOR SOFTWARE DEVELOPMENT

▸ development price

BEFORE AFTER

▸ innovations speed

▸ specialization silos

▸ ops comes first

▸ cross functional

▸ software defined data centers

▸ complex communication ▸ complexity theory

Page 6: DevOps With Smell

DEVOPS IS AN ENVIRONMENT WHERE PEOPLE TALK

me :)

DEFINITION OF DEVOPS

Page 7: DevOps With Smell

SMELL SYMPTOMADEVOPS ANTIPATTERNS

Page 8: DevOps With Smell

ANTIPATTERN # 0

UNICORNS VS HORSES

You cannot be a unicorn when all others are horses

Page 9: DevOps With Smell

ANTIPATTERN # 0.1

DEVOPS IN A BOX

You cannot buy culture!

▸ Buy a Golden DevOps LVL5

▸ Become certified DevOps master

▸ Give me DevOps compliance checklist

▸ Give me 5 key DevOps control metrics

Page 10: DevOps With Smell

ANTIPATTERN # 0.2

REBRANDING

DevOps != Configuration ManagementDevOps != Release Management|DevOps != Product Management…DevOps != (*) Management

DEVOPS IS THE CULTURE YOU CANNOT FIND IN IN ITIL CATALOG

Page 11: DevOps With Smell

ANTIPATTERN # 1

DEVOPS AS A BLACK BOX

What is the value in DevOps?

! Developer

! Sys-Op

Page 12: DevOps With Smell

ANTIPATTERN # 2

SORRY, NOT MY DEPARTMENT

Bread ownership and specialization with autonomous teams

vs

http://martinfowler.com/bliki/DevOpsCulture.html

Page 13: DevOps With Smell

ANTIPATTERN # 2.1

DEVOPS AS A SILO

DevOps teams build their own Silo

▸ You cannot talk to DevOps

▸ Use Jira instead !!!!

▸ RTFM Architecture

Page 14: DevOps With Smell

ANTIPATTERN # 3

DEFINITION OF DONE

▸ DoD fails with “ilities”

▸ Services can be easily “undone”

Page 15: DevOps With Smell

ANTIPATTERN # 4

FEAR OF RELEASE

RELEASE === RISK

NO RELEAE NO REVENUE

vs

Page 16: DevOps With Smell

ANTIPATTERN # 5

SNOWFLAKE SERVER

Applying changes to Server Instance manually leads to unique and distinct server configuration footprint (TECHNICAL DEBT)

http://martinfowler.com/bliki/SnowflakeServer.html

Page 17: DevOps With Smell

VITAMINSDEVOPS ANTIPATTERNS

Page 18: DevOps With Smell

VITAMINS

INFRASTRUCTURE AS CODE

ENV

ENV

ENV

DEV …CODE

Page 19: DevOps With Smell

VITAMINS

INFRASTRUCTURE AS CODE

DEV

Code is aContract OPS

Page 20: DevOps With Smell

VITAMINS

INFRASTRUCTURE AS CODE

DEV

Code is aContract OPS

Put infrastructure into SCM

Page 21: DevOps With Smell

VITAMINS

INFRASTRUCTURE AS CODE

DEV

Code is aContract OPS`

Make infrastructure part of app baseline

Page 22: DevOps With Smell

VITAMINS

WE LIKE CI/CD

▸ We need feedback not to be afraid

▸ Feedback != SPAM

▸ It’s about size of release not frequency

▸ Don’t judge for broken builds

▸ Go home when build is green

Page 23: DevOps With Smell

PAINKILLERSDEVOPS ANTIPATTERNS

Page 24: DevOps With Smell

ANTIPATTERN # 6

“JENKINS” DRIVEN DEVELOPMENT

`

`

`

Pipelines are easily becomes your single point of failure

CI

Page 25: DevOps With Smell

ANTIPATTERN # 6: PROPOSED SOLUTION

SHIFTING RESPONSIBILITY

CI users (DEVs or OPs) are best for managing their jobs

▸ Use DSL to build CI/CD pipelines

▸ Store CI/CD pipelines in git if possible make it part of app baseline

▸ Generate and bootsrap pipelines with API

Page 26: DevOps With Smell

ANTIPATTERN # 7

SLOW PIPELINES

` ` `

Over-engineered Pipelines

Pipeline execution takes too long

Leads to delayed feedback

Page 27: DevOps With Smell

ANTIPATTERN # 6: PROPOSED SOLUTION

SLOW PIPELINES

`

`

`

Parallelize where you can!

Page 28: DevOps With Smell

ANTIPATTERN # 7

MANUAL PROMOTION

Engineer PRODUATIntegr TestsDEV System Tests

ENVENVENV ENV

Page 29: DevOps With Smell

ANTIPATTERN # 7: PROPOSED SOLUTION

KILL SWITCH FOR MANUAL TESTING

PRODUATIntegr TestsDEV System Tests

ENVENVENV ENV

TEST

Page 30: DevOps With Smell

ANTIPATTERN # 7: PROPOSED SOLUTION

AB TESTING

PROD A

Integr TestsDEV System Tests

ENV

ENVENV

TEST A

PROD B

ENV

TEST Bfeedback

feedback

measure

Page 31: DevOps With Smell

ANTIPATTERN # 7.1

CODEREVIEW

PRODUATIntegr Tests System Tests

ENVENVENV ENV

DEV B

feature branch DEV Ccode

review

Page 32: DevOps With Smell

ANTIPATTERN # 7.1: PROPOSED SOLUTION

REACTIVE CODEREVIEW

ReleaseIntegr Tests System Tests

ENVENV ENV

Full Regression

Calc technicaldebt

ENV

Nightly

DEV A

Standup

code review

Page 33: DevOps With Smell

ANTIPATTERN # 7.1

CODEREVIEW

PRODUATIntegr TestsDEV A System Tests

ENVENVENV ENVmaster

DEV B

feature branch DEV Ccode

review

Page 34: DevOps With Smell

ANTIPATTERN # 8

DEV DEPLOYMENT VIA CI

DEVENV

DEVENV

DEVENV

…DEV CI

Page 35: DevOps With Smell

ANTIPATTERN # 8: PROPOSED SOLUTION

DEV DEPLOYMENT VIA CI

DEV …NO CI

DEVENV

DEVENV

DEVENV

Page 36: DevOps With Smell

ANTIPATTERN # 8: PROPOSED SOLUTION

DEV DEPLOYMENT VIA CI

ENV

ENV

DEVENV

…DEV NO CI

WANT TO HACK? SURE!

Page 37: DevOps With Smell

ANTIPATTERN # 8: PROPOSED SOLUTION

DEV DEPLOYMENT VIA CI

ENV

ENV

DEVENV

YOU BROKE IT? YOU FIX IT!

DEV NO CI

Page 38: DevOps With Smell

ANTIBIOTICSDEVOPS ANTIPATTERNS

Page 39: DevOps With Smell

ANTIPATTERN # 9

GOLDEN IMAGE

VM

OS

Problems

▸ Maintained manually

▸ No collaboration

▸ Hard to distribute

▸ Non versioning

Chnorr Service

Page 40: DevOps With Smell

ANTIPATTERN # 9: PROPOSED SOLUTION

PROVISIONING

OS Chnorr Service

Page 41: DevOps With Smell

ANTIPATTERN # 9: PROPOSED SOLUTION

PROVISIONING

OS

Configure

Infrastructurecode

Harden Download Install

Chnorr Service

Page 42: DevOps With Smell

ANTIPATTERN # 9: PROPOSED SOLUTION

PROVISIONING

OS

Configure

Infrastructurecode

Harden Download Install

cmdb

Chnorr Service

Page 43: DevOps With Smell

ANTIPATTERN # A

FRAGILE PROVISIONING

OS

Configure

Infrastructurecode

Harden Download Install

▸ Provisioning success < 100%

▸ Time to provision

Chnorr Service

Page 44: DevOps With Smell

ANTIPATTERN # A

FRAGILE PROVISIONING

OS

Configure

Infrastructurecode

Harden Download Install

▸ Provisioning success < 100%

▸ Time to provision

Chnorr Service

Page 45: DevOps With Smell

ANTIPATTERN # A

FRAGILE PROVISIONING

OS

Configure

Infrastructurecode

Harden Download Install

▸ Provisioning success < 100%

▸ Time to provision

Chnorr Service

Page 46: DevOps With Smell

ANTIPATTERN # A

FRAGILE PROVISIONING

OS

Configure

Infrastructurecode

Harden Download Install

▸ Provisioning success < 100%

▸ Time to provision

Chnorr Service

Page 47: DevOps With Smell

ANTIPATTERN # A.1

PRIVATE DATA CENTER PROVISIONING

PRIVATE DATA CENTER: NO INTERNET!!!

OS

ConfigureHarden Download Install

Chnorr Service

Page 48: DevOps With Smell

ANTIPATTERN # A.1

PRIVATE DATA CENTER PROVISIONING

PRIVATE DATA CENTER: NO INTERNET!!!

OS

ConfigureHarden Download Install

apt yum gem

Chnorr Service

Page 49: DevOps With Smell

ANTIPATTERN # A.1

PRIVATE DATA CENTER PROVISIONING

PRIVATE DATA CENTER: NO INTERNET!!!

OS

ConfigureHarden Download Install

apt yum gem

complicated?

Chnorr Service

Page 50: DevOps With Smell

ANTIPATTERN # A.1: PROPOSED SOLUTION

STEM CELLS

static dynamic

OS

ConfigureHarden Download Install

Chnorr Service

Page 51: DevOps With Smell

ANTIPATTERN # A.1: PROPOSED SOLUTION

STEM CELLS

OS

ConfigureHarden Download Install

LAB PRIVATE DATA CENTER

Chnorr Service

Page 52: DevOps With Smell

ANTIPATTERN # A.1: PROPOSED SOLUTION

STEM CELLS

OS

ConfigureHarden Download Install

LAB PRIVATE DATA CENTER

code

packerPROVISIONSNAPSHOT

docker

Chnorr Service

Page 53: DevOps With Smell

ANTIPATTERN # B

DEPENDENCY HELL

OS

Configure

Infrastructurecode

Harden Download Install

▸ Version of libraries

▸ Version of packages

▸ Maintain dependencies

Chnorr Service

Page 54: DevOps With Smell

ANTIPATTERN # B

DEPENDENCY HELL

OS

Configure

Infrastructurecode

Harden Download Install

▸ Version of libraries

▸ Version of packages

▸ Maintain dependencies

▸ Version of your infra code

▸ Maintain dependencies

Chnorr Service

Page 55: DevOps With Smell

ANTIPATTERN # B: PROPOSED SOLUTION

CANARY BUILDS

Accept TestsCI

Unit Test Provision

PRECISE version libs

Accept TestsCI Unit Test Provision

LATEST version libs

Chnorr Service

Chnorr Service

Page 56: DevOps With Smell

ANTIPATTERN # C

INFRASTRUCTURE PETAttributes of Pet

▸ Have meaningful names

▸ Long living instance

▸ Often needs manual nursing

▸ Requires scary patching

▸ Leads to snowflakes

▸ PaaS is modern pet

Page 57: DevOps With Smell

ANTIPATTERN # C: PROPOSED SOLUTION

INFRASTRUCTURE CATTLEAttributes of Pet▸ Have numbers in its name

▸ Short living instance

▸ Immutable configuration

▸ Recreate instead of patching

▸ Requires careful planning

Page 58: DevOps With Smell

ANTIPATTERN # C: PROPOSED SOLUTION

PET TO TRANSFORMATION CATTLE EXAMPLE

Chnorr Service

Database

Page 59: DevOps With Smell

ANTIPATTERN # C: PROPOSED SOLUTION

PET TO TRANSFORMATION CATTLE EXAMPLE

Chnorr Service

Database

Page 60: DevOps With Smell

ANTIPATTERN # C: PROPOSED SOLUTION

PET TO TRANSFORMATION CATTLE EXAMPLE

Chnorr Service

Database

Cattle

Pet

Page 61: DevOps With Smell

ANTIPATTERN # C: PROPOSED SOLUTION

PET TO TRANSFORMATION CATTLE EXAMPLE

Chnorr Service

Database

Cattle

Pet

User Data

Page 62: DevOps With Smell

ANTIPATTERN # D

SECRETS LEAK

OS

Configure

Infrastructurecode

Install

cmdbwrong place

for your secretswrong place

for your secrets

Chnorr Service

Page 63: DevOps With Smell

ANTIPATTERN # D: PROPOSED SOLUTION

SECRETS LEAK

▸ Don’t store secrets with code

▸ Don’t store secrets with configuration

▸ Don’t leave secrets in service

Secrets DON’Ts

Page 64: DevOps With Smell

ANTIPATTERN # D: PROPOSED SOLUTION

SECRETS LEAK

▸ Secret can be leased and rotated

▸ tmpfs is your fiend

Secrets DOs

Page 65: DevOps With Smell

ANTIPATTERN # D: PROPOSED SOLUTION

SECURITY LEASING EXAMPLE

Chnorr Service vault

consul

IAM

Database

api

x hours leasing

AWS

Page 66: DevOps With Smell

TAKEAWAYSGOOD INFRA CODE

Page 67: DevOps With Smell

TAKEAWAYS

LEARN PATTERNS BEFORE TOOLS

Patterns Tools

vs

Page 68: DevOps With Smell

TAKEAWAYS

EVERYTHING MUST HAVE AN API

REST

DSL

CLI

Page 69: DevOps With Smell

TAKEAWAYS

SELF TESTABLE CODE

▸ Use assertions for infrastructure code

▸ Use acceptance test frameworks

Tests improves your confidence

Page 70: DevOps With Smell

TAKEAWAYS

READING

▸ Book: A Human Error Approach to Aviation Accident Analysis

▸ Author: Douglas A. Wiegmann Scott A. Shappell

▸ ISBN: 978-0754618737

Page 71: DevOps With Smell

TAKEAWAYS

READING

▸ Book: Clean Code

▸ Author: Robert C Martin

▸ ISBN: 978-0132350884

Page 72: DevOps With Smell

THANK YOU