Every step is compatible with the code that is running at that moment, so no step needs downtime and each one can be rolled back until the last (the drop).