Portfolio Site (this site)
Private S3 bucket served globally via CloudFront with OAC. Custom domain on Route 53 with ACM TLS, automated deploys via CodePipeline + CodeBuild, and CloudWatch alarms for 5xx monitoring.
I design, deploy and document AWS solutions end-to-end — from static sites on S3 + CloudFront to serverless pipelines processing 10k orders/min. Every project here runs on AWS with real traffic.
Each project is deployed on AWS with architecture docs, trade-off notes and working infrastructure.
Private S3 bucket served globally via CloudFront with OAC. Custom domain on Route 53 with ACM TLS, automated deploys via CodePipeline + CodeBuild, and CloudWatch alarms for 5xx monitoring.
React SPA on S3/CloudFront, Node.js/Express on EC2 Auto Scaling behind an internal ALB, RDS PostgreSQL in isolated subnets. API Gateway entry, Cognito JWT, bastion host, full CI/CD with CodePipeline + ECR.
Two frontends, two API Gateways with separate auth levels, 6 single-purpose Lambdas with per-function IAM, DynamoDB, EventBridge async decoupling, canary deploys via CodeDeploy. 100% Terraform.
High-scale order pipeline handling 10k+ orders/min. Saga pattern via Step Functions Express with automatic compensation. SQS buffering, DynamoDB dual-layer idempotency, EventBridge domain events.
AWS cloud services and DevOps tools I use to architect, build and ship production workloads.
Core principles that guide every design decision — from subnet layout to deployment strategy.
Least-privilege IAM with no wildcard permissions. Private subnets for compute and data tiers, Cognito for authentication, and WAF rules as standard — not afterthoughts.
Clear separation between presentation, application, and data tiers. Each layer scales independently and can be swapped without touching the rest of the stack.
CloudWatch dashboards, X-Ray distributed tracing, structured logging, and 5xx alarms wired in from day one — not bolted on once something breaks in production.
Every resource defined in Terraform with remote state locking, modular structure, and tagged for cost tracking. Zero click-ops in any environment.
Git push triggers build, test and deploy — CodePipeline orchestrates, CodeBuild compiles, CodeDeploy runs canary releases. Rollbacks are automatic, not manual.
Failures stay contained — DLQs catch poison messages, Step Functions compensate failed saga steps, and multi-AZ deployments ensure no single point of failure.