ra2 studio - Fotolia

How can we move containerized apps among clouds?

Our business wants to stay cloud-agnostic, and we think containers are our best option. How complicated is it to move applications from one cloud platform to another?

Container technology generally saves lots of time and effort, because it promises to simplify cloud portability. Containers encapsulate applications and define their interfaces to the surrounding system. This makes it simpler to drop applications into VMs running Docker in different clouds, easing application portability. So how can a company running containerized applications in a public cloud service such as Azure migrate those workloads to AWS?

Running an application in platform as a service (PaaS) can become more expensive as users and applications grow. Containers allow developers to run the same application in different clouds, including infrastructure as a service providers, such as AWS, with the same configuration. Docker abstracts the application from the underlying platform, which makes containerized apps portable. This also means that developers don't need to install third-party dependencies for containerized apps or configure software in the server stack.

Containers allow developers to run the same application in different clouds, including infrastructure as a service providers, such as AWS, with the same configuration.

Docker uses each cloud's VM environment to deal with different application specifications. In addition, AWS also allows Docker containers to run on top of its PaaS -- Elastic Beanstalk. In addition, Amazon EC2 Container Service (ECS) is a good option for customers who prefer to run Docker containers on top of AWS. ECS allows users to launch, start and stop containers while taking care of cluster management. ECS also manages CPU and memory.

Even though it's easier to move containerized apps among different clouds, it's not foolproof. Consider the following criteria before beginning a cross-cloud app migration project:

  • Know what you need to support. Do you really need to enable cloud portability? Research the problems and limitations of your current cloud and set goals accordingly.
  • Assess all the migration design patterns for each application. Should it be cloud-native, running via a container, or both?
  • Understand the complexity level for each application. Run pilots to understand the amount of work required to redesign or refactor each application to support multiple clouds. For example, PaaS provider Heroku allows developers to run pilots or early stage application development in the cloud. The PaaS vendor offers a free tier of service, which can make it a preferable place to run weekend projects. Beyond its free tier, Heroku becomes costly and might have scalability issues as the load/user base grows. A developer could move that workload to AWS, which solves the problem of managing a growing load/user base. Docker containers can be developed and configured locally, and they will run exactly the same in any environment.
  • Build applications with multicloud support in mind. Instead of worrying about the underlying infrastructure complexities, companies can focus on developing their product features and enjoy a portability that reduces vendor lock-in.

Next Steps

Deploy servers with Amazon ECS

Docker works wonders for test and dev

Build an app with microservices and containers

Dig Deeper on IT Ops Implications of Continuous Delivery