As we head into 2021 and beyond, the application development and deployment paradigm is changing drastically as businesses undergo a digital transformation. Chances are you are now building and deploying the next-generation applications to meet the rapidly changing business environment, to add greater value to your customers, and to adapt to the new “normal” with the COVID-19 pandemic.
When selecting the next set of application infrastructure, the following considerations are paramount:
- Faster time to market
- High scalability and availability
- IT cost optimization
- Portability — package once, deploy anywhere
These are the reasons why many companies are adopting Kubernetes and containers to build their new cutting-edge applications.
Why Are Containers and Kubernetes a No-brainer for New Applications?
The software community has been looking for a platform to enable fast application development and flexible deployment. With Kubernetes, that search is over. Containerization along with Kubernetes orchestration is an app developer’s dream come true. Developers don’t need to worry if the application runs on-premises or within public clouds. Nor do they need to worry about deployment while building business logic. It makes the life of developers much easier when it comes to developing new applications faster and better.
What Are Containers?
In the last 20 years, computing has evolved from physical servers to virtual machines to containers. Containers are essentially stripped down versions of the Linux Operating System. A container is not a VM, and they typically run a single process. Container images are immutable, which prevents infrastructure drift.
What Is Kubernetes?
Developed first by Google, Kubernetes is an open source orchestration system for containers that has become the de-facto standard for container orchestration.
What Is Container Orchestration?
Container orchestration involves handling deployment, scaling, load balancing, service registry, application configuration, monitoring, routing, etc. It helps:
- Actively manage workloads to ensure that their state matches the user’s declared intentions
- Make applications portable, easier to distribute and run, and faster to build with microservices architecture
- Scheduling containers on to nodes in a compute cluster
- Active monitoring, including health checks and restarting containers when needed
Kubernetes provides the ability to orchestrate the application lifecycle in a simple and powerful way that can provide developers with the ability to focus on business logic while the ops teams manage the application runs. This provides great value to an IT organization today in building and running business critical applications more effectively.
Do I Need to Protect My Containerized Application?
Docker and Kubernetes are great, but how do you provide governance, ensure compliance, and provide the resiliency that enterprises need for their business applications? Customers have the following goals with any business application:
- Meet the business requirements
- Make the application scale as business grows
- Prevent data corruption or data loss
- Quickly recover good data in case of corruption or data loss
All of the above are as critical when it comes to new applications built using the microservices architecture. All the use cases — Backup and Recovery, Disaster Recovery, Dev/Test, Migration, Protection from Ransomware, etc.— are very much relevant for these new containerized applications just as they are for applications running within hypervisors.
Should I Back Up Stateless Containers?
Stateful vs. Stateless Containers
At the advent of containers, users were primarily using containers in a stateless manner. As adoption grew, Kubernetes clusters started using stateful containers. Containers have two types of data:
- Business Data
- Metadata
A stateful container has both business data and metadata, whereas a stateless container has only metadata. Metadata can be extremely important as well and needs protection too. Metadata controls how the container deploys, how it scales, what attributes it uses, what keys it uses, and so on. Metadata is critical for reinstating the application and is equally important to protect against engineered or natural disasters. Metadata is needed for true application recovery.
What Are the Key Considerations for Kubernetes Backup?
A backup and recovery solution for a Kubernetes application needs to consider the following:
- Application centricity: One needs to back up not only data but all the associated metadata too so that when the application is restored, it comes up without additional steps. A container contains business logic and deployment logic; the backup software needs to be aware of both.
- Enterprise readiness: The standard needs of an enterprise continue to apply to Kubernetes backup and recovery as well, including the abilities to carry out auto-discovery, auto-protection, and full-featured recovery. Performance continues to be important so backup windows can be met and timely restores can happen for large persistent volumes of data.
- Fast reliable recovery: The speed of recovery is critical for larger enterprise applications and databases which can have volumes in multiple terabytes. Taking snapshots and moving the data efficiently is critical. It is also important to be able to meet the RPO and RTO needs of applications.
- Support for leading distributions: Although most distributions use mainline Kubernetes and comply with the standards, it is important to ensure that the solution will work seamlessly in a hybrid environment. The top distributions in use are OpenShift, VMware Tanzu, Rancher, PKS, and so on. Besides these distributions, there are Kubernetes services in public clouds like AWS EKS, Azure AKS, and Google GKE that are used as well. It’s important to make sure that the backup and recovery solution can support these different distributions and platforms.
- Integration with container native tools: When it comes to Kubernetes environments, the tools and mechanisms used for deployment, monitoring and management can be very different from the existing IT systems. Helm, Prometheus, and Grafana are examples of such tools. Integrating these tools with the data protection software can make lives easier for the users.
Enterprise-class Backup and Recovery for Kubernetes
Cohesity provides enterprises with the ability to protect their new Kubernetes-based applications as part of Cohesity DataProtect, a software-defined backup and recovery service. Cohesity DataProtect provides enterprises the same level of resiliency and flexibility to Kubernetes-based applications as it does to other business-critical workloads. Cohesity provides backup and recovery leveraging CSI (container storage integration) snapshots. Cohesity PODs (a deployment object in Kubernetes that contains one or more containers) are deployed on each worker node of the Kubernetes cluster for better performance. It provides powerful policy-driven auto-protection, deduplication, replication, and archival of data for backup and disaster recovery purposes. We support a range of distributions including Openshift and VMware Tanzu for backup and recovery.
With Cohesity, customers are assured that their newest applications are fully protected and compliant. Learn more about how you can protect your business-critical Kubernetes-based application with Cohesity.
For more information on what you need to know about containers from leveraging to protection, join this on-demand webcast, How Containerized Apps Break the Mold — And What You Should Know to Protect Them, with a panel of experts from Fixate IO, Red Hat, and Cohesity.