Percona Live 2018 Featured Talk: Containerizing Databases at New Relic (What We Learned) with Joshua Galbraith and Bryant ViniskyDave Avery
Welcome to another interview blog for the rapidly-approaching Percona Live 2018. Each post in this series highlights a Percona Live 2018 featured talk at the conference and gives a short preview of what attendees can expect to learn from the presenter.
This blog post highlights Joshua Galbraith, Senior Software Engineer and Bryant Vinisky, Site Reliability Engineer at New Relic. Their session talk is titled Containerizing Databases at New Relic: What We Learned. There are many trade-offs when containerizing databases, and there are many open source support options for database containers such as Kubernetes and Apache Mesos. In our conversation, we discussed what containers can bring to a database environment:
Percona: Who are you, and how did you get into databases? What was your path to your current responsibilities?
Joshua: My name is Joshua Galbraith, and I’m a Senior Software Engineer and Technical Product Manager on the Database Engineering team at New Relic. I’ve been working with open-source databases for the past ten years. I started my software engineering career by writing scripts to load several years of high-resolution geophysical sensor data from flat files into a Postgres database. I’ve been writing software that interacts with databases and tools to make operating them easier ever since. I’ve run MySQL, MongoDB, ElasticSearch, Cassandra and Redis in a variety of production environments. A little over three years ago, I co-founded a DBaaS startup and built a container-based platform for Apache Cassandra. I’ve been containerizing databases ever since — most recently by working on a project called Megabase at New Relic.
Bryant: Hello, my name is Bryant Vinisky. I currently work on the Database Engineering team at New Relic as a Senior Site Reliability Engineer. My professional experience with databases and the open source ecosystem started over eight years ago when I joined the engineering team at NWEA and helped roll out a SaaS platform for delivering adaptive assessments to students over the web. That platform was backed by a number of different database and related technologies — namely PostgreSQL, MongoDB and Redis.
Though in the beginning, my role didn’t formally involve databases, they were clearly a very important part of the greater system. Armed with an unquenchable curiosity, I was never shy about crossing boundaries into DB land. On the development side, much of the tooling and side projects I worked on over the years frequently touched databases for a storage backend. As the assessment platform scaled out to support hundreds of thousands of concurrent users, my role shifted to a reliability focus, often involving pre-release load testing of the major system components as well as doing follow up for problems that occurred on the production system. Much of the work involved dealing with the databases as a scaling bottleneck.
Containers came into the picture for me over two years ago when I moved to New Relic, where they had been using containers for stateless services for years and largely skipped over VMs. It wasn’t long before we started exploring containers as a solution for stateful database services with our Megabase project, an area where I’ve spent a lot of my time since
Your tutorial is titled “Containerizing Databases at New Relic: What We Learned”. How did you decide on containers as your database solution?
Joshua/Bryant: At New Relic, we had already built a Container Fabric for our stateless services. We knew we needed to provide databases to our internal teams in a way that was fast, cost-efficient and repeatable. Using containers would get us most of the way towards those goals, but we didn’t have a proven pattern that we could follow to reach them. We heard about other companies succeeding in building similar solutions, and we knew that we were moving away from virtual machines. Containers seemed to fit the bill.
What are the benefits and drawbacks of containerizing databases?
Joshua/Bryant: Containers are great for packaging and deployment. They allow us to deploy a known version of configuration, code and environment in a deterministic way. Unfortunately, containers are not perfect mechanisms for resource isolation, especially when large amounts of persistent storage are required. The challenge of containerizing databases is to make the right trade-offs between portability and performance, complexity and ease-of-operation given the specific context and goals of your team and organization.
Were specific database software (MySQL, Redis, PostgreSQL) easier to containerize? Why?
Joshua/Bryant: In general, the databases that are easiest to containerize are the databases that manage their own state and make themselves effectively stateless from the point of the scheduler and container orchestration framework. Databases that provide cluster membership, fault-tolerance and data replication are easier to run with a traditional orchestration framework. Databases that do not do these things on their own require additional “sidecar” services and/or application-specific frameworks to operate reliably.
Why should people attend your talk? What do you hope people will take away from it?
Joshua/Bryant: As a team, we’ve learned a lot of lessons about what to do, and not to do, when running stateful applications in containers. We’d like to pass that knowledge on to our audience. We also want to send people away with enough information to make the right decisions about whether or not to containerize the databases they are responsible for, and how to do it in a way that is successful given their own goals and context. At the very least, we hope it will be entertaining — and maybe we’ll learn some things too.
What are you looking forward to at Percona Live (besides your talk)?
Joshua/Bryant: We’re very excited to hear about open-source tools like Vitess and ProxySQL. I’m also looking forward to hearing about the latest monitoring and performance analysis tools. I always love deep-dives into specific database problems faced by a company, and I love talking to people in the expo hall. I always come away from Percona Live events a little more excited about my day-to-day work and the future of open-source databases.
Want to find out more about this Percona Live 2018 featured talk, and containerizing stateful databases? Register for Percona Live 2018, and see Joshua and Bryant’s session talk Containerizing Databases at New Relic: What We Learned. Register now to get the best price! Use the discount code SeeMeSpeakPL18 for 10% off.
Percona Live Open Source Database Conference 2018 is the premier open source event for the data performance ecosystem. It is the place to be for the open source community. Attendees include DBAs, sysadmins, developers, architects, CTOs, CEOs, and vendors from around the world.
The Percona Live Open Source Database Conference will be April 23-25, 2018 at the Hyatt Regency Santa Clara & The Santa Clara Convention Center.