Are You Ready For Kubernetes?

INTRODUCTION

A current trend in software architecture is to decompose large systems into many smaller services (called
microservices), each with a small and focused scope. Previously monolithic systems were hard to iterate on because
a small change to one part of the code could impact any part of the system, requiring a full test and re-deployment
of the entire system. This slows down the pace of innovation and feature delivery. A microservice is a smaller and
self-contained set of functionality that is easier to rapidly develop, enhance, test, and deploy. A well-architected
microservice can be updated, fully tested, and deployed to production in minutes. When pushing new features to
production, a smaller portion of the system is changing which limits the scope of problems that could arise when
rolling out changes. This architectural paradigm greatly reduces the time it takes to bring new features to market,
while also reducing risk.

A common method of delivering microservices is to build them as containers that insulate them from the details of
the underlying hardware and operating system. Containers make your services more portable across environments.
Delivering your services as containers increases confidence that the system will work properly as it is promoted
from development and test environments to production. However, the more microservices and containers you
have the more complex it is to manage them. As teams migrate to a containerized, microservice architecture they
invariably hit a point where managing larger numbers of containers becomes technically infeasible or too costly to
do manually.

Kubernetes is the de facto standard container orchestration platform for modern software applications. Kubernetes
and its ecosystem automate the critical tasks required to deploy and maintain a highly available, scalable, and
secure microservice architecture. Moving to Kubernetes can allow your product, team, and business to scale to the
next level.

When Should You Make The Move?

Kubernetes is both powerful and popular, but that does not mean it’s the right choice for every team and every app.
Some indications that it’s the right time to consider moving to Kubernetes include:

• Your app is composed of multiple containers that need to interact for your app to function.
• Your application requires multiple servers to run.
• High availability is important to the continuity of business operations.
• Your application must scale up and down to handle spikes in usage.
• Your team is spending a large amount of time manually deploying software.
• Orchestrating upgrades and updates with minimal downtime is becoming complex.
• You have a Continuous Integration (CI) pipeline and are looking to enable continuous deployment (CI/CD).
• Efficient use of resources is important to keep infrastructure costs down.
• Speed and agility are critical to timing the market and outpacing competitors.
• The rapid evolution of user experience drives customer acquisition and retention.

What’s The Catch?

If you’ve decided that moving to Kubernetes would improve speed to market, scalability, availability, or agility in the
face of competition, you need to be aware of some of the complexity, and related costs, that come with managing
Kubernetes. Some of these considerations include:

Technical Complexity:

Kubernetes uses containers, distributed databases, software-defined networking, software-defined storage,
certificates, etc. What’s more Kubernetes is highly modular with a rich ecosystem of components. It’s up to the
platform engineers to select which components to use and how to configure them.

Conceptual Complexity:

Kubernetes use containers, but adds on concepts like pods, deployments, replica sets, stateful sets, services,
ingresses, secrets, cluster managers, etc. The team must learn and understand these concepts. This can be a steep
learning curve.

Getting To Production:

These days it’s fairly easy to get a small Kubernetes instance up and running. However, a proof of concept is not
indicative of success in getting to production. Managing a production-ready Kubernetes instance that is secure,
highly available, scalable, upgradable, and maintainable is much, much harder.

Rounding Out The Platform:

Simply deploying Kubernetes is not the end of the story. Service meshes, logging, monitoring, policy enforcement,
cloud integration, ingresses, etc. are all part of a full-fledged Kubernetes environment, and each of these brings
additional complexity.

If these seem daunting, don’t worry; we’ll cover some options that can potentially reduce the complexity of using
Kubernetes in your business a little further below!

Are You Ready?

Before committing to the move, teams should ensure they are ready to make the transition. If your team doesn’t
have some of the prerequisites out of the way, adopting Kubernetes may be significantly more difficult, and/or the
organization may not realize the full benefits Kubernetes can provide.

To help determine if teams are ready, click the button below to begin our guided self-assessment: