Continuous Integration Continuous Delivery

Presented by Chris Cantu & Vince Montalbano

Continuous Delivery

Benefits

  • Solve Problems Quickly
  • Reduce Errors
  • Empower Teams
  • Increase Confidence in Deployments
  • Make Deployments More Flexible
  • Iterate Quickly

Fundamentals

  • Releases must be repeatable & reliable
  • Automate everything
  • Everything in version control*
  • Done means released
  • Build Quality In
  • Everyone is responsible for the release
  • Improve continuously

Anti-patterns

  • Deploying Software Manually
  • Only deploying to a production-like environment after development is complete
  • Any manual modifications (configuration, data, etc) of production environments

Best Practices

  • Make every change trigger a CI build, with a testing phase included
  • Make your feedback loops as short as possible to enact change more quickly
  • Prioritize fixing failures in the pipeline right away
  • If something is painful, do it more often

Best Practices (Continued)

  • Build artifact only once
  • Keep everything in version control*
  • Integrate Frequently
  • Only check in working code
  • Same delivery mechanism for every environment

Best Practices (Continued)

  • Smoke test production deployments (Critical Path)
  • Run tests in a CI server
  • If anything fails in master, stop the line
  • If anything fails in feature, drop the line
  • Claim broken builds
  • Don't go home with a broken build

Development Build Pipeline

Release Pipeline

Automated Testing

  • Paramount to effective CI/CD
  • Drastically reduce feedback loops
    • Automated tests can provide feedback in minutes or even seconds instead of hours or days
  • Repeatable / Consistent validation
  • Minimize manual work

Operational Considerations

  • Documentation and Auditing
  • Monitoring / Alerting for Abnormal Events
  • Control Access to Your Infrastructure

Database Management

Security Testing

Artifact Management

Phoenix Server (Immutable Server)

  • Blue Green Deployments