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/

0de2b4614a6e1bde25d1b1c7ac040104?s=128

Peter Bittner

April 22, 2018
Tweet

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
  2. Peter Bittner Peter Bittner Developer (of people, companies, code) Co-founder

    Painless Software @peterbittner, django@bittner.it behave-django codeship-yaml sentrylogs django-apptemplates djangocms-maps
  3. Agenda Agenda 1. Continuous Delivery Intro 2. More Than Just

    Servers 3. Demo: Setup Automation 4. Demo: Infrastructure Automation
  4. What What Continuous Continuous Delivery? Delivery? is is Jez Hum

    ble?
  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 “ .
  6. Development Process Development Process Automation, pipelines & DevOps. push code

    open PR/MR approve build review feature production system branch server system
  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 !!
  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
  9. It's Agile (Ever Since) It's Agile (Ever Since) Source: http://agilemanifesto.org/principles.html

    “ Satisfy the customer!
  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)
  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
  12. More More Servers Servers than than just just

  13. What Did We Do? What Did We Do? 1. deployment

    2. testing 3. environments “ Big picture Fix things we first neglect
  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
  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"
  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
  17. Demo Demo ansible-software ansible-software github.com/painless-software/ansible-software

  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)
  19. Demo Demo groundcontrol groundcontrol github.com/painless-software/groundcontrol

  20. Thank you! Thank you! for your precious time for your

    precious time Painless Software Painless Software Less pain, more fun.