How does OutSystems handle deployment and staging?
Table of contents
- Automated deployment with impact analysis
- Zero downtime deployment of apps across the server farm
- User governance and control
- Version control
- APIs for deployment management
With OutSystems, deploying a complex app to production is simple and doesn't require specialized skill sets (scripting or maven experts). It offers automated staging across environments with full dependency analysis, no downtime and automated rollback capabilities. It also offers governance and separation of duties by managing the roles, permissions and security policies for all environments. OutSystems version control system allows tagging and hotfix detection.
In addition, OutSystems offers APIs to manage deployments and to govern users, such as adding deployment privileges to a developer during a SOX-compliant deployment process.
Automated deployment with impact analysis
With OutSystems, it is possible to take a snapshot of the application and its modules, tag it with a version, and use it for deploying. This is usually done when the application development is stable or a milestone is reached, allowing for retrieving that state of the application and its modules at any time. It automatically provides suggestions to tag a minor version, major version, or custom tag.
Configuring a deployment package of an OutSystems application is shown in this example:
Upon the request to deploy, an impact analysis is executed to validate if the deployment can be performed without affecting other applications running in the target environment. If it cannot, OutSystems prevents the deployment from moving forward until conflicts and dependencies are resolved.
OutSystems then provides feedback to the deployment requestor, so an informed decision can be made on which action to take to resolve as shown here:
When no dependencies exist and the impact analysis is valid, the user can confirm the deployment or redeployment of applications. From this point forward, the automated deployment is started and it automatically executes all the tasks necessary to:
- Retrieve applications from version control.
- Analyze impact on running business processes.
- Generate and compile optimized code.
- Analyze database and create differential SQL scripts.
- Distribute compiled applications to front-end servers.
- Update database changes and hot-deploy new versions.
- Synchronize environments.
All these tasks are automatically executed and monitored without the need for manual intervention from the operations team, accelerating delivery and minimizing risks in deployments:
Zero downtime deployment of apps across the server farm
Under normal circumstances, deploying new versions of web applications is a risky proposition. If data model changes become out of sync with the web application logic running on front-end servers, application users may experience runtime errors or worse. OutSystems deploys new versions of applications in high-load environments with zero downtime.
Data model changes are one of the primary culprits of broken deployments and related downtime. To eliminate the risk normally associated with data model changes, the OutSystems deployment process is fine-tuned to eliminate the time between the update of application logic update in all front-end nodes and the update of the data model.
This advanced deployment process is centrally controlled by the OutSystems Platform Server. During the deployment of a new version of an application, the new version of the web application logic is deployed to a protected area in all front-end nodes and made available to end-users simultaneously and together with the data model updates.
User governance and control
OutSystems supports security governance for user (development and operations) management with security rules to define access levels to specific apps, services or APIs, and privileges for environments. A typical DevOps example would be a developer who is taking code to production or preparing the deployment plan so the Ops could finish it. Still, everything automated, but under control.
In this example, Brooklyn's default role allows her to list the applications in development. But for the Vacations application, we assigned her the Developer role. She can now change the Vacations application in Development and nothing else:
In this example, a user is planning the deployment for execution by the operations team:
Version control
OutSystems offers an integrated version control system that enables users to take a snapshot of the application and its modules, tag it with a version, and then use it for deploying throughout the multiple environments.
Tagging a version for the Campaigns application is shown here:
Deploying a tagged version is shown in this example:
To learn more about version control, read this article.
APIs for deployment management
OutSystems includes APIs to integrate the deployment of OutSystems applications with your existing DevOps tools and processes.
These APIs support extending the OutSystems deployment functionality to match specific requirements. For example:
- Create a report with the list of changes in a particular deployment.
- Add deployment privileges to a developer during a SOX-compliant deployment process.