Single Artefact Deployment

The first talk at Django Toronto was on Wave's single artefact deployment mechanism.  Basically it's the Fussy Firmware Packager, but without the signatures.  We use Fussy to be able to send/provide customers with (signed) images that can be loaded on (potentially disconnected) machines (through their web interfaces).

The images include a built virtualenv including all of the code installed as packages, along with binaries, libraries and the like which are to be updated. Fussy does the verification, unpacking and symlink swaps, then calls a script in the firmware to fixate the it (e.g. hooking it into /etc/ directories and the like), perform migrations, restart services, and perform basic "is it up" verification.

Our build system actually builds the firmware in the "current" directory (instead of the hashed/timestamped one), but other than that, the build process we use seems extremely similar (our web GUI is Django + Gunicorn too). Esky too has a slightly different focus (automatic updates of GUI-ish apps), but the same basic mechanisms. It doesn't really seem like there's much point collaborating on this stuff, though.

The systems do the same basic operations to get the software up-to-date, but the tough stuff is all in the higher levels (the migration operations, verification of success, safe rollbacks, etc), and that's all pretty specific to what you are managing.


Comments are closed.


Pingbacks are closed.