A Kubernetes PaaS on DigitalOcean for App Developers

Sandip
5 min readMar 20, 2018

--

tl;dr: Hasura, the Kubernetes-based development tool for full-stack app developers to better build and manage their backends, now brings its powerful platform to DigitalOcean, the awesome cloud provider, as part of its newly launched production tier. Check it out here.

Okay, let’s first address the more-than-an-elephant-sized creature in the room. The aquatic mammal in the above image is a whale and obviously not Sammy, the adorable shark (Aside: Sharks are actually giant fish and not mammals. Unlike Whales, who were land-based mammals that had enough of land and crawled back into the oceans . This author knows the feeling).

There. It’s all good. Now, let’s talk about DigitalOcean. Like the aforementioned hipster mammal, it stands out in a sea of cloud providers (see what I did there!). While most providers have an abundance of confounding dashboards and offerings, and pricing plans a rocket scientist would struggle to comprehend, DigitalOcean delivers a delightful developer experience with transparent and affordable pricing, clean APIs and clear documentation.

Consequently, at Hasura, we entrusted DigitalOcean with the infrastructure for the beta version of our Kubernetes based platform. We even went as far as having our own CNCF-certified Kubernetes distribution exclusively for DigitalOcean.

While developing this expertise and looking at feedback from developers, we realised a couple of things:

  1. App developers are sick of doing stuff that don’t directly contribute to acquiring or retaining users.
  2. Running a Kubernetes cluster is hard.

App developers ain’t got no time

Hasura is rooted in the app development space. To bootstrap our startup, we ran a product development studio for a couple of years. Here’s what we know about this particular genus of developers:

What app developers want to do: Build features for apps.

What app developers don’t want to do: Anything that is not a feature.

However building an app, let alone a successful one, involves working on lots of things that are not features. While all you want to do is rapidly iterate on user-stories and feedback, you are also required to figure out backend stuff like infrastructure provisioning/scalability, architecture, having a robust continuous delivery pipeline, etc.

The ecosystem is ripe with a million tools yet this is still difficult to pull off. Don’t believe me — go talk to a developer from any startup that has made it. It takes months of multiple teams slogging and internal development culture/workflows changes for mature startups to get anywhere remotely close to the holy grail of continuous delivery. Yay for modern dev tooling!

We were promised jetpacks and declarative configurations and yet here we are — toiling through the drudgery that is present day app development and writing blog posts about unfulfilled dreams.

In all fairness, recent technologies like Docker and Kubernetes have made breakthroughs with defining the substrate on which the complexities of a backend can be better reasoned and managed. But they are just that, early-stage technologies that focussed on getting the baseline platform right, and are distracting for app developers to run and extend. And buggy.

Kubernetes is the next big thing. And it is a big big thing.

I could wax eloquent about Kubernetes and how it is eating the world. But I won’t. You ask why? I say stop living rent free under that rock and go see the world - Kubernetes sightings guaranteed!

Be that as it may, Kubernetes is a big hairy monster that’s hard to maintain — there’s a reason why the big 3 cloud providers all have their own managed-Kubernetes service. Let’s just say it’s not a lot of fun to go from debugging an unresponsive service to realising that the iptables in your cluster’s network are out of sync.

From an engineer at Apple & author on a book on Distributed Systems Observability

The force awakens

A new breed of dev tools, that are building higher-order abstractions and practical automation on top of Kubernetes, etc., may finally lead us closer to the promised land. Hasura is one such tool. Although, unlike the rest of the pack, it is primarily aimed not at the high priests of DevOps or SREs but at intrepid app developers hoping to build the next big App Store or Play Store superstar.

Couldn’t resist this cliché

To put it simply, as is obviously this author’s wont, Hasura is an opinionated provider-agnostic Kubernetes-based PaaS (to manage custom backend APIs) and a PostgreSQL-based BaaS (for instant backend APIs). It also includes a git-based DevOps automation component that lets you deploy your code with a simple git push command (we call this GitOps and recently open-sourced the component as gitkube.sh)

What you get with Hasura

Using Hasura, app developers get:

  • A declarative config for their app (infra + backend code) that can be version controlled (life is too short for stressing about on-demand environments).
  • A robust continuous deployment pipeline that works along with the already familiar git-based dev workflow (you can even hook it up to Jenkins, Travis, etc. if this is not fancy enough for you ;)).
  • A Postgres database and instant backend APIs for common use-cases — data, auth, files (because writing bad code for solved problems is too mainstream).
  • Secure and scalable architecture with a pre-configured API gateway that offers auto-renewing SSL (it’s 2018 already).
  • Complete access to the underlying open-source components for power users (no voodoo, child. Let’s leave that to Jimi).

Hasura on DigitalOcean

We are super-duper stoked to announce the upcoming launch of our production tier — a paid service that marries the power of the platform with the simplicity of managed provisioning and deployment on DigitalOcean — at some never seen before prices!

If you are an app developer who wants a pain-free experience of building a successful app or even a hobby project, join the resistance!

Hasura gives you instant realtime GraphQL APIs over any Postgres database without having to write any backend code.

--

--