Demystifying DevOps

Overview

A brief history of the DevOps movement and community with a cross section view of methods and practices that break down the barriers to business agility and continuous delivery of applications.

For a term less than eight years old, DevOps remains a mysterious pursuit for many software engineering organizations.

DevOps seems intangible: you can't buy it, there is no certification, and no universal definition, yet everyone who wants it or does it has trouble identifying it.

We will cover these topics so that you can understand and chart your own journey to DevOps.

Presenter Notes

Agenda

  • A Definition and Cultural Rendering of DevOps
    • A Brief History of DevOps
    • DevOps Success, Challenges, and the Journey
  • The Technical Journey to DevOps
    • Agile Infrastructure and Infrastructure as Code
      • Microservices
      • Pets versus Cattle versus Bacteria
      • Test, Build, Deploy Pattern
    • Infrastructure Orchestration and Models
  • Epilogue: BusinessOps
    • We are all DevOps: your call to action!

Presenter Notes

Mark Lavi

Currently:

$ cat ~/.signature

DevOps and Automation Architect, Nutanix || mark.lavi@nutanix.com
mobile:+1-650-400-2100 || Twitter @calm_mark || GitHub @mlavi

$ cat ~/.profile || curl http://mlavi.github.io/about/

Previously:

  • DevOps Lead at Pertino (Cloud VPN provider)
  • Operations at Kaazing (HTML5 WebSocket pioneer)
  • Webmaster at Netscape.com, cnnfn.com, Silicon Graphics
    • Technology Evangelist for LDAP and JavaScript

Infrastructure as Code blog = http://mlavi.github.io

Presenter Notes

DevOps

Presenter Notes

What is DevOps?

A culturally rendered term, but Mark's time tested definition1 follows:

DevOps is the process of removing all friction
between the developer and customer value.

DevOps has many implications (values, tools, and practices) and it is dynamically bound to the capabilities of the people who practice it, therefore it can vary person by person on the same team.

It is a bi-directional process and concerns all internal and external customers. e.g.: DevOps for yourself on your laptop.

1Portmanteau: two or more terms combined; a hybrid or mash-up

Presenter Notes

Beware of DevOps Hype and Abuse!

DevOps is the process of removing all friction
between the developer and customer value.

Ask yourself: Does [this thing] meet our definition of DevOps?

Use your definition as a lens to evaluate any use of the term!

Presenter Notes

A Brief History of DevOps2

2009:

  • February: Agile System Administration Google Group = virtual community begins
  • May: Velocity conference in San Jose, CA:
    • "Agile Infrastructure" Slides by Andrew Clay Shafer
    • "10+ Deploys Per Day: Dev & Ops Cooperation at Flickr" Video Slides by John Allspaw and Paul Hammond
  • August: Agile 2009 conference in Chicago
    • Patrick Debois rejected talks leads him to find Andrew Clay Shafer.
      Discussion ensues and the term DevOps is born!
  • October: DevOpsDays Belgium = physical community begins

2 The History Of DevOps by Damon Edwards,
   DevOps: A History by Nell Shamrell-Harrington

Presenter Notes

A Brief History of DevOps (continued)

  • 2013: The Phoenix Project book by Gene Kim, Kevin Behr, George Spafford
    • A parable that illustrates the business impact of DevOps on a traditional manufacturer
  • 2014: Annnual State of DevOps Report begins
    • "...high-performing IT organizations are twice as likely to exceed their profitability, market share and productivity goals, and that high performers achieved higher levels of both throughput and stability."

Presenter Notes

A Brief History of DevOps (continued)

  • 2016: Measuring DevOps ROI
    • 200X deploy applications more frequently than slow performers
    • 2,555X faster lead times
    • 24X faster recovery times
    • 3X lower change failure rates
    • 4600: survey participants
  • Today: a growing mysterious world-wide movement, buzzword, and dynamic community
    • "Rediscovery" of lean processes, Agile Manifesto, etc.
    • Software discipline applied to refactoring infrastructure and operations
    • Application architectures refactor around operations
    • Manufacturing theory applied to technical work

Presenter Notes

DevOps Success and Challenges

Success

Technology + Culture transformation for business agility3

Challenges

  • Fragmentation: ecosystem involves multiple tools and platforms, fragile integrations
  • People: DevOps superstars bridge gaps, but hiring is difficult, expensive, and unscalable

3 Blog: Why is DevOps so Hard?
   Manufacturing Analog: Toyota Production System

Presenter Notes

The Journey to DevOps

We are all DevOps: continual evolution for organizations

  • Cultural change to reduce silos between Developer + Test + Operations
    • Dev + Ops; not developers vs. test/QA vs. operations
    • e.g.: ship a new feature by the end of the quarter to satisfy PR and marketing campaigns
  • Iteration and automation yielding:
    • Distributed Work: domain expertise democratized, repeatable, and auditable
      • Continuous integration, continuous delivery, continuous deployment
    • Agility: everything is ephemeral; no single point of failure
      • Fail fast, fix fast = antifragile attitude, minimize risk, increase flow

Presenter Notes

The Journey to DevOps (continued)

  • Closed loop feedback for health and value measurements4
    = monitors + logs + metrics for KPIs: Key Performance Indicators
    • Systems yeild domain KPIs which should roll up to business KPMs
    • Continuous Feedback = closed loop operations
      • What is the health of our application, APIs, key performance metrics?
      • Are we increasing the velocity and value in our pipelines?
  • All become developers and evolve into service engineers

4Proverb: "What is measured improves."

Presenter Notes

Technical Journey to DevOps: Overview

  • Agile Infrastructure
  • Infrastructure as Code
    • Immutable Infrastructure
    • Microservices
    • Pets versus Cattle versus Bacteria
  • Test, Build, Deploy Pattern
  • Infrastructure Orchestration and Models

Presenter Notes

Agile Infrastructure

  • All services, platforms, and tools are evolving
    • RESTful APIs are everywhere
    • Opportunity to codify and automate everything
    • ...on private, public or hybrid cloud architectures and bare-metal
  • Domain expertise democratized, repeatable, and auditable
  • Ephemeral everything = agility

Presenter Notes

Infrastructure as Code

Infrastructure as Code = software engineering practices applied to infrastructure

  • Version everything: even the database5
  • Configuration Management6
    • Deploy all the things!
    • Build + configure at run-time
  • Ephemeral stacks and environments
    • Test all the things!
    • Challenge: full stack orchestration

5 Blog: Database Change Management
6 Software Configuration Management Systems such as Puppet, Chef, Salt, Ansible, Juju, CFengine, etc.

Presenter Notes

Infrastructure as Code (continued)

  • Immutable Infrastructure on the rise (cattle)
    • Dynamic versus static configuration, feature flags
    • Bespoke, hand-crafted, snowflake servers = dark magick = friction
    • Automation friction = technical debt = a bug
  • Application expertise democratized, repeatable, and auditable
  • Operations as Code via behavior and test driven operations
    • I am searching for others to discuss this topic!

Presenter Notes

Immutable Infrastructure

  • Think of a system that has only:
    • a read-only filesystem
    • environment variables for dynamic, runtime configuration
  • Infrastructure artifacts = build system + configuration management at build time
    • Infrastructure is built and placed in a repository for distribution
  • Ideal for non-persistent application tiers:
    • Simplify deployment: ship logs, metrics, etc. off the "box"
    • Roll 'em in and out of the load balancer, measure twice!
    • Industry is addressing persistence, but cloud native apps are also a solution
  • Closes the risk and gap between development and production

Presenter Notes

Microservices

When monolithic, long-lived infrastructure decomposes, so withers the application architecture.

Refactoring and decomposing the application monolithic codebase into modules, each with a public API (REST), enables independent, continuous:

  • delivery = build and deploy
  • testing and monitoring

per component, team, feature, etc.

Reference: Amazon REST API manifesto

Presenter Notes

Pets versus Cattle7

Cloud agility enables ephemeral fleets

  • Pet = uptime of years, named, backup maintenence
  • Cattle = numbered, can fail and reprovision anytime
  • SGI example: 12 years uptime on IRIX! Yesterday's success = today's failure

This is a lens to evaluate infrastructure and ops; evolve to fleet management + app first design

7 Pets versus Cattle attributed to Bill Baker, MSFT

Presenter Notes

Pets vs. Cattle vs. Bacteria (continued)

Containers

  • Agile, lightweight, smaller, faster VMs:
    • ideal approach for continuous delivery of immutable infrastructure artifacts, especially microservices
    • minimal difference between laptop and production, millisecond activation
    • Bacteria8 = lifecycle on the order of seconds: build, run, test, destroy
  • Early days: Docker as a tool versus Docker as a platform
  • Production challenges remain: orchestration, health, networking, persistence, dynamic configuration -- many issues solved by adopting a container PaaS with limited flexibility

8 Bacteria is the term I learned from Tori Wieldt, New Relic Developer Advocate, seems better than "insect" which also is in use.

Presenter Notes

Test, Build, Deploy Pattern

Between development and production:

  • the differences should be minimized9
  • troubleshooting output and tools should be no different.

Therefore, development environments SHOULD EVOLVE from fully mocked systems to fully integrated application environments, leading to:

9 See Immutable Infrastructure

Presenter Notes

Test, Build, Deploy Pattern (continued)

  • Create a minimum viable product test and mock your code
  • Begin TDD: red, green, refactor

i.e.:

  • Test on your laptop
    • Develop tests to satisfy your testable code
  • Build on your laptop
  • Deploy on your laptop
    • Make code configurable with tools
    • Repeat for integration, metrics, logs, etc.
    • Commit to repository -> continuous integration & delivery

Reference: BTD Pattern Blog Entry

Presenter Notes

Infrastructure Orchestration

  • Orchestration of the entire distributed system/stack/environment
    • Application management lifecycle: all dependencies and operations
  • Continuous Deployment + Upgrades:
    • Blue-Green (Red-Black): parallel population, atomic cutover
    • Rolling vs. canary: incremental cutover with testing
    • Test and measure your operations
      • Close the loop to Continuous Delivery
  • New disciplines and opportunities:
    • API version management
    • Dynamic feature roll out: Feature flags/lightness, aka "Death to Staging"
    • RuggedDevOps and SecDevOps, NetDevOps

Presenter Notes

Infrastructure Models

  • Local versus Global Redundancy
    • Load balance everything in a local context
    • Distributed, clustered workload schedulers
    • Global load balancing of clusters
  • Automate runbooks and change controls = operations as code
    • ChatOps = democratized operations are agile ops

Presenter Notes

Epilogue: BusinessOps

  • DevOps escapes the technology domain
  • Apply DevOps to business customers, systems, and processes
  • Business agility: everything is ripe for automation!
    • Compliance10 and Security

10 Compliance at Velocity

Presenter Notes

Thank You, Questions?

DevOps is the process of removing all friction
between the developer and customer value.

$ cat ~/.signature

DevOps and Automation Architect, Nutanix || mark.lavi@nutanix.com
mobile:+1-650-400-2100 || Twitter @calm_mark || GitHub @mlavi

We are All DevOps: Your Next Steps

Presenter Notes