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.
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.
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
Related Q&A from Ofir Nachmani
Some AWS users should consider a third-party tool to find better visibility into their network infrastructure and traffic patterns instead of relying... Continue Reading
Not sure when to normalize data in Amazon DynamoDB? Follow these three examples to learn more about the normalization process and how it can play a ... Continue Reading
AWS resource tags provide admins with more visibility into their cloud deployment. Learn how to implement them with these best practices. Continue Reading
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.