Containerization seems like the buzzword these days and I&O (Infrastructure and Operations) leaders globally are eagerly adopting container technology. As per Gartner, the containerization wave will sweep across organizations worldwide with 75% of them running containerized applications in production by 2022 as opposed to the current 30%. Having said that, the fact cannot be denied that the present container ecosystem is still in its nascent stage. There’s a lot to get out of containerized environments provided containerization is a good fit for your organization. Detailed assessment therefore becomes a mandate to ensure that you have a solid business case that makes the additional layer of complexity and cost incurred in deploying containers absolutely worth your efforts. It wouldn’t be wrong to say that running them in production, by far, seems like a steep learning curve that many are trying to comprehend.
To containerize or not to containerize is one question that continues to plague the minds of many. While moving traditional monolithic workloads to the cloud seems like a great idea, organizations need to seriously ponder over whether moving the workload is indeed the right thing to do. Many are going by the ‘lift and shift’ the application into a virtual machine (VM) approach, but the pertinent question here is ‘does containerization help your case?’ When applied correctly, it will not only modernize legacy applications but also create new cloud-native ones that run consistently across the entire software development life cycle. What’s even better is that these new applications are both agile and scalable. While deploying containers in production environments, the I&O teams need to mitigate operational concerns pertaining to their availability, performance and integrity. At Parkar, we look at all your deployment challenges critically. We’ve identified the key elements that can help you decide how eligible your applications are for containerization.
Here’s a quick lowdown on the assessment. Take a look.
Now lets deep-dive into more details.
Is your platform a containerized version?
This should not be so difficult considering the fact that vendors have already taken care of that. Commonly used platforms such as Node.js, Drupal, Tomcat and Joomla have taken care of the nitty-gritties to ensure that the app you use offers scope for digital transformation and gets converted to be adapted effortlessly into a containerized environment. For starters, begin with an inventory of all internally-developed applications. Check if the software being used allows containerization. If yes, you can extract the application configuration, download its containerized version and Voila; you are good to go. The same configuration can be fine-tuned to run in that version and can be subsequently deployed in a shared cluster in a configuration that is even cheaper than its predecessor.
Do you have containerized versions of 3rd party apps?
With the vast majority of legacy apps being converted into containerized versions, third party vendors are also realizing the benefits of jumping onto the containerization bandwagon. When you choose to containerize instead of choosing VMs, you also eliminate the need of having OS and bearing its license fee. This leads to better cost management as you avoid paying for unnecessary stuff. As a result, vendors too are now offering containerized versions of their products. Commercial software is one of them. Classic case in point- Hitachi offering SAN management software on containers. This is a value-add to their existing full-server versions. Infrastructure servers deployed at data centers are good examples of application containerization. Talk to your vendors and they will tell you if they offer any. For all you know, the road to application containerization may be smoother than you think.
Do you have a stateless app?
When an application program does not save client data that gets generated in one session to be used for a future session even if it is for the same client, it is called as a stateless app. The configuration data so stored is often in the form of temporary cache instead of permanent data on the server. Typically, Tomcat tiers and many other web front ends are good examples of stateless apps where the role of tiers is merely to do processing. As you take away the stateless tires of any application, they automatically become eligible for containerization due to the flexibility they attain. Rather than being run at high density, they can now be containerized to facilitate simpler backups and configure changes to the app. While these are good targets, storage tools such as ceph, Portworx and Rex-Ray also make good candidates, except that they will require a lengthier process to containerize. Post the makeover, they become great targets.
Is your app part of a DevOps and CI/CD process?
If the answer is yes, then migrating to containers would be a cakewalk for you. All you need to do is package them in containers and integrate them with your servers. As you gradually gain confidence that the deployment has been well received and the app is working as desired, you can bring container orchestration platforms into the picture and enjoy a host of advantages, top on the list being resilience and efficiency. Companies have started realizing the benefits of app containerization and have started modifying their existing CI/CD pipeline so as to create a more efficient and robust infrastructure. Apart from the obvious benefits, containerization goes a long way in testing and deployment of new code and even retrieves the ones that are not performing well. For those who thrive on agile development, this feature is definitely a huge savior.
Are you using a pre-packaged app?
It’s easy to containerize an application if it is already packaged as a single binary or a JAR file since both are fairly flexible. What’s common about Java apps and JAR files is that both can be easily changed to their containerized versions apart from the fact that they carry their typical JRE environment into the container during the process. This ensures faster and simpler deployment and also gives users the freedom to run various versions of Java runtimes alongside on the same servers. This is possible purely because of the isolation that containers offer.
How secure is the environment?
A container-based application architecture comes with its own set of security requirements. Container security is a broad term and includes everything from the apps they hold to the infrastructure they depend on. The fact that containers share a kernel and don’t work in isolation makes it important to secure the entire container environment. The Linux 3.19 kernel for instance, has about 397 system calls for containers clearly indicating the size of the attack surface. A small breach in the security of a single one would in turn jeopardize the security of the entire kernel. Also, containers such as Docker containers have a symbiotic arrangement and designed to build upon each other. Security should be continuous and must gel well with enterprise security tools. It should also be in line with existing security policies that balance the networking and governance needs of containers. It is important to secure the containerized environment across the entire life cycle that includes but is not limited to development, deployment and the run phase. As a rule of thumb, products that offer whitelisting, behavioral monitoring and anomaly detection must be used to build security in the container pipeline. What you get is a container environment that can be scaled as required and completely trusted.
As opposed to running VMs that require more resources, containers occupy just a miniscule portion of the operating system and are therefore less resource-intensive. Several containers can be easily accommodated on a single server with ease. However, there will be edge cases where scaling of multiple containers may be necessary in order to replace a single VM which would also mean you could be saying goodbye to potential savings on resources. One VM would be equivalent to an entire computer, and if you were to divide its functions into 50 distinct services, you would actually be investing in not one but 50 partial copies of the operating system. Now that’s something you definitely need to consider before deciding if containerization is for you. You get it? Or we could go on and on with the number crunching.
There are several other considerations that determine if your apps are containerization-worthy. You need to take into account several factors such as storage, networking, monitoring, governance and life cycle management. Each has a vital role to play and can be a critical component in the decision-making process.
Ask the experts
Parkar recently undertook an application modernization project for a prominent healthcare company where it was tasked with the evaluation of multiple applications to check their readiness for containerization. We worked on one of the critical business applications and chalked out a roadmap to modernize and containerize it without compromising security and availability. We migrated the application to OpenShift platform with multiple containers for their frontend and backend layers. The application was scaled both horizontally and vertically.
Here’s what we achieved:
Containerization comes with a world of benefits. From allowing you the convenience of putting several applications on a single server to support a unified DevOps culture, they give you the agility and power to perform better in a competitive environment. Since they run on an operating system that’s already booted up, they are fast and ideal for apps that require spun up and down every now and then. Being self-contained they are portable and can be easily moved between machines.
The modern organizations rely on DC/OS to host containerized apps. The reason being that this method consolidates your infrastructure into a single logical cluster that offers incredible benefits that include fast hosting, efficient handling of load balancing, and automatic networking of containers. It allows teams to estimate the resources required and help reduce the operating costs for existing applications.
If you wish to know if containerization is right for you and want to unleash greater efficiencies, contact us today.
Innovative Director of Software Engineering. Entrepreneurial, methodical senior software development executive with extensive software product management and development experience within highly competitive markets. I am an analytical professional skilled in successfully navigating corporations large and small through periods of accelerated growth.