Kubernetes – Revolutionizing How Businesses Build and Deploy Applications
Kubernetes is everywhere. The number of articles, blogs, conferences, books, etc. is mind boggling. It seems like everyone is either discussing or implementing Kubernetes. The buzz around Kubernetes is a perfect example of technology that fits the technology hype cycle.
If one has paid attention to the evolution of Kubernetes, they can look at the hype cycle above and can put checkmarks next to where Kubernetes has reached a specific point in the cycle. Where is Kubernetes today? Many would say that technology has reached the Slope of Enlightenment phase; perhaps Entering the Plateau of Productivity.
Regardless of where Kubernetes may be viewed on the hype cycle, the number of vendors that have become a part of the Kubernetes ecosystem is remarkable. Why? What makes the technology so appealing? Much of the underlying technology has existed for years. Similar to how Docker took existing technology and made it readily available to a broader audience, Kubernetes has done the same by homogenizing the coordination, or orchestration of containers into a de-facto standard runtime platform using technology that has existed for some time.
The Culmination of Many Smaller, Synergistic Evolutionary Steps
In the general-purpose computing world, Kubernetes is a revolution. It’s a big step in the decades long running evolution of virtualization. For example, Java, and its virtual machine, became a widely used technology that provided an abstraction on top of the operating system on which an application executed. Virtual machines became ubiquitous in providing an abstraction on top of the hardware on which applications executed. Now, Kubernetes provides an abstraction over the network of computers and/or virtual machines providing an abstraction over how applications are deployed and monitored. None of the examples, including Kubernetes, were the pioneers in what they offered. However, they were and are the assembling of existing technologies made available to the general-purpose computing world.
Why the history lesson? Think back. Prior to Java, building and running applications for multiple hardware and operating system configurations was a major undertaking. Prior to virtual machines, applications required their own, dedicated computer. In the business world, both technologies had rocky starts. Today, they’re considered utilitarian. Kubernetes is on the same trajectory.
Why Does an Organization Adopt Kubernetes?
What makes the Kubernetes revolution interesting is that, while a being a revolution, it’s an evolutionary step for many applications to take advantage of Kubernetes. Kubernetes doesn’t define new ways to develop microservices, implement security, support scalability, etc. What it offers is an array of features that support cohesive and consistent patterns in delivering applications. Kubernetes doesn’t replace existing industry best practices. It builds upon them.
Minimizes Vendor Lock-in
Technology vendors always have hooks that lock an organization into their product suite. There’s nothing wrong with taking advantage of unique vendor offerings. It may be the reason why a vendor is selected. The key is uniqueness of offering. Taking a step back and reviewing the typical components or systems required to support a business application, there aren’t many, if any, components that are truly unique to a vendor.
Consider cloud platforms. They all offer stable and high-speed network connectivity, several relational and NoSQL data storage options, multiple CPUs, disk storage choices, and so on. What makes them unique? The way in which the technologies are assembled for deployment. If desired, a hand crafted, custom deployment strategy could be developed that protected a business from vendor deployment lock-in. This is a costly exercise. On the other hand, each cloud vendor offers their own service for managing application deployments. This simplifies the deployment and management process. At the same time, it is unique to the vendor, therefore lock-in occurs.
Do organizations bounce from one cloud platform to another? The short answer is no. However, from a business perspective, when given a choice between vendor lock-in and being vendor agnostic, being vendor agnostic is another variable that can be manipulated when fine tuning cost and strategy. The ability to move from one vendor to another with relative ease provides leverage and control.
Larger organizations may even choose to leverage both the cloud and on-premise resources. In this case, Kubernetes provides the flexibility to move deployments from one environment to another.
Directly Impacts Speed of Delivery
Whether an organization develops applications for its own use or develops products that are sold to customers, the speed at which software is delivered is key to meeting the demands of users and customers while also being able to nimbly react to shifts in the market or competitive landscape.
Executing an effective Kubernetes strategy goes beyond the production environment in which an application will execute. Key to efficiently delivering software is replicating production environments as closely as possible throughout all stages of development. This doesn’t mean having multiple large infrastructures to support each stage. Foundational to Kubernetes is supporting environment agnostic deployments. An application configured for Kubernetes can be deployed on systems ranging from a developer’s workstation, through all stages of validation, to the final production environment. Given that each stage in producing an application uses the exact same deployment package, transitioning across the spectrum of systems required to deliver high-quality applications is seamless, increasing the velocity at which an application can move through the delivery pipeline.
It’s well known that the further code moves through the delivery pipeline, the more expensive it becomes to backtrack and correct. Does implementing Kubernetes directly impact these costs? No. However, implementing a delivery pipeline where Kubernetes plays a key part can have a positive impact on cost.
With application deployment being validated early in the process by developer workstations having an instance of Kubernetes, issues will reveal themselves much earlier. This ties directly into the Shift Left software development philosophy where addressing testing and deployment tasks early in the development process catches problems and minimizes the cost in correcting them.
This aspect of a Kubernetes strategy is more about organizational process and structure than technology. Reducing cost and increasing delivery velocity are aided through a review of organizational structure. Upon examining the impact of a Shift Left discipline, there’s a realization that deployment to production and production-like system based on Kubernetes requires input from teams further downstream in the delivery process. This means that development and operations teams must meet early and often to address their respective requirements with the goal being a single deployment process throughout the delivery process. This synergy across teams is what DevOps is all about.
With teams working together from the outset, there are fewer variables and fewer surprises. It also helps each discipline understand broader needs. These factors have a direct impact on cost.
Is Kubernetes a Silver Bullet?
Kubernetes is a revolution built upon years of evolutionary progress in packaging and deploying applications. When correctly implemented through an organizational commitment to process and proper application of the technology, Kubernetes can be a significant driver toward the speed of delivery and cost control.
No technology is a silver bullet. Just about any technology can be poorly implemented creating an environment in worse shape than its predecessor. Establishing an organizational directive toward the adoption of Kubernetes without a coordinated approach across disciplines may offer benefits. However, a cohesive approach to adoption will maximize the return on investment, driving an organization to a competitive advantage.