Major obstacles you may encounter while migrating your app to AWS cloud

I’ve spent much of last 11 months with AWS customers and teams determining what it takes for a customer to migrate to AWS or any other public cloud platform, as per what I’ve seen, migrating to cloud has been a somewhat challenging task considering factors such as security, platform expertise and cost.

In this article we will go through major challenges one would encounter while Migrating your app to AWS cloud. We all know migration do take alot of time and planning especially when it comes to migrating large/complex applications.

Let’s take a case study to understand this better..

Lets say Client X’s software system exists on their company’s own hardware, and they no longer want the maintenance costs. They plan on moving their software from private servers to Amazon Web Service (AWS) and have asked you for assistance.

Original Data Centre has:

– 1 load balancer pointing to the 3 app servers.

– 3 web app servers running nginx + php-fpm

– 2 mysql databases, 1 master, 1 slave using mysql-proxy

– Systems are all running Ubuntu 14.04

What are some of the major obstacles you may encounter, how might you solve them?

As a Solution Architect, you need to suggest solution for all the challenges.

Challenges can be related to :

Managing different environments

Use IAM to isolated access to resources or create separate accounts for each environment and managing them within single master AWS account

Securing AWS resources

Make sure implementing best practices to secure AWS resources

Performing secured database migration:

Use VPN service to securely transfer data from on-prem to AWS, if the data is in huge size(TBs) then use import/export service of AWS to get data onto AWS S3

Troubleshooting NGINX & PHP-FPM configuration related issues

Make sure the proper version for nginx and php-fpm are installed with all relevant packages

Troubleshooting NGINX & PHP-FPM permission related issues

Make sure processes and files have proper permission

Setup CI framework for Web servers

On on-prem push application’s deployable content like code, web, and configuration files, executables, packages, scripts etc. to GitHub and use AWS CodeDeploy to manage the deployments on all the web servers

Setup CD framework for all servers

Use OpsWorks, chef or puppet to manage server deployments

Designing architecture which is scalable and make optimum use of resources

Use Autoscaling feature for application servers

Pushing new updated code to existing EC2 instances

Use a tool like Capistrano to do a parallel “push” deployment to all the instances at once. This is generally just re-executing the same script that the servers ran at boot.

Making MySQL database instances fault tolerant

Use RAID 0 when I/O performance is more important than fault tolerance or RAID 1 when fault tolerance is more important than I/O performance

Backups & DR

Implement efficient backup strategies like warm or pilot stand by to decrease RTO. Take backups regularly and automate the process


These were some challenges that you might come accross whil migrating your app to AWS cloud

Again, these challenges might be different for other applications, one has to understand that everything on cloud revoles around three things security, management and scaliblity. The goal should be to make optimum use of resources and architecting infrastructure which is scalable, fault tolerant and secured.


Hope this helps


References: https://aws.amazon.com/blogs/publicsector/a-practical-guide-to-cloud-migration/