Under the Hood
Last updated
Last updated
Deploying and migrating updates across different environments, such as moving a new version from the development server to staging, is a complex process and involves many steps on both the development and the target server. With just a single click in the Devin App, these steps are all automated by the Devin APIs on the respective servers.
The current version of Devin implements a default process for rolling out releases across STAGING
and PRODUCTION
environments. Soon, this will be extended (see Looking Ahead: Enhacing Deployment Flexibility).
The Default Deployment Pipeline listens for new Releases to an Environment's Release Branch that has a different version number than the Deployment's. This means that if your production environment uses your main branch as release branch and a higher or lower Version is released to main
, this pipeline lets you roll out the release using a standardised and automated deployment and data migration process.
For a guide on how to trigger this pipeline for a deployment, see Deploy a Release.
Cloning the respective Branch File: Clones the latest Version that was released to the respective release branch.
Transfer: The cloned file is securely transferred to the target server.
Close Live File: Temporarily closes the original live file (if no users are connected to it). (we are currently investigating approaches for supporting zero-downtime data migration processes)
Data Migration: Utilizes the FileMaker Data Migration CLI Tool to migrate data from the original file to the new version.
File Replacement: Moves and opens the new file, replacing the old version.
Devin’s APIs incorporate robust safety features that handle communication and process execution between servers, designed to handle the complexities and potential risks involved in updating and migrating data across environments. These mechanisms ensure that the system remains stable and secure throughout the deployment process, safeguarding against disruptions that could impact business operations.
Devin continuously monitors servers and processes for any signs of issues. This includes checking that FileMaker Server runs as expected, that servers has enough resources available to perform actions and that update processes are not initiated if there are users connected to the respective file(s).
In case of an error during the deployment or migration phase, Devin is engineered to automatically revert to the previous state of the application. This rollback is triggered if specific error conditions are met, ensuring that the live environment remains unaffected by the failed update attempt.
All communication between Devin APIs, including server status checks, file transfers and data migration logs, utilizes the SSL certificate installed on FileMaker Server. This ensures that every interaction is securely encrypted and authenticated, safeguarding against unauthorized access and protecting data integrity.
Devin does not verify the integrity of the data being migrated during the data migration process. If the FileMaker Data Migration Tool completes sucesfully, Devin will interpret the migration step as succeeded and continue. The data migration logs can be viewed in the Devin App's Project Workspace -> Migrations -> Details.
This means that processes may enter a queue and wait to be triggered. For example, if multiple developers simultaneously initiate operations on a Development server, some processes might experience a delay before starting.
Devin currently adheres to a structured process for deployment updates to maintain system stability. However, we are excited about the upcoming releases of features that we call Cycles and custom Pipelines. These will not only offer more advanced and customizable deployment workflows but also the ability to integrate automated Regression Testing within these workflows. Stay tuned 🚀
To safeguard live environments from disruptions, Devin APIs utilize a sophisticated subprocess and queuing system for all its processes. This queuing system manages all operations as isolated tasks and prevents Devin from starting more concurrent processes than it can handle or is configured for (see ).