7 things that keep teams from doing Continuous Delivery (deploying daily or...


7 things that keep teams from doing Continuous Delivery (deploying daily or even hourly):

1. Non-atomic PRs.

Solution: Each PR must be ready for a prod deploy before it can be merged to `develop`. To separate deployment from release, use a feature flag.

1/x (thread)
2. Ad-hoc release notes.

Solution: Declare release notes in http://CHANGELOG.md. Require an entry in this file in each PR. Validate this file has changed on each CI build. This assures the release notes are customer friendly, accurate, and complete.

2/x
3. Flakey tests.

Solution: Most tests should be unit and integration tests. Mock the API. Simplify E2E tests. E2E should merely assure each section loads. Anything more granular may lead to flakiness due to changing data.

3/x
4. Manual environment deploys.

Solution: Automatically deploy to the next environment once someone clicks approve.

4/x
5. Scheduled releases.

Solution: Stop scheduling releases. Instead, deploy continuously (daily or even hourly).

5/x
6. Manual testing.

Solution: Focus manual testing on exploratory & usability testing. These require a manual process. Shift manual testing activities "left" by doing them as part of the PR process. Otherwise, if it's worth testing, it's worth automating.

6/x
7. No rollback process.

Solution: Implement blue/green deploy so you can easily rollback a release. Blue/green deploy avoids downtime and supports instantly switching between the previous and the new deployment.

7/x
Removing these 7 blockers to CD will help your team deliver value faster. You'll gather feedback more quickly. And you'll respond to production issues faster.

Continuous delivery makes teams more agile.

</thread>

View original on X