← cd ../projects/

$ cat projects/hi-beauty/README.md

Hi Beauty

Beauty box subscription ecommerce operating in Colombia, Chile and Spain. Migrated 21 applications from 3 legacy monolithic EC2 instances to EKS managed by Terraform, with zero downtime during the DNS cutover.

Client
SUBSCRIPCIONBOXCO-SAS (Colombia)
Role
DevOps Engineer + Backend Consultant
Period
July 2026 – Present
Location
Remote · Colombia
Full Stack + DevOps

# Problem

The operation ran on 3 monolithic EC2 instances with PM2, local Mongo and hand-configured Nginx — no IaC, secrets hardcoded in .env files and manual deploys. On top of that, the cloud provider was about to shut down service, forcing a full migration to a new AWS account under time pressure and with no room for business downtime.

# Solution

I designed the new infrastructure on AWS EKS 1.33 from scratch using Terraform as the single source of truth: VPC, node groups (on-demand + spot), NLB with ACM TLS, ECR, ElastiCache Redis. I installed the PSMDB operator to run 3-replica MongoDB clusters per country with HA (quorum), centralized 42 secrets in AWS Secrets Manager synced to the cluster via ExternalSecrets Operator + Reloader. Dockerized and wrote K8s manifests for 21 apps (Express, NestJS and Next.js), reusable GitHub Actions workflows with OIDC (no long-lived keys) and ArgoCD/manual deploys by dispatch. Cutover of 22 DNS records via Cloudflare API, full backup of the 3 legacy mongos and incremental S3 sync from legacy bucket to the new one via CronJob. Post-migration I found a \$regex query saturating the Mongo primary to 100% CPU (getGuide over 718k docs) and fixed it with equality lowercase + compound index: 27s → 0ms.

$ tail -f impact.log

Measurable impact

  • 21 microservices migrated to EKS with zero downtime during DNS cutover
  • 3 countries live (Colombia, Chile, Spain) on a single cluster
  • 42 secrets centrally managed with ExternalSecrets + automatic rotation
  • USD 396/month AWS cost reduction (32% cut, from USD 1230 to ~USD 834/month)
  • Critical production bug fixed: 27s query → 0ms, Mongo CPU 100% → 15%
  • 100% post-cutover uptime with zero reported incidents

$ cat stack.txt

Tech stack

AWS EKS Terraform Kubernetes Docker MongoDB Percona Server MongoDB Operator ExternalSecrets Operator AWS Secrets Manager ElastiCache Redis CloudFront S3 EventBridge SQS Cloudflare GitHub Actions (OIDC) Node.js NestJS Next.js Express

$ curl -I project-urls

Public sites