Blog
Thoughts on engineering, design, and building great products.
DynamoDB Single-Table Design: Start From the Questions, Not the Table
DynamoDB design runs opposite to a relational database: you start from the query questions, not from tables. This article lists the URL shortener's access patterns, explains what partition key and sort key actually do, then builds a single-table with an item collection — a link and its click stats live in the same partition and come back in one query. Create a real table, put and query real items to see the mechanics.
API Gateway: HTTP API or REST API, and Building the First Routes
API Gateway has two API types with two feature sets and two price tiers. Compare HTTP API and REST API to pick the right one for the URL shortener, then build two real routes: POST /links to create a link and GET /{code} for a 301 redirect. Handle validation, path parameters, and CORS preflight so the dashboard article later doesn't break.
How Lambda Runs Your Code Internally
Dissect Lambda's execution environment lifecycle: the three phases Init, Invoke, Shutdown, why cold start exists, and how static code runs once. Measure cold start for real (Init Duration), then measure the memory–CPU relationship with the same CPU work at 128 MB and 1769 MB. Understand this so later performance and cost decisions have a basis.
Setting Up the Environment: AWS SAM and Your First Lambda Function
Install the AWS SAM CLI, build a project skeleton for the URL shortener (TypeScript + esbuild), then deploy a real Lambda function to AWS via a Function URL, call it with curl, run it locally in Docker, and clean up with one command. Plus a lesson on the SAM CLI needing to be new enough to support the nodejs22.x runtime.
What Serverless Is and When to Use It
Series opener: what serverless actually means (not 'no servers'), what it trades away and what it gains, when NOT to use it, and the product we build throughout — a URL shortening service with realtime analytics. Includes the overall architecture diagram and a per-part roadmap.
Capstone (2): The Complete Production Pipeline
Closing the series: a pipeline that carries code from a CodeCommit commit, through build and test, through an approval gate, then blue/green deploys onto an Auto Scaling Group behind an ALB — running for real end-to-end, one commit becoming one zero-downtime production release. Then tearing everything down and wrapping up the whole series with a roadmap for what's next.
Capstone (1): Building the Target Infrastructure via CLI
Opening the capstone: assembling every piece of infrastructure we've learned into a production target environment for a complete pipeline. A launch template and Auto Scaling Group behind an Application Load Balancer, a blue/green deployment group with rollback — all via the AWS CLI. The next article wires up a pipeline that runs straight into this infrastructure.