Continuous Delivery

Rainer Stropek | software architects | @rstropek

Introduction

Why?

  • Automation means less toil
    • Invest development resources in adding value for customers
  • Automation means repeatability
    • Aim for consistently high quality, not an occasional exceptional one
    • Deploy irrespectively of certain people being involved
  • Automation means documentation
    • Deployment automation scripts are our documentation
    • Never out of date
    • Add conceptual docs for the big picture and you are done
  • Automation means traceability
    • Why is what deployed where?

Why Not?

Why Not?

  • Technical limitations make automation super hard



     
    • Try to combine automated steps with manual ones
  • Limiting policies
    • Manual steps are required e.g. by law
    • Consider automated processes/steps with manual gates
  • One-time effort
    • E.g. demo, prototype, feasibility study, etc.
       
  • BUT: No project is too small for CD
    • If you have to deploy multiple times, automate it

⛅ Rulez!

No, not this cloud 😅!

Benefit From ⛅ Services

  • No-Ops CI/CD servers are commodity
    • Available for free, or at least for very little money
    • Standardized, well documented, well understood
    • Examples: GitHub Actions, Azure DevOps Pipelines
  • Enhance Security
    • CI/CD servers are very much security-relevant
    • Protect them, make them immutable
  • Use hybrid solutions if ⛅ is not an option
    • E.g. Azure DevOps on-premise build agents

Demos

  • Azure DevOps Multi-Stage Pipelines
    • Time Cockpit "classic" 🔗
    • Pipeline YAML definition 🔗
  • Azure DevOps Release Management
    • Time Cockpit "web" 🔗
  • GitHub Actions
    • Battleship Coding Contest 🔗
    • Pipeline YAML definition 🔗

Important Considerations

  • CI/CD Tool vs. Docker-based solution
    • Example: Azure Container Registry (ACR)
    • Trigger builds based on the availability of security patches
  • Integration of Infrastructure-as-Code (IaC)
    • Our goal: Treat IaC just like any other code artifact, therefore CD
  • CD without human intervention needs prerequisites
    • Serious test automation
    • Separate deployment from releasing to end-users
    • Canary releases with solid test-in-production strategy (monitoring!)
  • Well thought-through concept for integrating CD with Git branching

Q&A

Rainer Stropek | software architects | @rstropek

Continuous Delivery

By Rainer Stropek

Continuous Delivery

  • 476