Supergiant Builds on Kubernetes to Manage Multitenancy for Distributed Applications

The team at the Qbox, which provides a hosted Elasticsearch service, likes to tell how the bootstrapped company went from engineers frantically working on support tickets all night and drowning in costs to saving 50 percent on infrastructure, gaining better stability and performance, and getting some sleep.
It quickly discerned that a dedicated VM model wasn’t working for this compute-intensive application. Yet while it decided to consider Docker containers, it wanted to avoid “noisy neighbor” problems that are common on shared infrastructure with SaaS offerings and performance problems for stateful applications like databases.
How would Qbox provide headroom for customers’ needs for “bursts” of resources while improving utilization — it had been below 30 percent – and associated wasted expense it had been experiencing?
It found the answer in the open-source cluster manager Kubernetes, which makes it easier to run distributed applications in a multitenant environment and provides granular control over resource sharing.
Qbox has combined its three years of experience in this area with Kubernetes to create the open source project Supergiant, a framework for managing any distributed applications on Kubernetes clusters. It’s available on GitHub, licensed under Apache 2.0.
“We would have problems when users would bulk index. Their compute resources would be completely hoovered up because they were on VMs. We would constantly have to start and re-start nodes,” said Mark Brandon, Qbox CEO.
“With Elasticsearch, if you reach the limit of compute resources, it stops serving search results and our customers would often have a problem with that. With Supergiant instead, it has all the benefits of single tenancy, such as no “noisy neighbor,” but all the benefits multitenancy. They’re on much larger hardware than their allocation.
“And if you have a burstable application like Elasticsearch, you can gracefully rein in overage rather than just stop,” he said.
So it provided more performance, fewer tickets and lower cost. Formerly available only for AWS, Supergiant just added Digital Ocean and has Google Cloud, Rackspace, and OpenStack on the road map.
Kubernetes Extension
Neither containers nor Kubernetes do a great job with distributed apps, and that’s what Supergiant is for, according to Brandon.
“We not trying to replace Kubernetes, we’re trying to add to Kubernetes. Supergiant is more of a Kubernetes extension,” he said.
Supergiant’s central feature is the component, essentially a microservice that ideally does just one thing within an app. A component is a service, replication controller and pods all wrapped up into one object. It rolls up all the Kubernetes and cloud operations needed to deploy a complex topology in a way that’s easy to manage. Developers can use a publicly available recipe or keep their own private repositories.
With a stateful application in a container “you need to specify RAM, volumes, the number of processors, the actual container itself — where it’s located, security settings. With Elasticsearch, you don’t have to do master-slave configurations, but you can,” Brandon said.
“With Supergiant, it can be a one-click process. You’ll have as many nodes as you need, it will autoscale, it will automatically attach and reattach volumes as nodes become available, it will load balance, etc.”
Supergiant automatically sets up the entry point, which wraps the load balancer and kube-proxy settings into one configurable object. Kube-proxy routes traffic from the outside to the correct containers inside. Entry points are sharable between components and apps, though that’s not a feature of Kubernetes.
And rather than namespace, Supergiant uses the term application as an easier way to think of structures in the Supergiant API. The API puts all configuration into one simple config that can be exported, imported or shared with other Supergiant users.
Supergiant put the focus on four areas: installation, persistent storage, load balancing, and autoscaling.
It does not use Kubernetes’ persistent volumes. Instead, on AWS, it uses Elastic Block Store (EBS). These volumes are persisted across node server reboots, ensuring that data is not lost when a node goes down.
Supergiant’s tools manage persistent storage in a way that allows you to migrate data, change hard drive size or type on the fly.
The Supergiant team also created its own external load balancing, which was “less than ideal” for distributed applications with Kubernetes, according to Brandon.
The Road Ahead
Supergiant has quickly gained enough interest for Qbox to offer a supported version, Brandon said.
Its users include graphic design marketplace 99designs, restaurant delivery service DoorDash, mobile app development company 3 Sided Cube and classroom community site ClassDojo.
No longer bootstrapped, Fayetteville, Ark.-based Qbox has raised $2.86 million.
The roadmap for Supergiant is focused on making deployment easier. Brandon foresees one-click versions for Elasticsearch, Redis, MongoDB and others. The company also wants to add on to Kubernetes with its own monitoring app, security app and more.
Digital Ocean is a sponsor of The New Stack.
Feature Image: “A Star-Formation Laboratory” by NASA Goddard Space Flight Center, licensed under CC BY-SA 2.0.