Zero Downtime Migration
Last updated
Last updated
This guide provides step-by-step instructions for migrating your applications from Vercel, Netlify, AWS, or another provider to Sherpa.sh with zero downtime.
Zero Downtime migration only works if you have a way to loadbalancer traffic across both providers. This guide is for websites with significant traffic that cannot schedule downtime for DNS records to propagate. Typically, most users of sherpa.sh will not need to follow this Zero-Downtime migration strategy and can just self-setup from the portal. Any migration can still benefit from following the recommendations in - such as lowering TTLs before migrations
An active Sherpa.sh account
Access to your current hosting platform (Vercel, Netlify, AWS, etc)
Access to your DNS provider
Your application's source code repository
The key to a zero-downtime migration is to set up and verify your application on Sherpa.sh before changing your DNS settings. This is accomplished through a parallel deployment strategy:
Deploy to Sherpa.sh while keeping your existing deployment active
Verify functionality using Sherpa.sh temporary URLs
Implement DNS changes using a phased approach
Monitor and finalize the migration
To avoid downtime during DNS propagation:
Lower TTL values in advance:
At least 24-48 hours before migration, reduce the TTL (Time To Live) values for your DNS records to the minimum allowed value (often 300 seconds/5 minutes)
This ensures faster propagation when you make the actual switch
Use Sherpa.sh's preview environment:
Implement CNAME flattening (if supported by your DNS provider):
This provides more flexibility during the transition
Use parallel DNS configuration:
Configure your application on Sherpa.sh to respond to your domain. For example, set allowed hosts to include your domain.
Verify your application is working on the preview domain
In your DNS provider:
Keep your existing DNS records active
Test the Sherpa.sh deployment using the temporary subdomain. Don't forget to add the domain to your allowed hosts or similiar setting in your application.
For mission-critical applications, use this blue-green deployment approach:
Set up complete infrastructure on Sherpa.sh (the "green" environment, like you did in step 1)
Keep your current platform running (the "blue" environment)
Use a load balancer or traffic manager to control traffic distribution. Some DNS providers will allow you to do this from DNS itself. This is the recomend way.
Gradually shift traffic percentages from blue to green
Monitor for any issues and be prepared to shift back if necessary
Once you've traffic shifted fully to sherpa.sh, test your application.
Keep the original deployment on your old provider active for 24-48 hours as fallback while you test the new production environment
You can remove the old DNS records once you are confident the migration was successful.
DNS Propagation Problems
Issue: Some users see the new site while others see the old one
Solution: This is normal during DNS propagation. Wait 24-48 hours for full propagation, and keep both deployments active during this period.
Missing Environment Variables
Issue: Application errors related to configuration
Solution: Verify all environment variables are correctly set in Sherpa.sh dashboard
Build Failures
Issue: Deployment fails on Sherpa.sh
Solution: Check build logs and adjust configuration based on differences between platforms
Database Connection Problems
Issue: Application cannot connect to database
Solution: Verify connection strings and network access settings. You may need to allow all IPs to access your database if you are not using a sherpa.sh managed database.
If you encounter issues during migration, contact Sherpa.sh support in discord:
Before changing production DNS, fully test your application on Sherpa.sh's preview domain. Follow the to deploy your application on a preview domain
Set up CNAME records pointing to the records displayed when you setup your in the Sherpa.sh panel
Follow the to deploy your application on a preview domain
Use a temporary subdomain and point it with CNAMEs to the records displayed when you setup your in the Sherpa.sh panel