“Mux” is shorthand for multiplexing, or combining multiple signals into one in digital media. And since it was founded in 2015, the startup named Mux has worked to combine everything needed to “make online video streaming easy for everyone,” says Co-founder Adam Brown. “Our goal is to remove the technical complexity from building a high quality streaming experience. We help automate decisions like codecs, encoding settings, and CDN distribution behind an easy-to-use API.”
Mux’s two products are a data product that provides users Quality of Experience (QoE) metrics for their videos across video players around the world, and a video product that allows developers to easily build and work with video on demand or live streaming.
With both these workflows, especially the video one, “there’s a lot of moving pieces involved,” says Brown, who is head of technology and architecture at Mux. “We manage lots of very large files from various places around the globe, and we transcode a lot of files. Then there are data pipelines involved for making algorithmic decisions as to what transcoding parameters to use, what bitrates to produce, and what CDNs to distribute through.”
To manage that complexity, the company embraced containerization early on, using Docker containers for its very first deployment in December 2015. Initially, Mux used the Rancher stack to manage the containers. “It seemed like the easiest thing to get started with,” says Brown. “Kubernetes was young at that time, and there was a lot more complexity to get the cluster up and running.”
After a time, the company started having some stability problems around networking, and as the Kubernetes ecosystem matured, Brown revisited moving everything over to Kubernetes. He considered the various cloud provider-hosted, managed Kubernetes offerings, but ultimately went with having the Mux team run Kubernetes themselves.
“We run on multiple clouds, both Google and Amazon,” Brown explains. “One of the things that we were very concerned about early on was having a consistent environment across both our internal development and operations. We wanted the logging to work the same, the metrics to work the same. There were some technical challenges to get it to work the way we wanted to with the managed services due to the access that you had to the host level. So we ended up managing it ourselves across all clouds.”
Moving to Kubernetes had an immediate impact at Mux. “It’s increased our productivity in how we manage and version deployments,” he says. “We’ve also been able to dynamically scale up and down very quickly to respond to very large live streaming events that have potentially millions of viewers.”
The consistency across cloud providers that Kubernetes enables, Brown says, “allowed us to think about every cloud provider as purely compute resources. As far as our developers are concerned, when they’re writing software, even complex system software, they don’t have to think too much about what cloud it’s going to run in. And that has simplified our entire development workflow quite a bit.”
Now, a development environment can be spun up in less than 15 minutes versus hours of setup previously, and rolling the entire cluster (with about 90 microservices) across multiple cloud regions takes less than an hour.
Read more about Mux’s cloud native journey in the full case study.