Cloudflare Workers are the future! 🏗
Bryce Dorn
Posted on May 9, 2022
Ahoy! Just returned from a deep dive into exploring Cloudflare Workers and it was a great experience! I've been itching to give them another go as I've been following Deno and others from the sidelines for some time now.
At a high level, Cloudflare Workers enable traditionally complex, backend-intensive logic to be located closer to the frontend. This is not just another "do it all in JS" framework though. Rather, it's a paradigm shift that challenges how full-stack applications are built and deployed.
A simple blog example 📝
I love dev.to - the CMS/IDE and community are all wonderful. But as I write more content I also want a way to display and share it via my own website. This ended up being a perfect application for this framework: taking on a complex set of features with a low-code solution.
Here's what I managed to get my little project to do (easily!) using Cloudflare Workers:
- Fetch up-to-date data from dev.to's API
- Create simple article/detail routing layer
- Render components using JSX on server
- Deploy automatically to custom domain (using GitHub actions)
Here it is in action: blog.bryce.io.
And here's the repo if you want to poke around the code:
A thriving ecosystem for worker tooling 🪚
I used hono (a wrapper around miniflare) to handle some of the boilerplate around request and routing logic. It's also refreshingly fast! 🔥
The project also fully supports TypeScript. Nano JSX is an ultra-fast JSX library that works great with SSR (and written in TS). And wrangler makes deployment dead-simple, and integrates with the wrangler-action to automatically deploy upon any changes.
Why this is cool 🪄
As Cloudflare Workers are an on-demand serverless resource, they only run when a request is made. And since they run at the edge, this mean caching is baked-in!* At scale, this means lots of resources and compute time saved without any additional effort on the developer.
No servers = local development (and deploys) can happen without any spin-up time. My last deploy via GitHub Actions took less than 30 seconds (and the build
step took 0s 🦄). Hot reloads during development actually feel instantaneous too.
Next I want to experiment with more client interactivity but I had a wonderful time building this small static/SSR project! 😇
Anyways, I hope this doesn't go against dev.to's API guidelines (let me know otherwise). And here are a bunch of worker examples to explore if this piqued your interest. I'm looking forward to using them more in the future!
*Edit 6/3/22: turns out this note about caching was not true. I wrote about manually adding edge caching here.
Posted on May 9, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.