1 minute read

Do

  • Treat your infrastructure as code
    • Use version control for your infrastructure code.
    • Make use of bug tracking/ticketing systems.
    • Have peers review changes before applying them.
    • Establish infrastructure code patterns/designs.
    • Test infrastructure changes like code changes.
  • Put developers into integrated teams of no more than 12 self-sustaining members.
  • Have all developers commit code to the main trunk frequently, with no long-running feature branches.
  • Consistently adopt a build system such as Maven or Gradle across your organization and standardize builds.
  • Have developers build unit tests toward 100% coverage of the codebase
  • Ensure that unit tests are 70% of the overall testing in duration, number,and scope.
  • Ensure that unit tests are up-to-date and not neglected. Unit test failures should be fixed, not bypassed.
  • Treat your continuous delivery configuration as code.
  • Establish role-based security controls(that is,who can do what and when).
    • Monitor/track every resource possible.
    • Alert on services, availability, and response times.
    • Capture, learn, and improve.
    • Share access with everyone on the team.
    • Plan metrics and monitoring into the lifecycle.
  • Keep and track standard metrics.
    • Number of builds.
    • Number of deployments.
    • Average time for changes to reach production.
    • Average time from first pipeline stage to each stage.
    • Number of changes reaching production.
    • Average build time.
  • Use multiple distinct pipelines for each branch and team.

Don’t:

  • Have long-running branches with large complicated merges.
  • Have manual tests.
  • Have manual approval processes, gates, code reviews, and security reviews.