Why Enterprises Are Moving Stateful Applications to Kubernetes
In part 1 of this blog post series, we explored the possibility of Kubernetes becoming the new leading enterprise application platform. Now, we’ll look at one of the key reasons the platform is gaining traction with enterprises: the desire to move stateless applications off traditional infrastructure and into Kubernetes.
As Kubernetes matures as a container orchestration platform, stateful applications are becoming much more common. That may surprise you, since containers weren’t really built for databases or data processing, and were originally designed with the requirements for stateless applications in mind. Although microservices and containers are highly distributed and ephemeral by nature, it’s essential that the underlying data storage that supports them remains intact.
Databases are necessary to store the data that must persist in order to deliver a service – for example, inventory to fill the shopping cart of an online merchant, or menu items available through an online food delivery service. What’s more, data architectures are dynamic and constantly evolving; many applications leverage multiple relational databases – some of which may run within Kubernetes clusters, and some that are managed or delivered as a service.
Let’s examine the difference between stateful and stateless apps and some good reasons why more people are moving their stateful apps to Kubernetes.
Stateful vs. Stateless
Stateless applications are essentially containerized microservices that have a single function or service and use a server to process requests. However, the server doesn’t retain state information between requests, and different requests can be processed by different servers. They don’t require storage to run, so they don’t retain any data, and as such, provide high levels of resiliency, elasticity and availability.
What’s more, with stateless applications, multiple pods in a cluster can work independently and process requests that come to them simultaneously. Upon restarting a stateless application, it returns to its initial state immediately with zero downtime.
However, if your application requires the ability to retain state information, it must be stateful, and all pods within the container must access a local persistent storage volume. Most modern applications are partly stateful, because they must store user preferences and settings to provide a good user experience.
According to 451 Research, 55% of enterprises surveyed say stateful applications comprise more than half of their containerized applications. What’s more, DataDog data shows that organizations are running a broad array of technologies on top of Kubernetes (see Figure 1).
There are numerous reasons organizations are moving stateful, business-critical applications off traditional infrastructure to Kubernetes:
- Agility and resilience: In Kubernetes, containerized apps can be restarted in an instant. If a node fails, apps can be moved to a different one. You can easily apply patches and updates or roll an application back to an earlier working version, reducing the time it takes to resolve issues.
- Portability: With Kuberenetes, applications are mobile. You can move them across different infrastructure, leveraging a common set of APIs for different clouds or on-premises environments.
- Storage standards:Volume plugins have limited scalability in the past, but with the creation of the Container Storage Interface (CSI) standard, third-party storage vendors can now write plugins that are compatible with Kubernetes. This has resulted in a lot of innovation and advanced capabilities being introduced to the market.
- New storage objects: The CNCF has introduced new storage objects such as StatefulSets, PersistentVolumes and controllers that enable you to expose a variety of databases – Cassandra, NoSQL, MySQL, and PostgreSQL. These objects help simplify the process of running stateful applications in Kubernetes.
As the Kuberetes community becomes aware of the platform’s ability to support stateful applications, more enterprises will be able to take advantage of the many benefits it has to offer.
Addressing Data Management Challenge
Despite the benefits, the influx of stateful applications presents DevOps teams some daunting data management challenges. In the third blog post of this series, we’ll take a closer look at those challenges and how purpose-built Kubernetes solutions such as Kasten K10 by Veeam can help solve them.
Listen to this on-demand webinar to learn how Kasten by Veeam is partnering with Lenova to provide best-in-class cloud native solutions. Or, try Kasten K10 for free today!