Bose is building databases on demand with Elastic, CockroachDB, and Kubernetes

Last edited on January 13, 2021

0 minute read

    Back in the bygone era of meeting in person, shaking hands, and clapping enthusiastically for the brave souls who are willing to stand in front of their peers to do live demos, Elasticsearch held a meetup in Boston at Bose headquarters. Chris Chambers, Cloud Engineer at Bose, spoke to the crowd about how his team built a platform as a service using a number of open source tools, including CockroachDB, Elasticsearch, and Kubernetes.

    Bose really requires no introduction but it bears mentioning that Chris works on a specific team within Bose called Galapagos. The mission of Galapagos is to bring Bose’s software into the 21st century - In the past, Bose was focused on embedded software (software that runs on speakers and headphones) and now that they’ve mastered the art, they have started to modernize so that they can bring cloud-connected experiences to all our devices.

    Data Stores for Microservice ArchitectureCopy Icon

    Adoption of microservices architecture has led to a sprawl of databases, Chris explained. And microservice developers need to be able to quickly, repeatedly spin up data stores behind those services–something a number of Meetup attendees had experienced in their professional lives or side projects.

    To ease that pain, Bose wanted to extend Kubernetes to allow any software development team to get easy access to Elasticsearch, CockroachDB and other popular data stores with a powerful, cost-effective, scalable, reliable solution.

    Here is a short video in which Dylan O’Mahoney, a Principal Cloud Architect from Bose, explains their use case with CockroachDB:

    Modern Application Tech StackCopy Icon

    Bose has been using CockroachDB to power their cloud-connected platform unit for two years now, in large part due to its resiliency and horizontal scalability. But CockroachDB is just one ingredient of this modernization project. The full tech stack includes Elasticsearch, Kafka/MongoDB/Postgres for when they need a low availability version of CockroachDB. And Redis for when they need to share memory with other applications. Underneath all that is Kubernetes, which hosts essentially all the compute that we do. They’re using the service catalog which is a kind of abstraction layer that allows external services or really any service to surface into Kubernetes in the same way that a pod or a deployment or a Statefulset would, but without exposing those details. So behind a service catalog instance, there might be an AWS RDS instance or a CockroachDB instance, running as a StatefulSet in the same Kubernetes cluster or in a different Kubernetes cluster, or even across clouds.

    Why build a database on demand?Copy Icon

    Essentially what Galapagos is trying to do at Bose is to create low friction ways for developers to work, and to use things which they may not be completely familiar with, in a way that’s quick and easy for them. Galapagos wanted this to be self-service, so it should be possible for teams to stand up a database in just a few minutes, without any help from DevOps. No developer time is wasted while they read along in the Wiki for instructions. And the process is declarative so that developers can repeat deployments in any environment, whether they’re doing a feature branch to quickly test something, or if they’re preparing to go to production.

    The declaration about what kind of database they need should be the same, and only the scale and other kinds of parameters should change. And that should all live right next to your application so that the code that uses a database is versioned alongside the declaration about what kind of database and the parameters that you use.

    If Galapagos project at Bose is relevant to your own work and you want to learn more about the tech stack and how you can implement some of the same practices you can check out our webinar with Chris on the same subject.

    cockroachdb self-hosted
    quick bites
    high availability