Hi, May both of you try to implement "blue-green deployments", and switch only if all tests are OK. You may also be interested in running a test deployment in a testing environment prior to production. Don't know of a solution integrated into django.
On Friday, April 14, 2017 at 2:26:51 PM UTC-4, Andrew Godwin wrote: > > Hi Paul, > > I have tried this in the past, but it's basically an unsolvable problem in > the generic case. Databases do not take well to snapshotting or changing > schema, and some operations are naturally irreversible. If you find a way > that works well, I suggest you write it up so others can learn from it! > > Andrew > > On Fri, Apr 14, 2017 at 10:33 AM, <[email protected] <javascript:>> wrote: > >> In a modern Continuous Delivery environment, it's expected that there is >> an automated process for deploying code, and therefore performing database >> migrations. This is all straightforward. >> >> I haven't been able to find any good solutions for automatic rollback >> though. The main problem that I see is that there is (AFAIK) no easy way to >> definitively know which migrations to unapply to roll back to the previous >> verison. If you try to rollback from the new N+1 version, you have the >> migrations, but no recording of the previous version's state. If you >> rollback from the previous N version, you don't have the new migration >> files to do the DB rollback. >> >> What I'd really like is a way of recording a 'db migration checkpoint' >> which could be generated per-release (or whenever else you care to >> checkpoint your migration state), and would say something like `v1: >> {app1:0002,0003, app2: 0004}, v2: {app1:0004, app2: 0005, 0006}`, thus >> letting me roll back all of the migrations in the v2 deploy with a single >> command. >> >> Does anyone have suggestions or references here? I may try rolling the >> above solution if there is no prior art, but I want to avoid reinventing >> the wheel here, as it seems that this issue must have been hit by many >> other users before me. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/django-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/6cafecca-2c71-4a6f-b93b-fe3e64847bc2%40googlegroups.com >> >> <https://groups.google.com/d/msgid/django-users/6cafecca-2c71-4a6f-b93b-fe3e64847bc2%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/362cbdc0-9dee-4c1b-a68d-b671eed49336%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

