In most of the enterprise deployments, either there is a change in the data model or the APIs behind it. The deployment can be very easy if it is just deploying an app which has no dependencies but app always has dependencies on the database or other backend systems behind it and all needs to be coordinated together. It is not clear how do we manage deployments in this scenario?
I would say you have two options in that case… Big Bang where everything changes at once, or a common second method is to build in layers of abstraction which enables components to more or less backward compatible. For example, if I use a canonical data model, I can create a new version of the canonical, but just ensure that whatever app I’m working with specifies the version it will be sending in. Then, my middleware can accommodate the mapping of differences in the meantime during the time my change is deployed.