Irreversible data changes
If part of our update process is to execute an irreversible change in our state, such as an irreversible schema change in a backing relational database, then we need to address this with special care. It is possible to execute such changes without downtime if one uses the right approach. It is important to recognize that, in such a situation, one cannot deploy the code changes that require the new data structure in the data store at the same time as the changes to the data. Rather, the whole update has to be separated into three distinct steps. In the first step, one rolls out a backward-compatible schema and data change. If this is successful, then one rolls out the new code in the second step. Again, if that is successful, one cleans up the schema in the third step and removes the backwards-compatibility:
