Modern applications need to be fast, available, and secure. They are composed of many microservices, often supported by multiple data services. Managing each of these data services in a dynamic, Kubernetes world is complex, time-consuming and leaves little time for innovation.
Managing stateful applications on Kubernetes in production is difficult. According to a Pure Storage survey, the most important customer requirements are:
- Backup & Restore, 55%
- Data Mobility, 49%
- Capacity Management, 49%
- High Availability, 48%
- Multi-cloud, 45%
- Encryption, 43%
- Disaster Recovery, 43%
Most applications use some type of database, queue, or key-value store to manage state. However, when it comes to running these data services in containers, problems multiply because containers and popular schedulers like Kubernetes are not designed to handle the issues associated with databases.
Containerised database issues
Some of the issues encountered with containerised databases:
- When a container dies, it can lose data if persistence is not set up correctly.
- Popular schedulers are not designed for stateful services and provide only limited functionality.
- App-level replication requires domain-specific knowledge for each database.
Adding to the complexity of containerised database management is that modern applications built with microservices require access to SQL and NoSQL databases like MySQL, PostgreSQL, Cassandra, and Couchbase, and to streaming, search, and AI, ML pipelines like Elasticsearch, and Kafka. Managing so many types of data services is complex, but this complexity is magnified by the number of database instances used to manage and scale across disparate test, dev, and production environments, availability zones, and clouds.
While Kubernetes provides support for automation, running data services on Kubernetes remains complex
A traditional approach to managing these data services relies on scripting and numerous repetitive and manual activities, resulting in significant effort to ensure databases remain online and support mission-critical applications. These highly manual activities are prone to human error and excessive downtime, and cannot be easily automated with existing infrastructure automation tools.
While Kubernetes provides some support for such automation, running data services on Kubernetes remains complex. DevOps teams today struggle to manage the numerous data services deployed on Kubernetes across the enterprise, as each has its own set of complex requirements around performance, high availability, data protection, data security, and more. Instead of delivering new features and applications to market, DevOps teams instead spend much of their time firefighting deployments and managing the operations of these data services.
Database as-a-Service platform
What DevOps teams need is an as-a-service experience that delivers reliable, performant data services for their apps running on Kubernetes, without the vendor lock-in that accompanies some database-as-a-service, DBaaS platforms hosted by cloud service providers. Developers need access to reliable data services for their apps and an as-a-service offering means they consume, but don’t manage, the database.
A solution for this challenge is a single data management layer for all stateful services, no matter where they run. With such a DBaaS platform, running data services on Kubernetes is dramatically simpler.
DevOps teams struggle to manage the numerous data services deployed on Kubernetes across the enterprise
Such an integrated platform enables enterprises to run automatically managed data services, on any cloud, at a low cost. They can get the benefits of database-as-a-service, without the lock-in. The platform automates the management of data services, leaving more time for innovation.
This type of SaaS platform is designed for managing databases on-premises or in the cloud. It allows automating many routine database management and administration tasks. With an effective DBaaS platform, small teams can support many users, providing reliable operations and an easy, self-service user experience.
Kubernetes workloads
Traditional tools for backup and recovery are not granular enough to deal with the complexity of backing up containers and distributed Kubernetes workloads. Built from the ground up for Kubernetes, the backup feature of a DBaaS platform delivers enterprise-grade application and data protection with fast recovery with the improved granularity needed to protect your data at the application level.
Developers get an app-defined control plane that enables apps to run across multiple machines and provides application consistency for distributed databases. It tightly integrates with Kubernetes and provides Namespace awareness.
A software-defined container storage platform delivers persistent storage and data services for containers and microservices. It abstracts away the complexity of underlying storage infrastructure to provide a single unified storage layer for cloud-native applications. With a single click, developers are able to deploy an enterprise-grade, production data service that supports backup, restore, high availability, data recovery, data security, automated capacity management, and data migration.
With DBaaS platform for Kubernetes, databases and other stateful services can be deployed and managed on any Kubernetes cluster with a single click, giving enterprises the advantages of a managed database offering without the drawbacks of vendor lock-in. A specialised DBaaS platform makes running data services on Kubernetes dramatically simpler, freeing up DevOps teams for more value-added activity and innovation.