← cd ../projects/

$ cat projects/hi-beauty/README.md

Hi Beauty

Ecommerce por suscripción de beauty box operando en Colombia, Chile y España. Migré 21 aplicaciones desde 3 EC2 legacy monolíticos a EKS gestionado por Terraform, con cero downtime en el cutover.

Cliente
SUBSCRIPCIONBOXCO-SAS (Colombia)
Rol
DevOps Engineer + Backend Consultant
Periodo
Julio 2026 – Presente
Ubicación
Remoto · Colombia
Full Stack + DevOps

# Problema

La operación corría sobre 3 EC2 monolíticos con PM2, Mongo local y Nginx configurado a mano — sin IaC, secretos hardcodeados en archivos .env y despliegues manuales. Además el proveedor de nube estaba por finalizar servicio, lo que obligaba a migrar toda la plataforma a una cuenta AWS nueva bajo presión de tiempo y sin margen para downtime del negocio.

# Solución

Diseñé desde cero la infraestructura nueva en AWS EKS 1.33 con Terraform como fuente única de verdad: VPC, node groups (on-demand + spot), NLB con TLS ACM, ECR, ElastiCache Redis. Instalé el operator PSMDB para levantar 3 réplicas MongoDB por país con HA (quorum), centralicé los 42 secretos en AWS Secrets Manager y los sincronicé al cluster con ExternalSecrets Operator + Reloader. Dockericé y armé los manifests K8s de las 21 apps (Express, NestJS y Next.js), reusables workflows de GitHub Actions con OIDC (sin claves long-lived) y ArgoCD/manual deploys por dispatch. Cutover DNS de 22 records vía API de Cloudflare, backup completo de las 3 mongos legacy y sync incremental S3 legacy → nuevo bucket con CronJob. Post-migración detecté una query \$regex saturando el primary Mongo al 100% CPU (getGuide sobre 718k docs) y la arreglé con equality lowercase + índice compuesto: 27s → 0ms.

$ tail -f impact.log

Impacto medible

  • 21 microservicios migrados a EKS sin downtime en el cutover DNS
  • 3 países operando (Colombia, Chile, España) sobre un solo cluster
  • 42 secretos gestionados centralizadamente con ExternalSecrets + rotación automática
  • Ahorro de USD 396/mes en AWS (32% de reducción, de USD 1230 a ~USD 834/mes)
  • Bug crítico en producción resuelto: query lenta 27s → 0ms, CPU mongo 100% → 15%
  • 100% uptime post-cutover sin incidentes reportados

$ cat stack.txt

Stack técnico

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

Sitios públicos