Inside Rafter

A Spark: Why am I building Rafter?

April 16, 2020

I’m building a project called Rafter.

It’s a container-based serverless hosting platform powered by Google Cloud Run. It caters to full-stack frameworks like Laravel, Rails, and WordPress — but it can host anything that fits in a container.

I plan to write a lot about the technical aspects of this service. But first, I wanted to step back and talk about why I’m building this at all.

Here’s a set of four core beliefs that are driving this product:

1. Developers should not have to think about Docker or Kubernetes

If you’re building a product or webiste, developer time spent on building the actual product is much better than developer time spent on tooling, debugging Dockerfiles, configuring Helm charts or inspecting Kubernetes ReplicaSets.

I’ve seen far too many developers attempt to solve a simple issue in a codebase only to be blocked by a day of Docker troubleshooting.

As a developer, you shouldn’t have to know a thing about Docker to deploy your app.

2. There’s still value in full-stack frameworks

Microservices and static-generated JAMStack applications are all the rage. They play a great role in the future of our industry, and they are super powerful. But full-stack frameworks like Laravel and Rails are still valued and used by many products. It’s hard to beat built-in request lifecycles, authentication, middleware, queues, filesystem interaction, and email handling.

These applications deserve to be deployed and scaled as seemlessly as their microservice and JAMStack counterparts.

3. You shouldn’t have to pay for hosting when your app isn’t being used

This is pretty simple. The technology exists. You can find numerous JAMStack-like services with a generous free tier. Container-based serverless options — more likely to support full-stack frameworks — are just starting to offer scale-to-zero features along with those free tiers.

We as developers shouldn’t have to waste any more money paying for a \$5/mo VPS, hosting side projects nobody ever visits.

4. Developer experience (DX) and user experience (UX) are core tenants of a product

I can’t tell you how many times I’ve abandoned a product because of poor DX or UX. If a product is not well-designed — or if it’s clear a developer cobbled it together without thinking of how it would be used — it’s likely not going to be a great experience in the long run. This is why I’ve avoided using AWS for so long and been attracted to Google Cloud Platform’s more useful dashboards and documentation. DX should be at the forefront of every new tool and API we build.

The History

In February 2019, I wrote a blog post called My Dream Side Project.

In it, I expressed my desire for a serverless hosting solution for PHP, among other things. I went into detail about how Kubernetes and Knative set the stage to make this possible.

But a lot has happened since then.

In April 2019, Google announced Cloud Run, their container-based serverless platform built on Knative.

And in July 2019, Taylor Otwell introduced Laravel Vapor, which is the exact type of serverless platform I’d envisioned building for Laravel PHP apps, though this was hosted on AWS and powered by Lambdas.

It seems like I’m not the only one who wanted this sort of thing to exist!

I started building Barkpass in 2019 with my wife, and this is what really drove the spark to create a new platform for serverless deployments on Google Cloud Run. While I still haven’t made the transition (I’m paying monthly for a VPS on DigitalOcean), it’s truly what got Rafter’s wheels turning.

Lots of thinking

Since I wrote that blog post more than a year ago, I’ve been doing a lot of thinking.

Thinking while mowing the lawn …while vacuuming the house …while walking the dogs …while lying in bed.

While I tend to get down on myself when I haven’t actively created something, I need to give myself more credit: I’ve been putting a lot of time into thinking about solutions for this problem!

But up to the beginning of this year, I hadn’t sat down to create anything out of that thinking.

That all changed in January 2020.

Building the thing

Fueled by a new sense of focus in a sleep-deprived state, I started building Rafter right when I became a new dad. This is a silly idea — I wouldn’t recommend all new software projects start this way. But I enjoyed being able to knock out 20 minutes of writing code and then switching back to dad mode.

Feeding my son a bottle or rocking him to sleep gave me just enough time to think about my next coding move. And had I not been pressed for time, I probably wouldn’t have been as productive.

The project is open-source right now. It’s built with Laravel with help from Tailwind, Laravel Livewire, and Alpine.js. I’m not using any major JavaScript framework like React or Vue… yet. 😱

The actual app is not yet in a working state, nor is it ready for alpha/beta testers. Soon though, I hope.

My Goals

I’ve built quite a few side projects in my decade as a professional software engineer. I’ve learned that most things don’t take off, and I set my expectations accordingly.

I’ve also fallen into the trap of building something I think people will be into, but something I’m not actively using myself. This becomes an issue when I lose interest six months later, but other people are actively using it. Sorry, Lifeboat.

So my goals for this are outlined as such:

  • Learn lots of new things, and write about those new things. This comes in handy when I want to show prospective employers the way I think and build, but also to point to examples of things I’ve learned with existing colleagues.
  • Improve my own development toolkit for Barkpass and custom Laravel/WordPress projects

I have anti-goals, too:

  • Make money. I’m not setting out to make bank with this project. It’s more of a true side project. At the time of writing this, I’m not keen on having to support production-level clients in this industry nor am I particularly excited about quitting my day job to pursue this type of work full-time. I might charge some sort of fee, but I’m guessing it will be optional or via some sort of GitHub Sponsor endeavor - just to offset hosting costs, if it grows.

I’m planning to write about my inspirations, how the darn thing works, unstructured journals/logs about the building process, and lots of other learnings. Hope you enjoy the ride as much as I do!

A blog about building Rafter, a serverless deployment platform. Posts by Josh Larson. Follow Josh on Twitter for updates.

Get Rafter news in your inbox

Powered by Buttondown.