Just chilling
Some systems live a relaxed life: a personal journal app, an internal tool used by five people, a prototype, a weekly report generator, a hobby project. They're idle most of the day. The goal here is simple: cost almost nothing, need almost no care, and still be safe.
Serverless is perfect for chilling: humans that sleep cost nothing, and wake instantly when called.
Habits of a chilled-out system
| Chilling habit | System design |
|---|---|
| Sleep when there's nothing to do | Scale to zero: Lambda, on-demand DynamoDB, S3, API Gateway |
| Do chores once a week | Scheduled jobs with EventBridge Scheduler |
| Keep things simple | Fewer humans — often one or two services, or a modular monolith |
| Don't hoard | Short log retention, TTL on old data, lifecycle rules |
| Lock the door before napping | Still authenticate, encrypt and keep buckets private |
Settings for a chilling human
// Inside the Waiter construct, when lifestyle === "chilling"
const cell = {
runtime: lambda.Runtime.NODEJS_22_X,
architecture: lambda.Architecture.ARM_64,
memorySize: 256, // small is fine for light work
timeout: Duration.seconds(10),
};
// Memory: DynamoDB on-demand — pay only per request
// No provisioned concurrency — the occasional cold start is perfectly acceptable
// Alarms: just one or two (errors, DLQ), sent by email
// Logs: short retention (e.g. one or two weeks) to avoid paying for old diaries
A weekly chore with EventBridge Scheduler:
import * as scheduler from "aws-cdk-lib/aws-scheduler";
import * as schedulerTargets from "aws-cdk-lib/aws-scheduler-targets";
new scheduler.Schedule(this, "WeeklyReport", {
schedule: scheduler.ScheduleExpression.cron({ minute: "0", hour: "7", weekDay: "MON" }),
target: new schedulerTargets.LambdaInvoke(weeklyReportFn),
});
(The aws-scheduler L2 constructs are relatively new in CDK; in older versions use an EventBridge Rule with a schedule instead.)
What does chilling cost?
For truly low traffic, serverless costs are often tiny — sometimes within the AWS Free Tier. Lambda bills per request and per millisecond of compute; DynamoDB on-demand bills per request plus storage; S3 bills per GB stored. Check the current pricing pages and set a budget, because "almost nothing" can become "something" if a bug loops or someone finds a public endpoint.
The chilling lifestyle's danger is neglect. Always set an AWS Budget alert, keep APIs authenticated, and avoid anything that bills while idle (NAT gateways, provisioned capacity, always-on databases or load balancers) unless you truly need it.
When chilling isn't the right choice
If an idle-friendly design causes problems — e.g. noticeable cold starts for a latency-sensitive user, or a relational database that must stay running — you may be living a different lifestyle than you thought. Aurora Serverless v2 and Lambda SnapStart-style features can soften the edges, but re-check the lifestyle questions in lifestyles are systems.
Chilling systems should be lazy about cost and effort, but never lazy about security. Sleep cheaply, wake instantly, and always lock the door.