by Joe Leslie

NuoDB Golang Operator Now Available, Delivering On Automated Day 2 Operations

Here at NuoDB we're pretty fired-up! This week we’re saddling the horses in anticipation of our trip out to KubeCon 2019 held in San Diego next week! A bunch of us will be there showing the benefits of running the NuoDB distributed SQL database in either single or multi-cluster Kubernetes environments. We’ll also be attending a lot of the sessions and learning how others in the community are using Kubernetes.

Visit NuoDB at KubeCon

If your company is considering reducing IT infrastructure and application deployment costs by moving SQL database workloads to either on-prem or public cloud computing architectures, we encourage you to stop by booth #S53 to learn what we are up to and see a product demo or two. We'd love to meet you while there, so please stop by to say hi (and grab some nice socks)!

Kubernetes Continues to Mature Rapidly

Kubernetes has come a long way in a short time. It’s hard to believe that it was first announced just over five years ago in mid-2014. As it matures, it has continued to add game-changing features, such as container-native storage solutions. The use of Kubernetes persistent volumes allows for flexible storage options, including the deployment of storage vendors products such as OpenEBS, LinBit, Portworx, and many others by easily integrating their solution into Kubernetes via a Kubernetes storage class definition. These new storage options are real game changers for storing enterprise datasets, and offer a lot of excellent features that the Kubernetes community can now take advantage of. 

When deploying enterprise SQL applications in the cloud, for best performance and resiliency, you’ll want to deploy a cloud-native database solution, one that deploys a fault-tolerant architecture directly inside your Kubernetes cluster by running multiple processes across physical locations simultaneously without any data loss or consistency issues. 

Ready for Operators

So now that we’ve got container-native storage sorted, and the NuoDB cloud-native SQL database at the ready, we also want to make it simpler to deploy our database in Kubernetes. Earlier this year, we announced our Helm Operator, which was a great start, because it made it much simpler to deploy a user configurable NuoDB database. 

Next up for our team was to build our Golang Operator, because it offers dramatically more user control and task automation when running a stateful app (such as a distributed SQL database) in the Kubernetes environment. The Operator can ease the management effort associated with common Day-2 operational tasks for our database, such as:

  • Deploying the NuoDB Insights visual monitor
  • Managing and reporting on rolling upgrades
  • Backing up and recovering a database
  • Autoscaling database transaction processes

With all this new functionality available to deliver, we found that there were many more choices that we needed to make, and a lot more configurations and knobs necessary for the new Operator to control. For starters, in a cloud-native world, we know that failure events are common. We expect software, hardware, or network failures to occur, and therefore we design for them.

Next Steps with Go

I worked on this project to release our first NuoDB Operator written in Go with Tom Gates, our lead Operator developer, lots of folks on our engineering team, and our excellent intern, Ashutosh Shukla. Together, we started by delivering parity with our Helm-based Operator, but with the Go-based Operator we were able to easily build in capability to support many various Kubernetes distributions. This level of customization wasn't available before. The use of Go simplified the development and delivery process for us, and of course the Operator simplifies the process of using our database for our users as well. Next, we were able to write the programming necessary to deploy NuoDB Insights visual monitoring "on-cluster," which is a Phase IV capability in Red Hat’s maturity model below.

 Red Hat’s maturity model for Operators

All of the capabilities listed in Phase II and beyond require interactions with other pieces. For NuoDB Insights "on-cluster," which allows our users to store and manage their performance data locally and privately, the Operator installs Elasticsearch to store performance metrics and enable easy-of search capability for our database. We also added a connection with Logstash to ingest and transform the data, and Grafana for flexible query of real-time and historical performance and application workload data — combining them into a single easy-to-use visual performance monitoring and analytics dashboard. This dashboard allows NuoDB application and database admins to easily track NuoDB memory, CPU, and storage resource usage and consumption as well as the SQL application workload that it is processing in SQL transactions per second (TPS).

Now our newly available Operator also allows us to check on the status of previous steps to make sure that everything started correctly before moving on. This clears the path for us to perform more complex tasks reliably, for example, seamless rolling upgrades and the ability to fully manage backup and recovery events automatically. 

Stay Tuned for New Capabilities

We’re excited about the capabilities in our new Go Operator, and are continuing to build out new functionality — so stay tuned and visit us at KubeCon + CloudNativeCon NA in booth #S53 to get a demo of our new Golang Operator, or watch our recent OpenShift Commons Briefing demo. See you at KubeCon!