Skip to main content

Migrating Applications to the Cloud

· 2 min read

Some notes on migrating on-premise datacenter applications to the cloud.
These notes are based on the actual experience of migrating a complex legacy application to the cloud.

Advantages of a Cloud based approach:

  • Concentrate on core business logic. “Outsource” infrastructure related complexity.
  • Easier to implement Disaster Recovery.
  • Easier to distribute applications over multiple regions.
  • Easier to scale up and scale down applications on demand.

Some situations where applications cannot be migrated to the cloud:

  • Specific compliance needs that the cloud cannot support.
  • Situations where Applications require regulated data which cannot be stored in a shared datacenter.

Design Considerations when migrating Applications to the Cloud:

  1. Codebase

    • Migrate the same codebase to the Cloud? (lift and shift)
    • Use a “newer” tech stack when migrating to the Cloud?
  2. CI (Continuous Integration)

    Build and Test changes to the application as and when they occur.

  3. CD (Continuous Deployment)

    Deploy changes to the application (to dev) as and when they occur.

  4. Deployment Type

    • Docker Containers
    • Lambda instances (makes more sense when the application is stateless).
  5. Persistence Layer

    • Database Layer
    • Caching Layer (if required).
  6. Scaling

    Based on the user demand, scale up and scale down application instances (also region wise).

  7. Logging

    Log application steps so that they can be analyzed in case of any issues or problems in the application.

  8. Data Retention

    This relates to both the Persistence layer and the Logging data.

  9. Alerting

    Setup alerts to proactively catch issues in the cloud applications.

  10. Disaster Recovery

How should the application behave when the entire datacenter (in the cloud) goes down.