Blog
Thoughts on engineering, design, and building great products.

AWS-native Observability for EC2 with the CloudWatch Agent
A hands-on lab building an observability pipeline for EC2 with the CloudWatch Agent, CloudWatch Logs, CloudWatch Metrics, Alarms, SNS email and a Dashboard, across two real cases: installing the agent on an existing EC2 instance, and bootstrapping the agent at launch time on a brand-new one.
CI/CD Concepts and Your First Pipeline on AWS EC2
A step-by-step guide to deploying a React + Node.js web app to AWS EC2 with Docker, then wiring up an automated CI/CD pipeline with GitHub Actions. Walks through CI/CD fundamentals, the difference between Continuous Delivery and Continuous Deployment, the standard pipeline stages (Source → Build → Test → Quality Gate → Package → Deploy → Verify), GitHub Actions terminology, common deploy strategies, then builds a first end-to-end pipeline. Aimed at DevOps newcomers.
CodeDeploy Lifecycle Hooks: Order, Variables, and When a Hook Fails
A deep dive into CodeDeploy's hook layer: what order the lifecycle events run in, which hook fits which job, why ApplicationStop runs from the old revision rather than the new one, the environment variables CodeDeploy passes into your scripts, and what happens when a hook fails — the deploy stops right there, and later events don't run.
CodeDeploy: The First In-Place Deploy to EC2
Opening Part IV: putting artifacts onto EC2 with CodeDeploy. Stand up an instance with the agent, create an application and a deployment group targeted by tag, write appspec.yml with lifecycle hooks, then run the first in-place deploy — watch the agent pull the revision from S3 and run through each lifecycle event until the app actually serves.
A Real Network Module: VPC, Subnet, and EC2
Assemble everything from Part IV into a useful foundational infrastructure module: a VPC with public subnets across multiple zones, an internet gateway and route table, generating CIDRs with cidrsubnet and subnets with for_each. Then place an EC2 on the Internet inside that network. This is the kind of foundational module nearly every project needs.
Stand Up Six EC2 Machines and Prepare the OS
The first hands-on article: stand up a dedicated VPC on AWS with six EC2 machines (1 load balancer, 3 controllers, 2 workers), assign fixed private IPs, then prepare the OS — hostname, /etc/hosts, kernel modules, sysctl, disable swap — and install the kubectl and cfssl tooling. All done step by step, run for real.
EC2: Create Your First Virtual Server and Run a Web Server
Create an EC2 instance, SSH into it, install nginx, and open the web page in a browser. The first article with a billable resource, so also the first with a cleanup section.