One year on the planet Mercury is 88 days long, and that on Earth lasts for 365 days. In this digital era, while we continue to live on the Earth, our years tend to be counted like those on Mercury. Over the past 15 years, we have seen physical servers getting migrated to virtual machines (VMs) within our own data centers. Virtualization has offered a way to consolidate servers onto a common hardware and shared resources. With the advent of cloud computing, an orchestration and managed service layer was added on to this virtualization, and your VMs were charged on an hourly basis, and moved to the vendors’ data centers. The problem with VMs was that the resources assigned to them were not fully utilized. Application portability i.e. ability to move from one VM to another, or self-healing were still missing in this new infrastructure. This was further compounded by the added complexity of cloud security and cloud operations.
Emergence of “Lift and Shift” aka “Re-hosting”
About 75% of companies have some cloud presence in their IT estate. A majority of these have just migrated their on-premise VMs to Cloud VMs. While this is the first step in cloud adoption, it’s not the final step to modernization, or for cost optimization. More often than not, customers who have switched to the cloud by just migrating to VMs have failed to achieve their cost reduction goals.
Containerization offers a solution to the problem of wasted resources, as an image of a container would actually occupy much lesser space and load faster. An additional benefit would be the ability to turn common components of the stack like running Tomcat, Nginx, DBs or any other software into a downloadable solution. And finally, it would also offer Consistency of environment as the image built and tested would eventually be the one to be shipped to production.
The following are the key benefits of containerization:
- Resource utilization: Containers are lightweight, compared to operating systems, and hence, use fewer resources.
- Portability: Lesser dependency on the VM setup, as the containers have all the required components to run independently and can be moved around easily.
- Self-healing and Auto-scaling: Orchestration solutions like Kubernetes and Docker Swarm help you implement self-healing of the application thus increasing availability.
Portability, Self-healing and Auto-scaling of containerized applications help achieve the required cost optimization as it would lead to extreme consolidation of resources and you pay for what you use!
The first thing to note is that, you don’t containerize a server/VM, but you containerize an application. Next, not all applications are candidates for containerization. Applications like ERP systems, proprietary applications/databases like Oracle/SQL Server (or for that matter even large open source databases), Big Data wouldn’t really fit into the containerization roadmap.
The following approach can be taken to start off the containerization journey:
- Identify applications and services which can be containerized
- Create template docker files and base images for “application types”
- Using the base images, build a CI/CD pipeline to deploy your application code to containers
- Test it regularly until your application dependencies are resolved and you have a working solution
- Migrate these images to the cloud container registries and have a similar architecture as on premises for the database
- Deploy the code onto the equivalent Kubernetes/container services on the cloud
Though you have successfully containerized the application, your journey is yet incomplete. You still have opportunities to break the application into micro-services, to yield greater benefits. One must also focus on the cost impact of using the container or Kubernetes services before making a decision.
Enjoy your modernization journey and hope you make the most of your cloud investment!
If this interests you, do join our Cloud engineering team for a live, interactive webinar on ‘Cloud Migration Strategies & Assessment’.