Skip to content

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.

  • 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 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 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.

  • 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.

  • 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.