Just wondering if there were any other new approaches that were devised to minimize the risk of data corruption during deployments. Here are the approaches I am aware of:
Approach #1 - Unpublish main application, publish it after deployment
https://community.appian.com/discussions/f/administration/4505/deployment-is-there-a-way-to-put-up-a-maintenance-page-when-doing-a-deployment/16211#16211
This approach is good except for that the tasks that remain active during deployment and could cause issues. A additional variation of this approach includes adding a maintenance flag in SAIL task forms to avoid ongoing tasks from being performed. Finally, the most complete solution also includes publishing a small "maintenance" application during the deployment where users are redirected to a start page indicating that a deployment is in progress.
Approach #2 - Run a process to deactivate users before deployment and reactivate them after deployment
This solves the issue related to the tasks being still accessible during deployment mentioned in Approach #1 however, it is a bit less user friendly since users are logged out during the deployment. One way to mitigate this issue would be to use the "Terms and Conditions" functionality in the admin console to display a message for the user to advise them that a deployment is in progress.
https://community.appian.com/discussions/f/general/5175/deactivate-reactivate-users-when-performing-deployment-to-production/19202#19202
Approach #3 - DNS Change
When using Appian Cloud with custom subdomain, you could switch the DNS to point to a maintenance page hosted somewhere. The only issue is that DNS changes take time to propagate and you have no control over when the user will perceive the change.
Anyone know of other approaches that are used to make deployments more seamless to end users?
Discussion posts and replies are publicly visible
Our imports can take some time to complete and from time to time we encounter issues mid-deployment. That would mean that during a period of time all the objects are not in sync in terms of functionality. This could potentially lead to processes or data being in a bad state. This issue is referenced in the Application Deployment Guidelines:
Because an import is not one atomic operation, users may see some inconsistencies in their application behavior while the import is running. For example, during a lengthy import, a Constant might be updated, but the Process Model that references it has not been updated yet. We recommend that production-environment application imports be performed during off-peak hours, especially when importing large applications.
Because an import is not one atomic operation, users may see some inconsistencies in their application behavior while the import is running. For example, during a lengthy import, a Constant might be updated, but the Process Model that references it has not been updated yet.
We also run data conversion scripts during our deployments. Having a user submit a task that commits data while the conversion is in progress could also potentially cause issues.
Also, we do use SAML for our internal users and this is the way that we manage it for them. However our external users use the Appian built in authentication so we have no choice but to deactivate/reactivate.