Guías / Levantar el ambiente de desarrollo
Onboarding
8 de abril de 2026
onboardingsetupkubernetestiltdebugging

Levantar el ambiente de desarrollo

Guía de onboarding paso a paso para configurar el ambiente local completo del backend WL, desde cero hasta tener todos los microservicios corriendo y depurables desde VS Code.

Qué vas a levantar

El backend de WL no es un único servidor — es un ecosistema de microservicios que corren dentro de un cluster de Kubernetes local. Para manejarlo, el equipo usa Tilt, una herramienta que observa tu código, detecta cambios y recarga los servicios automáticamente.

No necesitas saber Kubernetes para trabajar aquí. Tilt lo abstrae. Tu trabajo es editar código; Tilt se encarga del resto.

Puntos de acceso principales:

  • Tilt Dashboardhttp://localhost:10350 — panel de control: logs, estado de servicios, reinicios
  • BFF (API principal)http://localhost:3000 — el punto de entrada al backend

Clonar el repositorio

Este es el punto de partida. Clona el repositorio principal y entra a la carpeta — todos los make commands de esta guía se corren desde ahí.

git clone git@github.com:Cencosud-Cencommerce/dc-wl-groceries-backend.git
cd dc-wl-groceries-backend

Prerrequisitos

Antes de empezar, necesitas tener instalado:

1. Rancher Desktoprancherdesktop.io

Incluye Docker y kubectl. Es el motor que corre el cluster de Kubernetes local. Después de instalarlo, asegúrate de que esté corriendo antes de continuar.

Note

Configuración recomendada de recursos en Rancher Desktop: mínimo 4 CPU cores y 8 GB de RAM. Con menos, el cluster puede crashear frecuentemente.

2. Gogolang.org/dl

Los microservicios y las herramientas de desarrollo están escritos en Go. El equipo usa siempre la última versión estable. Verifica la tuya:

go version

Si tienes Go < 1.22 o no lo tienes instalado, descarga la versión más reciente desde golang.org/dl.

3. SSH key configurada en GitHub

El proyecto usa un paquete Go privado de la organización. Necesitas tener tu SSH key en GitHub con acceso a la org Cencosud-Cencommerce.

Si todavía no tienes una SSH key, genérala así:

# Generar la key (reemplaza con tu email de trabajo)
ssh-keygen -t ed25519 -C "tu@email.com"

# Muestra la clave pública para copiarla
cat ~/.ssh/id_ed25519.pub

Pega el resultado en github.com/settings/keysNew SSH key.

Para verificar que funciona:

ssh -T git@github.com
# Respuesta esperada: Hi <usuario>! You've successfully authenticated...

Si el acceso a la organización aún no está habilitado, pídelo a tu tech lead — es una aprobación que hacen desde GitHub.

Tilt se instala automáticamente durante el setup — no necesitas instalarlo manualmente.


Acceso a paquetes privados de Go

El proyecto tiene una dependencia en un paquete privado: github.com/Cencosud-Cencommerce/dc-wl-groceries-shared-pkg. Configura esto antes de correr make init — el init descarga dependencias Go y sin esta configuración falla con errores crípticos sobre módulos no encontrados.

Ejecuta estos comandos una sola vez:

# Decirle a Git que use SSH en lugar de HTTPS para GitHub
git config --global --add url."git@github.com:".insteadOf "https://github.com/"

# Decirle a Go que este paquete es privado (no buscar en el proxy público)
export GOPRIVATE="github.com/Cencosud-Cencommerce/*"

# Persistir la variable en tu shell para que aplique siempre
echo 'export GOPRIVATE="github.com/Cencosud-Cencommerce/*"' >> ~/.zshrc
source ~/.zshrc

Inicialización (solo la primera vez)

1. Clonar e inicializar todo

make init

Este comando hace todo de una vez:

make init

    ├─ Verifica que Docker esté instalado (Rancher Desktop)
    ├─ Verifica que kubectl esté disponible
    ├─ Verifica que Go esté instalado
    ├─ Instala Tilt.dev automáticamente
    ├─ Clona todos los repositorios de microservicios → services/
    └─ Configura el Go workspace (go.work)

Al terminar, tu proyecto tendrá esta estructura:

dc-wl-groceries-backend/
├── Makefile
├── dc-wl-groceries-backend.code-workspace   ← workspace de VS Code
├── go.work                                   ← Go workspace (une todos los módulos)
├── k8s.local/
│   └── key.json        ← colócalo aquí (ver sección siguiente)
├── services/           ← creado por make init, contiene todos los repos
│   ├── app-bff/
│   ├── customers/
│   ├── cart/
│   └── ...
└── .env                ← opcional, para elegir el tenant activo

2. Instalar herramientas de desarrollo

make tools

Este comando instala las herramientas necesarias para el desarrollo activo: generadores de código a partir de .proto, herramientas de migración de base de datos y el linter de Go.

Lo que instala:

HerramientaPara qué sirve
protoc-gen-go, protoc-gen-go-grpcGenerar código Go a partir de Protobuf
protoc-gen-grpc-gateway, protoc-gen-openapiv2Generar gateway HTTP y specs OpenAPI
bufBuild tool para Protobuf
grpcurlHacer llamadas gRPC desde la terminal (como curl pero para gRPC)
migrateMigraciones de base de datos
sqlcGenerar código Go type-safe a partir de SQL
golangci-lintLinter de Go

Credenciales GCP

El ambiente usa External Secrets Operator para cargar credenciales de APIs externas (Cognito, Auth0, VTEX, etc.) desde Google Cloud Secret Manager. Sin este archivo, el ambiente levanta pero los servicios fallan silenciosamente al intentar conectarse a servicios externos.

Qué necesitas: un archivo key.json con las credenciales de una service account de GCP.

Cómo obtenerlo: pídele el archivo a tu tech lead.

Dónde colocarlo:

dc-wl-groceries-backend/
└── k8s.local/
    └── key.json   ← aquí

El archivo se carga automáticamente cuando ejecutas make up. Está en .gitignore — nunca se commitea.


Los tenants

El backend WL es multi-tenant: el mismo código corre para distintos supermercados (Jumbo Argentina, Disco, Total Fresh Market, etc.). Localmente, se levanta un solo tenant a la vez y se controla con la variable FLAG en el archivo .env.

Cómo configurarlo: crea un archivo .env en la raíz del proyecto y descomenta el tenant que quieres usar:

# FLAG=ar-jumbo      # Jumbo Argentina
# FLAG=ar-disco      # Disco Argentina
# FLAG=co-jumbo      # Jumbo Colombia
FLAG=us-tfm          # Total Fresh Market US
# FLAG=br-prezunic   # Prezunic Brasil

Si no hay archivo .env, el sistema usa ar-jumbo por defecto.

Tip

Para empezar, no crees el .env y deja que use ar-jumbo por defecto. Cuando empieces a trabajar en una feature o a depurar un bug, cambia el FLAG al tenant correspondiente y reinicia el ambiente.


Levantar el ambiente

Con los prerrequisitos listos y el key.json en su lugar:

make up

Este comando crea el namespace de Kubernetes y arranca Tilt. La primera vez puede tardar varios minutos mientras descarga las imágenes. Las veces siguientes es mucho más rápido.

Qué esperar:

  1. Tilt inicia y abre el stream de logs en la terminal
  2. Accede al dashboard: http://localhost:10350
  3. En el dashboard verás todos los servicios con su estado (verde = corriendo, amarillo = iniciando, rojo = error)
  4. Cuando app-bff está verde, el ambiente está listo

En el dashboard puedes:

  • Ver los logs de cada servicio en tiempo real
  • Reiniciar un servicio individual con un click
  • Ver el historial de builds y deploys

Servicios de infraestructura disponibles:

ServicioURLPara qué
Tilt Dashboardhttp://localhost:10350Panel de control general
BFFhttp://localhost:3000API principal
Jaeger UIhttp://localhost:16686Trazas distribuidas
Redis Insighthttp://localhost:5540Gestión visual de Redis
MongoDBmongodb://localhost:27017Base de datos NoSQL

Tu primera petición

Con app-bff verde en el dashboard, el ambiente está operativo. Verifícalo con una petición real:

curl http://localhost:3000/health

También puedes abrirlo directo en el browser: http://localhost:3000/health. Si el BFF levantó bien, la respuesta será 200 OK.

Explora la API completa:

Abre http://localhost:3000/docs en el browser. Ahí encontrarás la documentación Swagger interactiva del BFF — todos los endpoints documentados, con la posibilidad de hacer peticiones directamente desde la UI sin necesidad de Postman ni curl.

Tip

Todos los microservicios siguen el mismo patrón. Si quieres verificar o explorar un servicio específico, usa http://localhost:<puerto>/health y http://localhost:<puerto>/docs. Los puertos de cada servicio están en la tabla del dashboard de Tilt.


Workflow del día a día

# Inicio del día: levantar el ambiente
make up

# Fin del día: detener sin perder datos
make stop

# Actualizar todos los repos al último main
make main

Important

make stop detiene los servicios preservando todos los datos (PVCs, bases de datos). Es el comando que usas normalmente.

make down es diferente: destruye el namespace y borra todos los datos. Tiene un delay de 5 segundos para cancelar con Ctrl+C. Úsalo solo cuando necesitas un reset total.


Debugging con VS Code

Todos los microservicios Go corren con Delve embebido y exponen un puerto de debugging remoto. Desde VS Code puedes conectarte, poner breakpoints y ejecutar paso a paso como si el servicio corriera localmente.

Abrir el workspace

El proyecto incluye un workspace de VS Code preconfigurado con todas las carpetas de microservicios y las configuraciones de debug listas:

code dc-wl-groceries-backend.code-workspace

Puertos de debug por servicio

ServicioPuertoTipo
app-bff40000Go (Delve)
customers40001Go (Delve)
cart40003Go (Delve)
carts40004Go (Delve)
search40005Go (Delve)
engine-promotions40006Go (Delve)
notifications40008Go (Delve)
products40011Go (Delve)
coupons40012Go (Delve)
recommendations40013Go (Delve)
loyalty40014Go (Delve)
auth40015Go (Delve)
session-manager9229Node.js Inspector

Conectarse a un servicio Go

  1. Asegúrate de que el ambiente esté corriendo (make up)
  2. En VS Code, abre el panel Run and Debug (Ctrl+Shift+D o Cmd+Shift+D)
  3. En el dropdown de configuraciones, selecciona el servicio (ej: app-bff)
  4. Presiona F5 para conectarte
  5. Pon breakpoints en el código del servicio — VS Code los va a interceptar

El servicio sigue corriendo normalmente; el debugger se adjunta sin reiniciarlo.

Conectarse a session-manager (Node.js)

El servicio session-manager usa Node Inspector en lugar de Delve. El proceso es el mismo: selecciona session-manager en el dropdown y presiona F5. Compatible con Chrome DevTools también.


Referencia de comandos

Setup inicial (solo la primera vez)

ComandoQué hace
make initVerifica prerrequisitos + clona repos + configura go.work
make setupSolo verifica prerrequisitos e instala Tilt
make cloneSolo clona los repositorios de servicios
make toolsInstala herramientas de desarrollo Go

Ciclo de vida del ambiente

ComandoQué hace
make upLevanta el ambiente completo con Tilt
make us-tfmLevanta el ambiente con servicios específicos de US TFM
make stopDetiene Tilt — preserva datos y PVCs
make down⚠️ Detiene Tilt y destruye namespace + borra todos los datos

Mantenimiento

ComandoQué hace
make mainActualiza todos los repos al último commit de main
make cleanup⚠️ Borra la carpeta services/ — requiere re-clonar con make clone
make clean⚠️ Limpieza total de Docker: elimina imágenes, contenedores y volúmenes

Problemas comunes

go.mod file not found al hacer build

Los repos no están clonados. Ejecuta make clone para descargarlos.

kubectl not found o docker not found

Rancher Desktop no está instalado o no está corriendo. Instálalo desde rancherdesktop.io y asegúrate de que esté activo antes de continuar.

Los servicios levantan pero fallan al conectarse a APIs externas

Falta el key.json. Coloca el archivo en k8s.local/key.json y reinicia con make stop && make up.

El namespace no existe: Error from server (NotFound): namespaces "dc-wl-groceries" not found

Ocurre si ejecutaste make down antes. make up lo recrea automáticamente.

El cluster crashea frecuentemente

Aumenta los recursos asignados a Rancher Desktop: mínimo 4 CPU cores y 8 GB de RAM. Configúralo desde las preferencias de Rancher Desktop.

Puerto de debug ya en uso

Hay otra instancia corriendo. Detén el ambiente primero con make stop. Si el puerto sigue ocupado:

# Reemplaza 40000 por el puerto del servicio que quieres depurar
lsof -ti:40000 | xargs kill -9