Blog
Thoughts on engineering, design, and building great products.
VPC and Security Group: Networking and Basic Firewalling on AWS
Understand VPC, public/private subnets, route tables, and Security Groups. Know why your server lets some in and not others, and how to tighten access correctly.
S3: Store Files and Host a Static Website
Create an S3 bucket, upload files, and host a static website on the Internet without any server running continuously. Understand buckets, objects, and managing access.
RDS: Running an AWS-Managed PostgreSQL Database
Create a PostgreSQL database on RDS, put it in a private subnet, connect from EC2, and understand why RDS beats running your own database on EC2. RDS is the easiest service to rack up a bill, so cleanup matters most here.
Dockerizing an Application and Pushing the Image to ECR
Package a Node.js application into a Docker image, create an ECR repository, and push the image to it. This is the foundation for the CI/CD article that follows.
CI/CD with GitHub Actions: Automatically Build and Deploy to AWS
Build a pipeline: every push to GitHub automatically builds a Docker image, pushes it to ECR, and deploys to EC2. Uses OIDC so you don't store an AWS access key in GitHub.
CloudWatch: Monitoring and Viewing Your Application's Logs
Create a CPU alarm that emails you via SNS, and ship container logs to CloudWatch Logs for centralized viewing. Know how the system is running and get alerted when something goes wrong.
Series Wrap-up and a Full Audit of Your AWS Account
The final article: a full-account audit checklist to be sure no resource is quietly billing you, a review of the best practices used, and suggestions for where to learn next.