2

I am currently specing out the software requirements for a new project which will be in locations with intermittent network connections.

Since some of our locations will have intermittent network connections. We will have (almost?) all software releases planned in advance.

Is it possible to have the required update data downloaded in advance of the actual release, with the release taking place on schedule even if the server doesn't have a network connection.

We presently use Capistrano for releases of our main projects, so I would like to keep using it if it's possible in Capistrano.

scragar
  • 106
  • 7

2 Answers2

1

I have learnt today of a Capistrano plugin called delayed_job, this allows people to execute tasks at a time of your choosing.

We have to break our release process up in order to get this to work, and there's a small measure of scripting to go around the process to get it retrying automatically, but at present it looks like we'll be able to use this to have the client automatically complete the release itself at night without having a network connection.

I will edit this and update once I've implemented the solution and can hopefully provide a code sample to demonstrate what I've done.

Until then I'm going to keep the question open so I can hopefully see if anyone has any better solutions.

scragar
  • 106
  • 7
1

Releasing software simultaneously to lots of users is risky. What do you do, if something goes wrong? A gradual roll-out allows you to catch problems quicker, and you'll have less work to do to recover from mishaps. Having no reliable network connectivity to the hosts running this software makes the risk worse.

There may be compatibility problems between different versions. Such compatibility problems are better handled by ensuring each version is compatible with its immediate predecessor (but not necessarily further back). When multiple components are involved, ordering updates of components may also be relevant.

But once you have decided a new version is ready for use, why not deploy it right away rather than wait for a specified time in the future? Usually the main reason for waiting would be to ensure that you are ready to handle any problems that may show up. But if that is the purpose, then having an automated release happen while the device may not even have network connectivity, may turn out to be a release happening at the worst possible time.

Between the time you schedule the release and the time it actually happens, things can happen. You may find a bug, that would mean you would want to cancel the release. You may also find that the people who should be ready to provide support will not be available at the planned time, and you need to postpone the release. In those cases lack of network connection may prevent you from stopping a release, that should not be happening after all.

kasperd
  • 29,894
  • 16
  • 72
  • 122
  • We cannot perform a roll out of new software within certain time periods when the software is in operation, the idea of planning these releases in advance would be to ensure that the releases can be applied safely at a time when the system will not be in use to avoid anyone encounting any problems during the update. – scragar May 13 '14 at 13:21