My organization is moving into the AWS cloud, and with some other projects
using MongoDB, ElasticSearch and a web application framework that is not
Django, we've had no problem.
I'm our "Systems/Applications Architect", and some years ago I helped
choose Django over some other solutions. I stand by that as correct for
us, but our Cloud guys want to know how to do Blue/Green deployments, and
the more I look at it the less happy I am.
Here's the problem:
- Django's ORM has long shielded developers from simple SQL problems
like "SELECT * FROM fubar ..." and "INSERT INTO fubar VALUES (...)" sorts
of problems.
- However, if an existing "Blue" deployment knows about a column, it
will try to retrieve it:
- fubar = Fubar.objects.get(name='Samwise')
- If a new "Green" deployment is coming up, and we want to wait until
Selenium testing has passed, we have the problem of migrations
I really don't see any simple way around a new database cluster/instance
when we bring up a new cluster, with something like this:
- Mark the live database as "in maintenance mode". The application
now will not write to the database, but we can also make that user's access
read/only to preserve this.
- Take a snapshot
- Restore the snapshot to build the new database instance/cluster.
- Make the new database as "live", e.g. clear "maintenance mode". If t
he webapp user is read-only, they are restored to full read/write
permissions.
- Run migrations in production
- Bring up new auto-scaling group
Of course, some things that Django does really help:
- The database migration is first tested by the test process, which runs
migrations
- The unit tests have succeeded before we try to do this migration.
Does anyone have experience/cloud operations design with doing Bluegreen
deployments with Django?
--
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/ae5310c6-b69f-43af-a838-5dce7bd6a712%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.