Going Serverless: AWS and Compelling Science Fiction

This is a companion blog post to a talk I gave to the Boulder Python Meetup group about the infrastructure that runs Compelling Science Fiction. Slides from that talk can be found here.Hopefully you can use some of these tools to create something new as well!

Compelling Science Fiction is run entirely on extremely inexpensive Amazon Web Services (AWS). There are currently three primary use cases that I have:

  1. Serving web pages that contain the site. This is easily achieved by using the Amazon S3 feature that allows you to serve static web pages from an S3 bucket.
  2. Accepting and managing submissions from authors.
  3. Reading through the queue (“slush”) of stories that authors submit.

It’s the last two items on that list that I’ll be talking about today, because they both use the same basic infrastructure. That infrastructure is diagrammed below:As you can see, I use four different Amazon Web Services: the Simple Email Service (SES), Simple Storage Service (S3), Lambda, and DynamoDB. I’ll touch on all of the ways we use these services, but AWS Lambda is the most important, because it allows us to glue together all the services with Python without provisioning any servers.