This week, I created a status page for my web properties:

The page itself and the status history are served from S3. They were generated by Checkup, a tool for creating self-hosted status pages. A scheduled Lambda function runs Checkup every 5 minutes to perform health checks and stores the results in S3.

If you're interested, you can check it out and easily deploy it for yourself using the Terraform configuration in the GitHub repository:

Serverless status page served from AWS S3 generated by Checkup running in AWS Lambda

Automate from the beginning

I built this with automation and infrastructure as code in mind from the beginning. The entire stack can be deployed with a single Terraform apply (I destroyed and reapplied everything from scratch myself to make sure).

Checkup itself does have the ability to help you provision the S3 bucket it will use, but it's still an ad-hoc command and requires some manual setup. Another project I've seen with a similar feature is plumber, a R package for creating a web API for R code—it has a function that can create a VPS on DigitalOcean and set it up for you given your DigitalOcean API key.

I think that going forward, projects that want to provide such automatic deployment features should use standardised infrastructure as code tools like Terraform or Pulumi rather than implementing it themselves.

Serverless Good, Servers Bad?

Ideally, a serverless status page should make the scenario of your status page itself going down less likely… right?

Funnily enough, back in 2017 there was an S3 outage that impacted a handful of other AWS services—including the AWS status page:

From the beginning of this event until 11:37AM PST, we were unable to update the individual services’ status on the AWS Service Health Dashboard (SHD) because of a dependency the SHD administration console has on Amazon S3.

Ultimately, I see being serverless as just an interesting property of this setup at this particular point in time, rather than something to strive towards.

A serverless architecture definitely has its benefits—the Lambda usage for health checks should be well within the free tier and the S3 storage should cost far less than the typical $5/mo VPS—and works especially well for hobby projects like this.