Market shifts are propelling organizations to become digital. Companies feel pressure to find better ways to offer services, respond faster and proactively to their customers, and manage growth. In their quest for digital maturity, customers are looking for solutions that not only address the aspect of capacity growth, but also other aspects such as performance, the ability to handle different types of data through different protocols, and different hardware locations.
What organizations quickly realize is that existing infrastructures pose obstacles to agility and quick response. Containerization is quickly gaining in popularity to overcome these obstacles.
The benefit of containers for developers and the DevOps community is widely known and proven by now in development and testing. As the popularity of containers continue to grow and the types of containerized applications continue to accelerate, there are many questions that are typically asked, such as “What should I know or consider to run containerized applications in production?” or “How do containers best fit into my environment?” or “What are the best practices I should consider before I make the jump to containers?” The buzz around containers and Kubernetes will become a reality if customers understand the business impact and viability of containers.
There are several nuances to keep in mind when considering deploying applications in containers in production.
Start small – unless you have already made an organization decision to deploy containers, start with a handful of containers and measure the time it takes to build and deploy an application in containers versus say, in VMs or bare metal. This will give you an idea of whether moving to containers is worthwhile or not.
Do you need a container orchestration tool? An internet search on this topic will produce a litany of articles that compare Kubernetes with Mesos, Docker Swarm, and how Kubernetes has won the war. While that is great, most of you don’t need to start right away with any of these tools. Don’t get me wrong, I am a big proponent of these orchestration tools but if you envision having a few dozen containers in the next year or two, you are better off managing the environment manually since it will give you a good hands-on insight into how your environment behaves. If you are thinking of hundreds to thousands of containers, by all means choose an orchestration tool. When deciding on an orchestration software, it may help to keep in mind that nowadays, vendors seem to have realized the potential of Kubernetes and are coming out with an update of their management software that is integrated with Kubernetes.
What about persistent storage for containers? Most experimental phases of containerization can make do with local storage but if you are contemplating running containers in production, you will need persistent storage. Choose a data platform that is versatile in what it offers and not just storage for containers. A platform that has been built from the ground up for scale, reliability, and security with the ability to expand to newer technology trends should be the ideal choice.
Do I need to have special considerations for the network? There are several CNI (Container Network Interface) solutions that are now available. Docker itself offers a pluggable interface and third-party vendors like Calico and Flannel offer solutions. If you are in the experimental phase, your existing networking environment will suffice. If, however, your organization has decided to undertake a digital transformation of the entire data center, then considering a CNI solution upfront may be a good idea.
Invest in standardizing for containers. When building new applications, take into account design considerations to run these applications in containers even if they won’t be deployed as containers in the short term. This will save a lot of time and cost in reformatting them later. Legacy applications, on the other hand, would require some careful thought. Some legacy applications may not be viable to be run in containers. Breaking legacy applications into small modules may require such an overhaul of the application that it may be better to just rewrite it from scratch. Whichever stage your application is at, keeping the framework of containers in mind while designing the applications will be good practice.
Security in containers is still evolving. The ecosystem around security has not matured as much as the other aspects of storage and networking have. If your environment and applications require stringent security compliance and standards to be met, then investigating on this front to ensure it will serve your purpose will be beneficial.
Armed with the right amount of education, and access to community, one can easily make the transition to deploying containers in production. Taking a page out of DevOps, having operations teams understand, deploy and educate other stakeholders will speed up understanding of benefits and thereby adoption
Suzy Visvanathan is director of product management at MapR Technologies.