Shawn Mervin

AWS in production

I design, deploy and run every system on this site myself, and almost all of it sits on AWS. This page is the inventory: each service, what it does for a real business, and how it is wired. Nothing here is a sandbox demo.

28AWS services in production across my products and this site
EC2servers I administer for Rental Pilot, Lend Pilot and the stucco company
5Lambda functions behind this site, Node 22 on Graviton
5 minbetween health checks of every production system I run

Rental Pilot

Rental software for any business that rents things out, white-labelled for companies in 18 industries, each on its own domain. The API runs on EC2, where I administer the server myself. About Rental Pilot

How a request reaches Rental Pilot: staff and customers on a company's own domain go through Route 53 and a multi-tenant CloudFront distribution, which serves the React app from S3 and passes API calls to the Apache and PHP API on EC2. The API uses MySQL with a database per company, Amazon Bedrock for the Radar assistant, and SES for email. Code goes from CodeCommit through CodeDeploy to the test server. Staff and customersapp.yourcompany.com Route 53DNS and email records CloudFront SaaSone distribution, a tenant per company S3the React web app EC2Apache + PHP API MySQLa database per company BedrockRadar assistant SESmail HOW IT SHIPS CodeCommit CodeDeployevery push to main lands on the test server; production is a separate, guarded deploy
How a request reaches Rental Pilot, and how code reaches the server.

How it is wired

Edge

Each company on its own domain.

Compute

The servers I run.

  • EC2Ubuntu, Apache and PHP: the Rental Pilot API
  • EC2the Node real-time chat server and push notifications
  • EC2cron jobs: billing checks, reminders, health probes
  • S3the React web app and customer portal

Data and AI

What the API calls.

Operations

How it ships and stays up.

Service by service

Lend Pilot

Software for private mortgage lenders, in its own AWS account. About Lend Pilot

How it is wired

Edge

Each lender on its own domain, set up by the app.

Compute

One server, many lenders.

  • EC2its own instance, in its own region
  • Docker ComposeAPI, web app and database as one unit
  • Schedulerdomain activation, reminders, renewal drips

Data and AI

What the API calls.

  • PostgreSQLrow-level multi-tenancy
  • Claudereads borrower documents; math stays in code
  • SESsign-in links, campaigns and the comms outbox

Operations

How it ships.

  • CodeCommitsource
  • Deploy scriptsync, rebuild, migrate, smoke-test
  • Smoke suiteruns against production after every deploy

Service by service

Super Sonic Stucco and the company websites

The stucco company's job app and the two company websites, on the same server as Rental Pilot.

How it is wired

Edge

Three public addresses.

  • Route 53DNS with SPF, DKIM, DMARC and CAA
  • Let's EncryptTLS for every host
  • Apachesecurity headers, no directory listings, no version banners

Compute

Shares the Rental Pilot server.

  • EC2the stucco job app: jobs, crews, schedule, invoicing
  • EC2supersonicstucco.ca and supersonicrentals.ca on WordPress

Data and AI

What they call.

Operations

How it stays up.

  • Deploy scriptlocked, so two deploys never interleave; md5-verified
  • CloudWatchalarms that caught a WordPress login-flood
  • EBS snapshotsthe same scheduled backups

Service by service

Small sites for pennies a month

Not every client needs a server. A school or a non-profit gets a fast, secure site on S3 and CloudFront that costs well under a dollar a month to host, plus the domain.

How it is wired

Edge

Fast everywhere, HTTPS only.

Storage

No server at all.

Build

Plain files out.

Operations

One command.

  • Deploy scriptsync to S3, then invalidate CloudFront
  • Nothing to patchno server, no plugins, no database

Two examples

This site

Serverless on purpose: no EC2, nothing to patch, and it costs a few dollars a month. Most pages let you watch it happen. Watch it live

Right now

CloudFront requests… 
Lambda runs… 
DynamoDB capacity units… 
Bedrock tokens… 
WebSocket messages… 
AWS bill this month… 

Reading CloudWatch…

Trace your own request

Press the button and your browser makes a real request: through CloudFront to a Lambda function that reads DynamoDB, with AWS X-Ray tracing it. Then this page asks X-Ray for that exact trace and draws it.

How it is wired

Edge

Where a visitor meets AWS.

Compute

Code that runs only when asked.

Data and AI

What the functions call.

Operations

How I know it is working.

  • EventBridgehealth checks every five minutes
  • CloudWatchlogs and seven alarms
  • SNSalarms to my phone and inbox
  • Budgetsan alert before the month runs over
  • CloudFormationthe whole stack, one deploy script
  • IAMone least-privilege role per function

Service by service

Running all of this costs a few dollars a month, and the bill is on the glass box page for anyone to check.

Well-Architected, pillar by pillar

AWS's own six-part yardstick for a workload, applied to this site, with the proof one click away. Where a number can be live, it is.

The template behind it

The dynamic half of this site is infrastructure as code: one CloudFormation template, the real one, deployed by one script. Pick any resource to see what it is, what it depends on and its exact YAML. Download the full template.

Loading the template…

Pick a resource on the left.

At re:Invent?

I'd like to hear what you're running on AWS. Get in touch, or ask my agent anything on this page.

Got an operation that's outgrown its spreadsheets?

Tell me what your business does and where it's jamming up. If I'm not the right person for it, I'll say so and point you somewhere better.

What to send, and what happens next