I'm trying to determine a way to distribute software updates for a hosted/on-site web application that may have weekly and/or monthly updates. I don't want the customers who use the on-site product to have to worry about updating it manually I just want it to download and install automatically ala Google Chrome. I'm planning on providing an OVF file with Ubuntu and the software installed and configured.
My first thought on how to distributed software is to create six Apt repositories/channels (not sure which would be better at this point) that will be accessed through SSH using keys so if a customer doesn't renew their subscription we can disable their account:
- Beta - Used internally on test data to check the package for major defects.
- Internal - Used internally on live data to check the package for defects (dog fooding stage).
- External 1 - Deployed to 1% of our user base (randomly selected) to check for defects.
- External 9 - Deployed to 9% of our user base (randomly selected) to check for defects.
- External 90 - Deployed to the remaining 90% of users.
- Hosted - Deployed to the hosted environment.
It will take a sign off at each stage to move into the next repository in case problems are reported.
My questions to the community are:
- Has anyone tried something like this before?
- Can anyone see a downside to this type of a procedure?
- Is there a better way?