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:
-
Codebase
- Migrate the same codebase to the Cloud? (lift and shift)
- Use a “newer” tech stack when migrating to the Cloud?
-
CI (Continuous Integration)
Build and Test changes to the application as and when they occur.
-
CD (Continuous Deployment)
Deploy changes to the application (to dev) as and when they occur.
-
Deployment Type
- Docker Containers
- Lambda instances (makes more sense when the application is stateless).
-
Persistence Layer
- Database Layer
- Caching Layer (if required).
-
Scaling
Based on the user demand, scale up and scale down application instances (also region wise).
-
Logging
Log application steps so that they can be analyzed in case of any issues or problems in the application.
-
Data Retention
This relates to both the Persistence layer and the Logging data.
-
Alerting
Setup alerts to proactively catch issues in the cloud applications.
-
Disaster Recovery
How should the application behave when the entire datacenter (in the cloud) goes down.