$30 off During Our Annual Pro Sale. View Details »

Successful Practices for Continuous Delivery

Successful Practices for Continuous Delivery

nfrastructure as Code and DevOps practices are necessary pre-requisites for safely adopting Continuous Delivery. This talk will explore some of the practices your team will need to adopt to safely move fast, continuously delivering value to your customers. It will include a demonstration of Chef's proven approach to a DevOps workflow including Chef Compliance, Chef Delivery, and more.

This was presented at the Bay Area Chef User Group - http://www.meetup.com/The-Bay-Area-Chef-User-Group/events/231113639/

Nathen Harvey

May 18, 2016
Tweet

More Decks by Nathen Harvey

Other Decks in Technology

Transcript

  1. Nathen Harvey | VP, Community Development | [email protected]
    @nathenharvey

    View Slide

  2. Nathen Harvey
    VP, Community Development at Chef
    Co-host of the Food Fight Show Podcast
    Occasional farmer – http://ei.chef.io
    Love eggs – http://eggs.chef.io
    Part-time detective - http://bit.ly/detectivedecker
    @nathenharvey
    [email protected]

    View Slide

  3. EVERY business is a software business
    We’re going to be a software
    company with airplanes.
    – CIO, Alaska Airlines

    View Slide

  4. Quality and innovation, historically a tradeoff
    QUALITY/COMPLIANCE
    RATE OF INNOVATION

    View Slide

  5. The game changer: rapid time to value
    Innovation
    Quality/
    Compliance
    Dynamic
    Infrastructure

    View Slide

  6. Dynamic infrastructure
    Migrate applications to the cloud and support hybrid and multi-cloud
    environments. Automate the management of heterogeneous
    networks, including legacy systems.
    •  Provisioning and setting up environments
    •  Dynamic scaling of compute resources
    •  Migrating legacy workloads to the cloud
    •  Multi cloud and hybrid cloud deployment
    •  Support for heterogeneous environments

    View Slide

  7. The game changer: rapid time to value
    Innovation
    Quality/
    Compliance
    Dynamic
    Infrastructure
    Infrastructure as Code
    Automate the Stack
    +

    View Slide

  8. Infrastructure as Code
    •  Programmatically provision and configure
    components
    •  Treat like any other code base
    •  Reconstruct business from code repository, data
    backup, and compute resources

    View Slide

  9. Automation
    Turn infrastructure into code—infrastructure as code is versionable,
    testable and repeatable. Manual processes become a thing of the
    past.
    •  Automated, full-stack application policies
    •  Package and service installation
    •  Versionable, testable, repeatable workflow
    •  Scalable application policies
    •  Management of interdependencies across nodes

    View Slide

  10. Describe Infrastructure as Code
    httpd_service 'customers' do
    mpm 'prefork'
    action [:create, :start]
    end
    httpd_config 'customers' do
    instance 'customers'
    source 'customers.conf.erb'
    notifies :restart, 'httpd_service[customers]'
    end
    directory '/var/www/customers/public_html' do
    recursive true
    end

    View Slide

  11. Test the Code
    describe 'apache::default' do
    context 'When all attributes are default, on an unspecified platform' do
    let(:chef_run) do
    runner = ChefSpec::ServerRunner.new
    runner.converge(described_recipe)
    end
    it 'converges successfully' do
    expect { chef_run }.to_not raise_error
    end
    it 'installs apache' do
    expect(chef_run).to install_package 'apache2'
    end
    end
    end

    View Slide

  12. Version the Code & the Artifact
    name 'cmgw'
    maintainer 'Chef Software, Inc.'
    maintainer_email '[email protected]'
    license 'apache2'
    description 'Installs/Configures cmgw'
    long_description 'Installs/Configures cmgw'
    version '0.1.0'

    View Slide

  13. The game changer: rapid time to value
    Innovation
    Quality/
    Compliance
    Dynamic
    Infrastructure
    Infrastructure as Code
    Automate the Stack
    DevOps
    + +

    View Slide

  14. DEVOPS
    A cultural and professional movement,
    focused on how we build and operate
    high velocity organizations, born from
    the experiences of its practitioners.

    View Slide

  15. PEOPLE
    PRODUCTS
    COMPANIES

    View Slide

  16. WE ARE LEAN
    •  Eliminate non-value-added action (Waste/Muda)
    •  Pull over Push
    •  Kaizen (Continuous Improvement)
    •  Kaikaku (Disruptive Change)
    •  Small Batch + Experimentation

    View Slide

  17. View Slide

  18. UBIQUITOUS
    WORKFLOW
    AUTOMATION

    View Slide

  19. DIVERSITY

    View Slide

  20. DevOps workflow & culture
    Eliminate silos and lower the overhead of IT operations and service
    management by supporting DevOps culture. Build communities.
    •  Unified workflow for application and infrastructure
    •  Integration with version control for dev and ops
    •  Support for automated testing of infrastructure and
    applications
    •  Integration of security and compliance into product
    development
    •  Advanced, high-velocity workflow

    View Slide

  21. The rewards?*
    *source: Dr. Nicole Forsgren research on DevOps
    More deployments
    Ship faster
    Faster MTTR after issues
    More profits, market share, and productivity
    Market cap goes up

    View Slide

  22. Continuous delivery of infrastructure & apps
    Implement a high-velocity software delivery pipeline that integrates
    application and infrastructure. Eliminate the risks incurred with large,
    infrequent releases.
    •  Rapid provisioning of dev and test environments
    •  Ensure consistency and repeatability of environments
    •  Unified pipeline for infrastructure, runtime
    environments and applications
    •  Support for large teams with multiple projects
    •  Advanced, high-velocity workflow

    View Slide

  23. View Slide

  24. MANAGE RISK
    •  Small batches, near term hypothesis
    •  Validation comes from customers
    •  Introduce near-term volatility to gain decreased
    long-term risk

    View Slide

  25. CONTINUOUS INTEGRATION
    •  Always integrate branches to master
    •  They should be short lived, iterative branches
    •  Fix the build when it goes red

    View Slide

  26. THE FOUR-EYE RULE

    View Slide

  27. WRITE TESTS
    •  Unit test (a single function)
    •  Integration tests (multiple classes/units)
    •  Functional tests (user-oriented, high-level, full
    stack)
    •  Smoke tests (quickly determine if the system is
    “working”)

    View Slide

  28. ONE PATH FOR CHANGE
    •  The way change moves through your
    organization is fixed
    •  Designed to re-enforce your principles and aid
    flow
    •  Flexible at the level of execution

    View Slide

  29. CODE GOES THROUGH THE
    SAME WORKFLOW
    Applications are code
    Infrastructure is code

    View Slide

  30. Security and compliance at velocity
    Regulatory compliance and security concerns are facts of life for
    every enterprise. At the same time, competitive pressures are
    increasing. Embed requirements into the software delivery pipeline.
    Code makes compliance at velocity possible.
    •  Embed compliance into the software delivery pipeline
    •  Automated checking of compliance criteria with
    analytics
    •  Structured review process during development
    •  Discovery and analysis
    •  Patch management and remediation

    View Slide

  31. View Slide

  32. SSH Control
    SSH supports two different protocol
    versions. The original version, SSHv1, was
    subject to a number of security issues.
    Please use SSHv2 instead to avoid these.

    View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. What We Have Here Is A Communications Problem

    View Slide

  38. View Slide

  39. SSH Version Check
    describe sshd_config do
    impact 1.0
    title 'SSH Version 2'
    desc <<-EOF
    SSH supports two different protocol versions. The original version, SSHv1,
    was subject to a number of security issues. Please use SSHv2 instead to avoid
    these.
    EOF
    its('Protocol') { should cmp 2 }
    end

    View Slide

  40. View Slide

  41. View Slide

  42. View Slide

  43. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Submit
    Change

    View Slide

  44. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Lint
    Syntax
    Unit
    Submit
    Change

    View Slide

  45. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Lint
    Syntax
    Unit
    Submit
    Change
    Does this
    code change
    look good?

    View Slide

  46. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Lint
    Syntax
    Unit
    Security
    Quality
    Publish
    Lint
    Syntax
    Unit
    Submit
    Change
    Does this
    code change
    look good?

    View Slide

  47. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Lint
    Syntax
    Unit
    Security
    Quality
    Publish
    Lint
    Syntax
    Unit
    Provision
    Deploy
    Smoke
    Functional
    Submit
    Change
    Does this
    code change
    look good?

    View Slide

  48. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Lint
    Syntax
    Unit
    Security
    Quality
    Publish
    Lint
    Syntax
    Unit
    Provision
    Deploy
    Smoke
    Functional
    Submit
    Change
    Does this
    code change
    look good?
    Do we want
    to ship this?

    View Slide

  49. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Lint
    Syntax
    Unit
    Security
    Quality
    Publish
    Lint
    Syntax
    Unit
    Provision
    Deploy
    Smoke
    Functional
    Provision
    Deploy
    Smoke
    Functional
    Submit
    Change
    Does this
    code change
    look good?
    Do we want
    to ship this?

    View Slide

  50. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Lint
    Syntax
    Unit
    Security
    Quality
    Publish
    Lint
    Syntax
    Unit
    Provision
    Deploy
    Smoke
    Functional
    Provision
    Deploy
    Smoke
    Functional
    Provision
    Deploy
    Smoke
    Functional
    Submit
    Change
    Does this
    code change
    look good?
    Do we want
    to ship this?

    View Slide

  51. Unified Pipeline Shape
    The stages are fixed, and each stage has a fixed set of phases!
    APPROVE DELIVER
    Lint
    Syntax
    Unit
    Security
    Quality
    Publish
    Lint
    Syntax
    Unit
    Provision
    Deploy
    Smoke
    Functional
    Provision
    Deploy
    Smoke
    Functional
    Provision
    Deploy
    Smoke
    Functional
    Provision
    Deploy
    Smoke
    Functional
    Submit
    Change
    Does this
    code change
    look good?
    Do we want
    to ship this?

    View Slide

  52. Shared Workflow
    Delivery’s pipeline is shared across projects and teams

    View Slide

  53. View Slide

  54. View Slide

  55. Chef Provides a Proven Approach to DevOps
    ...
    ...
    ...
    Targets/Workloads
    Collaborative Dev Production
    Chef Server
    Chef Server
    Chef Supermarket
    Assessment
    Chef Compliance
    Search
    ^ Audit
    Ǘ Discover
    Deploy
    Chef Delivery!
    Local Dev
    ê Model
    ƨ Build
    ¿ Test
    Chef DK
    Chef Client & Cookbooks

    View Slide

  56. 1500 Attendees! 55+ Speakers! Registration Open! Community Celebration!
    CHEFCONF 2016 AT A GLANCE
    Workshops & Chef Training
    Community Summit
    Partner Summit
    Welcome Reception
    Keynotes
    Technical Sessions
    Happy Hour
    Keynotes
    Technical Sessions
    Awesome Chef Awards
    Community Celebration
    DAY 1 // JULY 11 DAY 2 // JULY 12 DAY 3 // JULY 13
    THREE DAYS OF OPPORTUNITY TO ENGAGE THE CHEF CUSTOMERS AND PARTNER ECOSYSTEM
    chefconf.chef.io!
    DAY 1 // JULY 11
    «  Workshops & Chef Training
    «  Community Summit
    «  Partner Summit
    «  Welcome Reception
    DAY 2 // JULY 12
    «  Keynotes
    «  Technical Sessions
    «  Happy Hour
    DAY 3 // JULY 13
    «  Keynotes
    «  Technical Sessions
    «  Awesome Chef Awards
    «  Community Celebration
    THREE DAYS OF OPPORTUNITY TO ENGAGE THE CHEF CUSTOMERS AND PARTNER ECOSYSTEM

    View Slide

  57. What questions can I answer for you?

    View Slide

  58. Nathen Harvey
    VP, Community Development at Chef
    Co-host of the Food Fight Show Podcast
    Occasional farmer – http://ei.chef.io
    Love eggs – http://eggs.chef.io
    Part-time detective - http://bit.ly/detectivedecker
    @nathenharvey
    [email protected]

    View Slide

  59. Nathen Harvey | VP, Community Development | [email protected]
    @nathenharvey

    View Slide