Server Migration Checklist
Server Migration Checklist for Engineering Teams
Section titled “Server Migration Checklist for Engineering Teams”Migrating a server is a critical task that requires meticulous planning and execution. It’s not just about moving data from one place to another; it’s about ensuring that the application maintains its performance, security, and availability throughout the transition. This checklist is designed to guide you and your teammates through the comprehensive steps involved in a successful server or host migration for an application. By addressing each point, we can mitigate risks and ensure a seamless migration process for our clients.
Access and Monitoring
Section titled “Access and Monitoring”-
Who Needs SSH Access?
Identify the team members who require SSH access to the new server for deployment and maintenance tasks.
-
Uptime Monitoring:
Set up uptime monitoring tools to check the application’s availability and performance, such as Pingdom.
-
Reboot & Alert Checks:
Perform a test reboot of the server to validate that all services and applications restart correctly. Verify if this action triggers any monitoring alerts as expected.
Database Management
Section titled “Database Management”-
Database Restoration Documentation:
Ensure there’s up-to-date documentation on how to restore the database(s) in case of failure.
-
Deployment and Restoration Validation:
Confirm that at least one other team member can successfully deploy to the new server and restore the database.
-
Production-to-Staging DB Restoration:
Validate the capability to restore a production database onto a staging environment. This is crucial for debugging and testing.
Email and External Services
Section titled “Email and External Services”-
Email Sending:
Ascertain whether the application needs to send emails. If so, decide if we should use an external email service or connect to a client’s SMTP server.
-
Additional Databases:
Identify if the application relies on additional databases like Redis, Memcache, etc., and ensure they are properly set up.
Job Scheduling and File Storage
Section titled “Job Scheduling and File Storage”-
Delayed Jobs:
Determine if the application requires any background jobs to be run (such as Delayed Job) and set them up.
-
Cron Jobs:
List and set up any cron jobs required by the application.
-
Large File Storage:
Check if the app needs to store any large files and plan storage solutions accordingly.
-
File Migration:
Ensure that all existing uploaded files (e.g., images, PDFs) are migrated to the new server.
Application-Specific and Client Testing
Section titled “Application-Specific and Client Testing”-
Legacy URL/Domain Redirects:
Examine the existing server for any URL or domain redirects configured outside of the application, like in Nginx or Apache, and replicate them on the new server.
-
Client Environment Testing:
Have clients test the application in various environments (staging, production, etc.) to validate functionality and performance.