Kubernetes is becoming the default infrastructure for deploying a variety of stateless and stateful services. So what are the pros and cons of bringing databases into a DevOps-style management strategy based on Kubernetes? Data systems are very performance sensitive and moving to new virtualization strategies is potentially hazardous. Moreover, Kubernetes doesn’t supply all the capabilities needed to run stateful data services -- you need to understand how to partition responsibilities between Kubernetes and the database itself. This means you can’t just stuff a database into a container and let it fly – YOLO! Instead, Kubernetes requires an entirely different approach to the curation of databases. VMware has deep expertise with virtual machines and Kubernetes. Our team also has committers and contributors to the PostgreSQL project. Our talk will focus on the different techniques of running databases in long-running VMs versus short-running containers. In particular, we’ll cover all of the lifecycle steps, not only the initial deployment experience, including:
- How quickly can a database be provisioned?
- What are the real differences in performance?
- What it's like to scale up and scale down for each?
- How does recovery compare when there's a failure?
This is an intermediate-level talk, so we'll skip the mechanics of deploying databases (helm charts, operators, etc). Bonus: lots of data and comparison analysis!