The Problems That Kubernetes Solves
Erik Schmiegelow with Daniel Roy for Hivemind Technologies
Introduction
Many articles talk about the benefits of migrating your apps to Kubernetes deployed in the cloud. They talk of cost effectiveness, scalability and standardisation. The latest and greatest technologies and frameworks strut down the catwalk, and everyone sings their praise for the innovation they bring.
But Erik has discovered in his conversations with industry leaders, including many that became satisfied clients of Hivemind Technologies, that oftentimes tech companies simply aren’t aware of the problems they’re encountering, or are aware but are not aware that there are modern solutions that can easily improve key performance metrics.
In this article, we will explore many of the issues Erik has identified as the most common that arise in industry, including time-to-market, integration of legacy apps with new developments, and of course the always prevalent issue of cost.
Common Pain Points
Time To Market
Time is money, quite literally. The delay in getting a new feature or bug fix to production is actual money your business should be making. If it's functionality that a competitor already offers, then you may not even recover that business as it will be too late if your customers go to them.
Picture the scene. Your customers are all vocalising their need for some new functionality. Excellent, a new requirement, time to activate the development pipeline.
You write up a ticket into Monday/Jira/sticky note on a wall. A beautiful, clear ticket full of hopes and dreams. Into the pipeline it goes, and you wait.
Days, weeks, months go by. You haven’t heard anything about that yet, and your customers are only getting louder with their demands. The ticket has been “In Progress” for a long time now. You check in with your CTO or project manager and ask what’s the progress with that ticket.
To your dismay, they start outlining the many technical problems that arise from your ticket. Difficulties derived from the ageing architecture. You’ve heard this all before.
Why does it always have to take so long? The answer is often due to the legacy applications in your company that are very difficult to update. Your dev teams work hard, they won’t deliver functionality unless they’re certain it will work. But this verification process is slow. Every step, such as deploying to test environments and running the tests themselves, may already be somewhat automated, but not enough. We’ve seen many teams make use of Ansible scripts to achieve these, but still they must be executed manually, often to non-uniform environments which require their own debugging. It’s quite likely you even have different production environments, with different requirements for deploying to, requiring further testing.?
Docker and Kubernetes solve many of these problems. Instead of deploying your apps straight to a machine, often some kind of Linux box, Docker represents a declarative, uniform approach to deployment. Simply create a Docker image by adding in your application runnable and any other requirements, and the Docker container spawned from the image is guaranteed to run identically everywhere. One app, one image, and much smaller than a virtualised PC. Pair this with Kubernetes for provisioning resources and coordination between containers. You’ve got a much more robust and scalable system for much less effort, with much more functionality such as secrets for sharing security information and automatic app scaling for optimal resource usage, to name a couple of things.
Docker standardises app delivery. Kubernetes standardises how apps interact with each other and how they utilise resources. Security too becomes much easier thanks to this standardised declarative approach. Kubernetes makes use of Role-Based Access Control, where permission must be explicitly granted for every action a container may perform.
领英推荐
This simplification of the language by which your developers and operators communicate with each other facilities a much faster delivery process. This in turn increases developer output, increasing productivity almost overnight.?
Integration of Old with New
Legacy apps hang around for a reason: they represent a large chunk of functioning business logic that generates income. Completely rewriting a codebase using the latest libraries and language versions is not a reasonable application of a company’s resources, and spending so much money upfront on building something new that has no guarantee of working anyway is a huge financial risk.
However, the legacy system needs to interact with new systems. New data sources, new processes, new backends, whatever it may be.?
Kubernetes is the solution for this. A single, uniform environment where apps are guaranteed to work the same across providers. AWS, Azure, Google or even an on-premises Kubernetes environment, the deployments will look the same across them all.?
And that includes your now Dockerised legacy app. With it and any shiny new microservices deployed in a Kubernetes cluster, communication between them becomes far easier via HTTP, gRPC, Websockets or however else. Docker with Kubernetes is the low-code solution to empower your legacy app and bring them forward into the modern age.
Standardisation Across Deployments
Deploying directly to hardware represents a myriad of challenges that your tech team must overcome. The team needs to concern itself with the different quirks of the various production environments employed for different customers.
With the standardisation that Kubernetes brings, your development team can focus on a single application that is deployed identically to every environment. Whether it be on Amazon Elastic Kubernetes Service, Google Kubernetes Engine, Azure Kubernetes Service, the deployment will be identical. Your developers can focus on the important stuff like bringing new features to market faster, instead of debugging issues unique to each deployment.
The improved efficiency from this alone can be worth all the effort in migrating your legacy apps to Kubernetes.
Cost
The biggest driving factor in the majority of technology companies. How can you make better use of your resources, be it all the hardware you’ve already invested in, the developers you’ve hired and trained up or simply the out of pocket expenses that come with running an advanced technology company.
In every subject covered in this article, we highlighted multiple ways that migrating your legacy bare-metal service to Kubernetes can optimise your development team and make far more efficient usage of the hardware your applications run on. It is all but guaranteed that all the upfront costs of this migration will be repaid in kind very quickly.
How To Migrate To The Cloud
The best solution in our opinion is to first contact Hivemind Technologies and organise a call with our industry specialists. There are many options we can take from there, such as organising a workshop to see first hand for yourselves the benefits of migrating to Kubernetes.
Check out our website for more articles on cloud migration and leading technologies to help facilitate a smooth transition, such as this introduction to ArgoCD for the best GitOps approach to application deployment in Kubernetes. Or check out this article on the history and development of Docker and Kubernetes.