Containerisation has been a major shift in the way people build and manage their applications.
With a traditional approach, monolithic applications often caused headaches for developers every time they needed to roll out a new version, update features, or fix bugs. This gave rise to containers, where the application itself is containerised, so it becomes more isolated and has all the required resources readily available. This enables developers to use a microservice architecture, where they essentially take the same application and cut it up into smaller, more manageable pieces.
So says Nuno Martins, senior channel solutions architect at Red Hat, adding that this way, there can be one component for authentication and another for the API. “The beauty of running them in a container means you can change and improve individual components without having to look at the entire application – only the microservice. This makes the application development cycle more agile and efficient, and allows more modern development approaches like DevOps or automation to be introduced. Containerised apps can also be booted up faster without the need to virtualise a complete operating system, enabling more applications to be fitted onto a single bare-metal server, cloud instance, or virtual machine. And, because containerisation uses memory, CPU, and storage more efficiently, starting up and scaling containerised applications is a lot easier.”
“If you don't know what containers are, think of a TV screen; from far, you see a picture, but that picture is made up of tiny pixels. View these pixels as containers, which all together make up the TV image. Changing some containers only affects parts of the entire application,” adds Ian Jansen van Rensburg, senior engineering director at VMware Sub-Saharan Africa. “Software containers, like actual containers on a ship, have many interesting goodies contained inside. Some of them have open-source databases, runtime environments, libraries, binaries, applications, and configuration files. In short, any company that wants to build modern apps needs a containerisation strategy.”
Software containers, like actual containers on a ship, have many interesting goodies contained inside.Ian Jansen van Rensburg, VMware Sub-Saharan Africa
He says there are several major reasons enterprises are using containers, namely the need to modernise legacy or traditional applications; the desire to increase the agility of development, DevOps, and security teams; to improve application scalability and portability; and the need to accelerate time to business value for all applications.
For Benjamin Coetzer, director at Routed, containerisation enables developers to control their application runtime environment much more granularly, ensuring that applications can be built and shipped in a consistent and programmatic manor. “This greatly reduces the time to deploy software into production environments and enables the use of continuous integration (CI) and continuous delivery (CD) pipelines in the software development process.”
A Kubernetes cluster
However, container environments can quickly become complex, comprising hundreds to thousands of separate containers that don’t take care of themselves. Step in Kubernetes, which gives the ability to monitor and orchestrate the containers and make them self-healing, says Martins. It also helps with load balancing and allows developers to scale seamlessly and automatically. They can adopt more modern methodologies and use microservices while the platform takes care of itself. They don’t need to worry about having servers or the right resources when running an application environment. Kubernetes gives them a platform where everything is provided, and they can simply focus on the code. Also, for organisations that want to use hybrid cloud infrastructure, using Kubernetes with containers is a lot simpler. “You could have an application container that you run in your on-premise environment, move it to your cloud provider by running it on a Kubernetes cluster, and it operates the same way. There's no refactoring and there's no delay in making changes because of migration issues. You decide where you want to run your applications, and don’t have to worry about expanding your infrastructure. You just connect to the cloud, deploy containers, and that’s it. Everything is automated and you can dynamically scale out to push applications based on load, spin up all the resources needed in a multicloud environment, and scale back down. This is all possible with the use of containers and Kubernetes.”
Adopting and learning how to tap into open source innovation might take some time and require guidance along the way, but, with all the benefits that come with using open source to its full potential, it is ultimately well worth it.Nuno Martins, Red Hat
Kubernetes as an orchestration engine lends itself greatly to ideals instilled in microservices architecture, and as a result, developers are thinking differently around how applications are built to scale and tolerate service failure in production, adds Coetzer. Separation of responsibilities means rethinking where stateful data resides and how stateless applications interact with one another. “Containerisation and, more importantly, orchestration frameworks like Kubernetes, are completely changing the face of what hybrid cloud looks like, and how applications are being built and delivered to the cloud and to the edge. It will continue to enforce better standards in the lifecycle of application development and will become a vital skill to possess in most if not all software development roles.”
Taking a fail-fast, fail-often approach until the first applications are in production enables an organisation to quickly adapt to the benefits of containers in real-time.Jansen van Rensburg.
For developers, Kubernetes also opens up a world of cloud possibilities and eliminates numerous challenges, allowing them to focus on creating software, says Modeen Malick, principal systems engineer at Commvault. “Kubernetes is the foundation of cloud software architectures like microservices and serverless. Kubernetes brings new processes for CI/CD, which allows developers to merge code and automate deployments with easy operations and scaling across containers in any environment. Kubernetes and its containers enable an organisation to work on a multicloud platform, giving it the opportunity to run its applications in a combination of cloud platforms, including public and private clouds. It provides advantages based on load balancing, storage orchestration, configuration management, automated rollouts, and the like. Kubernetes is open source and has a wide area of application. This gives the users and developers free access to its tools and setup to allow maximum users to benefit from this interface.
But how does a company go about implementing containerisation and Kubernetes in the business? Jansen van Rensburg stresses that the number-one priority of any successful strategy is to get top-level buy-in by focusing on bottom-line benefits. “Infrastructure efficiencies gained by running many containers on a single piece of hardware can impact both capital expenditures for on-premise gear and operating expenditure benefits by reducing the number of cloud resources needed. Beyond reduced infrastructure costs and yield savings in OS licensing fees, additional savings are realised as there is no longer the need to develop separate application executables for different environments. Containers speed up the entire application lifecycle. Increased agility that containers bring translates to faster deployment, competitive advantage, and more efficient development teams.”
When an app is installed, troubleshooting becomes a challenge due to the sheer number of opportunities for misconfiguration and vulnerability.Modeen Malick, Commvault
He says a containerisation strategy needs to be comprised of best practices and operational plans that help drive digital transformation by accelerating application development, testing, and deployment. This approach enables the decoupling of applications from the underlying infrastructure and thus improves business agility, application security, and operating environments. The place to start this process is by addressing the low-hanging fruit first, namely those applications that are modern in design and have high volatility, such as frequent code updates. Taking a fail-fast, fail-often approach until the first applications are in production enables an organisation to quickly adapt to the benefits of containers in real-time. Beyond development, a container strategy must also address people and process changes. User training, support education, security and governance, including revising service level agreements, should all be considered. Next, he says organisations should concentrate on containerising other applications, such as legacy or monolithic and clustered applications. Remember that not every application needs to be deployed in containers; some are better suited to the VMs they’re currently running in. However, migrating older applications to containers can be the first step in refactoring those applications into modern CI/CD code utilising DevOps practices.
There are also several pitfalls business should avoid when trying to adopt the open source approach to containerisation, says Martins. “What I often see is that organisations get started with an open source project, as opposed to using a proprietary product, thinking that the open source approach is completely free. What they don’t always realise is that if they want to run an enterprise-class platform, they will need to choose the right open source technologies for their unique requirements and have the support to manage and maintain them effectively. Containers, for example, are highly complex platforms with multiple toolsets, and not every business has the expertise to maintain every aspect of these clusters. Adopting and learning how to tap into open source innovation might take some time and require guidance along the way, but, with all the benefits that come with using open source to its full potential, it is ultimately well worth it.”
Malick adds that although containers enable speed, portability and a microservice architecture, they also introduce a few risks. They may create security blind spots and increase the attack surface, because the distributed nature of containers makes it more difficult to maintain visibility. This distributed nature also separates components, potentially creating gaps where security risks could creep in. When an app is installed, troubleshooting becomes a challenge due to the sheer number of opportunities for misconfiguration and vulnerability. In addition, it does not provide a native mechanism to encrypt, manage and share sensitive information, which makes a data management system a crucial component.”
Coetzer agrees, adding that security and governance should remain front of mind, or else the business might find itself overwhelmed with all the complexities brought forth by such distributed systems and increased attack surfaces. “You should also bear in mind what toolsets you will use to deliver insight and visibility into the runtime of your applications. This will mitigate against ending up in scenarios to where you’re blind as to what's running under the hood.”
When asked where he sees containerisation going, Malick says his company has seen a tremendous adoption of containerisation by its customers. "Gartner predicts that 85% of organisations will use containers by 2025 due to growing cloud-native applications and infrastructure. I engage with customers on a daily basis, who ask what we can do to help them along their containerisation journey. Kubernetes continues to mature and the ecosystem continues to expand and vendors and organisations are still going through the journey building products and platforms in this new design paradigm. If we look back over the past few years, we were unable to run traditional databases in Kubernetes, yet we are able to do so today. The likes of CockroachDB is an example of an organisation that has made SQL databases consumable on Kubernetes. Over the last few years, containers and Kubernetes have gone from niche technology to core pieces of enterprise digital transformation, and we can expect even more change to surface with greater innovation and evolution of containers in open source.
* This feature was first published in the February edition of ITWeb's Brainstorm magazine.