Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyCon 9: Continuous Delivery starts at your Development Environment

PyCon 9: Continuous Delivery starts at your Development Environment

Continuous Delivery is the automation of our deployment and QA, isn’t it? The industrialized software production chain that makes our products more stable. Well, kind of. It’s more than that. It can save you tons of pain when you apply its principles everywhere. This talk explains how you free yourself by doing infrastructure like software development. Everything under control. Everything under version control.

See the original presentation at https://slides.com/bittner/pycon9-continuous-delivery-starts-at-your-development-environment/

Peter Bittner

April 22, 2018
Tweet

More Decks by Peter Bittner

Other Decks in Technology

Transcript

  1. Continuous Delivery
    Continuous Delivery
    starts at your
    starts at your
    Development
    Development
    Environment
    Environment
    PyCon 9, 2018
    PyCon 9, 2018
    live slides @ tinyurl.com/py9dev

    View full-size slide

  2. Peter Bittner
    Peter Bittner
    Developer (of people, companies, code)
    Co-founder Painless Software
    @peterbittner, [email protected]
    behave-django codeship-yaml sentrylogs
    django-apptemplates djangocms-maps

    View full-size slide

  3. Agenda
    Agenda
    1. Continuous Delivery Intro
    2. More Than Just Servers
    3. Demo: Setup Automation
    4. Demo: Infrastructure Automation

    View full-size slide

  4. What
    What
    Continuous
    Continuous Delivery?
    Delivery?
    is
    is Jez
    Hum
    ble?

    View full-size slide

  5. Continuous Delivery
    Continuous Delivery
    “ ... a set of practices and principles ...
    building, testing, and releasing software,
    faster and more frequently
    “ ... put release schedule in the hands of
    the business - not IT
    Source: https://painless.software/continuous-delivery
    “ .

    View full-size slide

  6. Development Process
    Development Process
    Automation, pipelines & DevOps.
    push code
    open PR/MR
    approve
    build review
    feature
    production
    system
    branch
    server system

    View full-size slide

  7. TDD, BDD, Selenium
    TDD, BDD, Selenium
    Tests are fundamental for build pipeline.
    No automated verification w/o tests
    No safeguarding against regression
    No safety net against deployments
    that would take the site down
    TDD good practice
    BDD helpful for acceptance
    Selenium / performance
    !! risk !!

    View full-size slide

  8. Envs & Containers
    Envs & Containers
    Containers make process easier.
    Feature parity across environments
    Develop, Staging, Production identical
    Simplify deployments, no builds on hosts
    Simplify rollbacks
    Optional, but makes it easier
    Container images built by pipeline
    Push complete system

    View full-size slide

  9. It's Agile (Ever Since)
    It's Agile (Ever Since)
    Source: http://agilemanifesto.org/principles.html
    “ Satisfy the customer!

    View full-size slide

  10. Why Do It?
    Why Do It?
    Move Faster
    Move Faster
    release more often
    faster ROI
    less dependencies
    eliminate frictions
    Improve Confidence
    Improve Confidence
    high probability of success
    broken things can be fixed
    fast / easily
    sustainable corrections
    "it's worth investing"
    (time + effort)

    View full-size slide

  11. CD in a Nutshell
    CD in a Nutshell
    Concept Patterns Techniques
    Pipeline CI, automatic feedback, continuous
    deployment, feature toggles
    Empower sponsor review apps, self-service deployment,
    zero-downtime, canary + b/g releases
    Prove feature
    completeness
    BDD, TDD, automatic tests (regression,
    performance, penetration)
    Error prevention environment parity, locked-down envs,
    transient envs, automatic provisioning
    Visibility version control, dashboards, monitoring
    Speed fast tests, resilient / self-healing envs

    View full-size slide

  12. More
    More
    Servers
    Servers
    than
    than
    just
    just

    View full-size slide

  13. What Did We Do?
    What Did We Do?
    1. deployment
    2. testing
    3. environments
    “ Big picture
    Fix things we first neglect

    View full-size slide

  14. Make It Bigger
    Make It Bigger
    We're neglecting dev infra
    on-boarding developers takes days
    no tool parity across dev PCs
    can't wipe PC when it behaves weird
    everyone asks you (how do I?)
    "projects" for switching technologies
    or introducing new tools

    View full-size slide

  15. What's Wrong?
    What's Wrong?
    CD Pattern Anti-Pattern
    Automate environment config Manual setup, "work of art"
    Scripted setup Notes, documentation of setup
    Single command builds Comprehensive instructions
    Fix broken environments first Ignore errors, postpone fixes
    TDD, automate tests Manual verification + fixes
    Fully version controlled Parts not version controlled
    Visibility, dashboards, sharing Geeky "secret configurations"

    View full-size slide

  16. Solution (part #1)
    Solution (part #1)
    Automate your setup
    configuration management
    treat your dev env like a container
    resist manual changes
    version control
    backup + restore your data

    View full-size slide

  17. Demo
    Demo
    ansible-software
    ansible-software
    github.com/painless-software/ansible-software

    View full-size slide

  18. Solution (part #2)
    Solution (part #2)
    Automate your infrastructure
    fully automatic setup: desktops & servers
    infrastructure monitoring & mgmt
    complete tool chain: infra as code
    automatic backups (offsite)
    user data synchronization (offline)

    View full-size slide

  19. Demo
    Demo
    groundcontrol
    groundcontrol
    github.com/painless-software/groundcontrol

    View full-size slide

  20. Thank you!
    Thank you!
    for your precious time
    for your precious time
    Painless Software
    Painless Software
    Less pain, more fun.

    View full-size slide