𝗗𝗲 𝗦𝘂𝗽𝗮𝗯𝗮𝘀𝗲 𝗮 𝗚𝗼 𝗲𝗻 𝗽𝗿𝗼𝗱𝘂𝗰𝗰𝗶𝗼́𝗻: 𝗠𝗲𝘀 𝟭

Hace dos meses, construí Info Links. Es una plataforma de recursos gratuitos para estudiantes de Le CNAM Líbano. Atiende a 300 estudiantes y 50 cursos.

Inicialmente, el backend utilizaba Supabase directamente. Funcionaba, pero no podría defenderlo en una entrevista técnica. Mi objetivo para el Mes 1 no era solo aprender la sintaxis de Go. Quería construir un sistema que un ingeniero senior respetara.

Esto es lo que cambió:

  • El backend pasó de ser solo Supabase a una API REST en Go.
  • La base de código creció de 6 archivos a más de 100 archivos.
  • Implementé una arquitectura por capas: API, Service, Repository y Middleware.
  • Añadí inyección de dependencias para eliminar las variables globales.
  • Escribí 6 Architecture Decision Records (ADRs) para explicar mis decisiones.

La nueva estructura sigue un camino claro: HTTP request → Router → Handler → Service → Repository → Postgres.

Me enfoqué en la preparación para producción mediante estas adiciones:

  • Logging estructurado con slog.
  • Health checks y métricas.
  • Rate limiting para prevenir abusos.
  • CI con detección de carreras (race detection) y linting.
  • Builds de Docker multi-etapa.
  • Alta cobertura de pruebas (93% para API y 96% para Service).

También realicé pruebas de carga con k6. Realicé 4,400 solicitudes por segundo a la API. El rate limiter bloqueó el tráfico excesivo en menos de 1 ms. El sistema no colapsó.

Una gran lección fue mi regla para usar IA. Paso 45 minutos cada día trabajando sin IA. Uso este tiempo para refactorizar código o explicar un archivo en voz alta. Si no puedo explicarlo, no lo envío a producción. Esto cierra la brecha entre "funciona" e "entiendo por qué funciona".

La ingeniería ahora está a la altura de la misión. El producto sigue siendo gratuito para los estudiantes, pero el backend ahora tiene un nivel de entrevista técnica.

El próximo mes, construiré un servicio complementario en Go para verificar la salud de los enlaces utilizando goroutines y context.

Sitio en vivo: infolinks.app GitHub: github.com/MohamadObeid9/Info_Links Telegram: @Info_Links9

Fuente: https://dev.to/mohamadobeid9/from-supabase-only-to-production-go-month-1-of-rebuilding-info-links-3a4p