Installing and managing server software is hard, especially in corporate environments. There’s the inherent complexity of managing disparate platforms and systems, all while dealing with compliance and security policies.
What is worse is that a lot of the work is repetitive, undifferentiated heavy lifting. Configuration management tools like Chef and Puppet were supposed to be the cure for these problems, but — even when implemented successfully — they make it difficult to create reusable components and solutions across different companies, and often even across different departments within the same company.
DevOps solutions often require an all-or-nothing approach and must be adopted simultaneously by developers and operators. The necessary system administration skills for handling this type of automation are still rare and in high demand. The cloud holds a lot of promise to solve these problems, but it has also introduced additional complexity and a steep learning curve for traditionally-minded IT organizations that may lack the necessary skills for automation. Organizations that cannot move completely to the cloud without enormous costs (mostly related to rewriting applications) need to manage and maintain multi-cloud and hybrid cloud/on-premise environments. To summarize, the administration of server software and infrastructure has improved substantially over the last decade, but it is still a mess.
Compare this with the evolution of mobile computing since the introduction of the iPhone, which is the same time frame. High-end smartphones now have more computing power than the typical laptop or even servers from 10 years ago. You don’t need to be a system administrator or even an advanced technical user to use your phone effectively. Everything. Just. Works.
Whether you are using Android or iOS, you can install millions of applications with the touch of a button. Upgrading is equally simple and recent versions of the platforms allow fine-grained security and capability access settings. More importantly, as an end user, you don’t care how the applications were built or in which language they were written. Developers can easily and reliably build applications that will be supported on millions of different devices.
While not everything is rainbows and sunshine, mobile computing platforms are light years ahead of traditional corporate computing. Granted, an Angry Birds-style game is a completely different beast than a corporate HR or ERP application, but there are some lessons to be learned here. The most important one is that the standardization of the underlying platform (iOS and Android) and related APIs is what has enabled the industry to achieve enormous success. For enterprise computing to follow in those footsteps, a similar level of standardization needs to occur. Fortunately, that standard platform already exists, and it is called Kubernetes.
A few years ago, the open-source project Docker popularized the concept of containers as a way to bundle an application with all of its dependencies. It enabled developers and end users to distribute and launch them consistently regardless of the underlying Linux distribution. Docker’s initial success was with programmers, who were able to quickly and consistently create development environments they could run on their laptops. By typing ‘docker run’, you could instantly download and launch thousands of applications. Moreover, as with mobile apps, you did not necessarily care how those applications were created or which language they were written in, just that they were packaged as a container. But there’s a world of difference between running an app in development on your laptop and in production. Enter Kubernetes, an open-source project created by Google that was inspired by their internal infrastructure for managing production workloads.
Kubernetes standardizes much of the functionality that is required for successfully deploying and operating containerized applications, with APIs that cover all aspects of lifecycle management. The industry’s embrace of Kubernetes has been unprecedented, including operating system vendors and infrastructure providers such as cloud computing platforms. You can deploy Kubernetes on-premise thanks to offerings from Red Hat and VMware as well as access Kubernetes-as-a-Service offerings from all the major cloud platform vendors, such as GKE, AKS and EKS.
With the industry firmly behind Kubernetes, the focus has shifted to building all types of solutions on top of it around security, networking, application deployment, etc. that can take advantage of the underlying API standardization. As an example, Helm has emerged as a popular package manager for Kubernetes applications. Together with websites and tools such as Kubeapps, it is possible nowadays to provide a self-service mobile app store experience for infrastructure software: easily discover and install server applications with one-click, without having to be an expert. Additional technologies such as Operators hold great promise for further simplifying and automating the application lifecycle.
This is not where the analogies with the mobile industry end. The more Kubernetes adoption grows and the offerings from the major providers mature, the easier that it will be for enterprises to move on-premise workloads to and from the cloud or even between cloud providers. Though the process will never be entirely painless, the level of lock-in with Kubernetes-based solutions is significantly lower than that of current enterprise technology platforms.
Just as with modern mobile phone services, basic functionality is a given; the real opportunity is in value-added services such as video streaming. What will those be in the context of Kubernetes? We will quickly find out over the next few years, as the pace of innovation in the Kubernetes space is relentless.