This post is helpful to guide any person/ organization who have their web application hosted on-premise or on some vendor servers and have futuristic view that they see their user base to grow in coming future. It's understood that initially it would sound difficult to move an application to cloud because we do not know if our application is fit to run on cloud.
The phases below show approach that a Cloud Architect would adopt to migrate a web application hosted on non-cloud environment to cloud.
Phase I [Initial adoption phase to understand if our application can run on cloud] | Phase II [Now that application runs and we are happy, adopt the best practices of Cloud computing] | Phase III [Try adopting to Cloud services] | Phase IV [Cost cutting] |
* Lift and shift the application as is into Docker and push to cloud. * Backend database into separate EC2 instance. * Deployment pipeline. | *Break big application into smaller chunks, Microservices to be introduced for most of the transaction to enhance performance. * Microservices wrapped in containers. * Introduce communication channel between components like RabbitMQ or SNS/SQS * ELK for storage of logs, analysis and visualization for application and infrastructure monitoring, faster troubleshooting, security analytics, etc. | * Check for Cloud services for Middleware, replacing your backend DB with RDS. * Make use of Adapters that connects to Cloud services, shielding our application from a Cloud specific API. | * Define the minimum required instances [Dedicated/ Reserved capacity], based on this information connect with Cloud provider and have a contract defined. |