Our new deployment cycle

A number of years ago, Chaos suggested that we deploy Button Men site updates on a regular deployment cycle. Personally, I had never deployed according to a regular deployment cycle before, not at uni or at work, so I didn't know why such a cycle would be useful, but I was more than happy to accept from Chaos's experience at her work that we would see benefits.

For a long time, we had a deployment cycle that looked like this:
  • the second and third weeks of the month were for accepting any pull requests that had passed code review and unit testing
  • the last week of the month was for testing on a test server to attempt to find bugs in the code originating from recently accepted pull requests
  • the first week of the month was a merge freeze, designed to allow us to focus on fixing bugs caused by the deployment to the live site
This cycle worked quite well, I think, but there was always a large amount of work for the testers to be done in the one week before deployment, and very little active testing going on in the rest of the cycle. That meant that the week before every deployment felt like a scramble, both for testers to find bugs and for developers to fix bugs. It also meant that we had trouble deploying when there was extensive testing required to test a large change to the site. One example of this was Turbo, where the testing required many months---this held up our ability to easily deploy other site updates, and made us see that we needed a different way of doing business.

After some discussions, Chaos and I changed the way that deployments occur, with a view to allowing multiple changes to the site to be tested independently of each other. It now looks like this:
  • pull requests will be considered and tested at any time during the deployment cycle, since each pull request has a corresponding virtual instance running that version of the code
  • the second and third weeks of the month are for accepting any pull requests that have passed code review, unit testing, and manual testing on a virtual instance
  • the last week of the month is for testing the version of the code that contains all accepted pull requests on our staging instance, and the intention is to look for bugs caused by interactions between different pull requests, as well as those missed during individual pull request testing
  • the first week of the month is still a merge freeze for fixing bugs caused by deployment to the live site
Subjectively, the load on testers is more evenly distributed than it used to be, and we're picking up bugs earlier, which means that devs have more time to fix them before our nominal deployment deadline at the beginning of the month. Also, it's far easier to deal with many different types of pull requests simultaneously, since those pull requests requiring much testing don't delay the acceptance and testing of more straightforward pull requests.

I think that the new deployment cycle works at reducing stress levels across the board, and that's got to be a good thing.

Comments

Popular posts from this blog

The thorny interaction between konstant and fire

Phases of a turn

Why PHP? A brief history of the resurrection of Button Men Online