Author's note: I've been working in IT for over 25 years, including some time at Oracle. I've seen virtualization make the jump from the mainframe niche to near ubiquity. In recent years, I've been working with databases in containers, including writing an open-source Oracle container image and management utility that integrates “Oracle in a container” with NetApp® ONTAP® Snapshot™ technology and cloning operations. It's available for download now, and I've talked to a handful of customers about using it. It also handles Postgres.
Containers are unquestionably the future of almost all IT, but there's a perception issue getting in the way. Containerization is often discussed and marketed as a revolutionary leap in IT. I strongly disagree with that view. Containerization is really just a natural step in the evolution of virtualization.
I understand the technology behind containers and I trust that technology, but I come from an IT management background, not a coding background. There are some use cases that can only be addressed with containerization, and from a coding point of view containerization offers some new ways to develop software more rapidly, but that's all about the coders. The real value in containerization will be as a generic virtualization technology. We'll get there, but we're dealing with a manageability gap.
As a parallel example of how a new IT technology gets adopted, consider virtualization. Virtual machines were around for ages before VMware came along and made them accessible and understandable to anyone in IT. You have some hardware with multiple OSs running on it, and a nice GUI to start and stop VMs and do all the things that you normally do when you want into a data center. You just don't have to get out of your chair and walk down to the data center and unbox the new server, plug it in, and put in the installer DVD. It took a little longer for VMs to catch on with the DBA world, but now I'd estimate that about half of our database customers are 100% virtualized, including even the most mission-critical databases. These customers didn’t change their operational practices, they just improved them so that they have much more flexible IT processes. Servers are set up and reconfigured more easily and OSs can be moved around to improve availability. Also utilization is improved because resources like CPU cores and RAM don't end up stranded on one defined physical server while another server is overloaded.
Containerization does exactly the same thing, except better. An application running on a VM is easier to manage than an application on a physical server. Similarly, an application hosted in a container is easier to manage than an application hosted by an entire OS. Virtualization allows you to run and manage multiple isolated and independent OSs on a single server. Containerization allows you to run and manage multiple isolated and independent applications on a single OS.
Containerization is not necessarily a replacement for virtualization. The technologies can be complementary in many ways. I run my Kubernetes cluster on a VMware ESX server. It also works both ways. You can run containers under virtualization, and you can run virtualization under containerization.
How this can work: A container starts with a single process that is spawned in its own private namespace. Guess what else runs as a single process? KVM virtual machines. If a container won't do, you can run an entire VM as a container. I'm picturing an end state where I log onto my data center management console and I see a collection of containers. Most of them are just those ultra-lightweight containers with a few processes. Some of them are KVM containers running Linux or even Windows.
I want to manage them all exactly like VMs. When I go to the Microsoft website, I want to be able to download Microsoft SQL Server and install it on an OS; or I can download the Microsoft SQL Server container image. Once I hit that critical mass, more and more applications should be available as container downloads and my virtualization footprint will slowly change from "applications on an OS" to just "applications," The look and feel will be the same.
Until someone makes the move toward IT-centric manageability, as opposed to coder-centric features, containerization will be limited to the larger institutions willing to make the investment. It can be worth it. I've seen some fairly small customers who nevertheless need to host 1,000 databases for various clients, and it's well worth their time to understand how to containerize a database. As stated previously, it's not really changing anything, it's just streamlining operations. Conceptually, it's still virtualization, but you can start and stop your databases instantly, clone them, back them up, and restore them. Upgrades are easier — you detach data from your Oracle 19.3 container and reattach it to Oracle 19.8. You have to invest in someone who really understands Kubernetes and writing those configuration files, but once you get past that it's very much IT as usual.
I know that containerization can deliver all these wonderful capabilities. Why hasn't it completely taken over IT? The answer is manageability.
Jeffrey Steiner has over 30 years of database-centric IT experience, with projects including bioinformatics, public sector, application development, and Cloud-based operations. He has been with NetApp for 15 years, and is currently with engineering, working on database-related initiatives, large and small. He is also a licensed attorney and knows his way around those tricky software licensing agreements.