When you want to update, migrate or deploy-new-version of a large and/or critical system, absolutely, you can't shutdown the system and do your job, then start it!!! I want to know what's the requirements of designing a system that can be available during update,...? what's the compatibility issues? How clients should be aware of changes?
For example: In updating a new refactored version of a large system that provides services to embedded softwares, the updating all of clients take some months, then how the development team should deal with this sitution?