Gianluca Palmier

Técnico Universitario en Programación - Full Stack Engineer

Ceres API — Migración Backend

Rol: Lead Backend Engineer · 2025 – Presente

Ceres API — Migración Backend
← Volver a proyectos

Resumen

Ceres API es la plataforma backend central del Gobierno de la Ciudad de Ceres. Nació como un backend Express para soportar Ceresito y paneles internos, pero con el crecimiento del sistema se volvió monolítico, difícil de escalar, acoplado y sin garantías de seguridad ni observabilidad. Actualmente lidero una migración incremental a NestJS orientada a convertir este backend en una plataforma modular, escalable, segura y mantenible, sin interrumpir servicios críticos en producción.

Problema

El backend legacy presentaba múltiples limitaciones: arquitectura monolítica y altamente acoplada; sin versionado de API; sin autenticación ni autorización formal; sin tests ni contratos claros; difícil de escalar y mantener; sin observabilidad real. Además, no era viable un rewrite completo debido a sistemas críticos en producción, dependencias con bots, dashboards y servicios públicos, y riesgo operativo inaceptable.

Solución

Diseñé una estrategia de migración incremental por dominios, manteniendo compatibilidad con los endpoints existentes mientras modernizamos la arquitectura: backend reescrito en NestJS 11; modularización por dominios de negocio; contratos tipados con DTOs y validación; infraestructura base con healthchecks, Redis opcional y configuración centralizada; observabilidad con Prometheus + Grafana; estrategia de paridad funcional entre legacy y nuevo backend; migración módulo por módulo sin downtime. El sistema legacy continúa operativo mientras progresivamente se enrutan módulos al nuevo backend mediante un patrón de transición controlada.

Mi rol

Soy responsable de: diseño de arquitectura backend; definición de estrategia de migración sin downtime; modelado de datos y contratos de API; implementación de infraestructura base; observabilidad y monitoreo; organización de repositorio, branching strategy y DX; documentación técnica de cada fase.

Arquitectura técnica

Framework: NestJS 11 + TypeScript ORM: TypeORM (synchronize false) Database: PostgreSQL Cache / Infra: Redis (opcional) Observabilidad: Prometheus + Grafana Seguridad (en progreso): JWT + roles + API keys Infraestructura: Docker Documentación: OpenAPI + documentación de migración por fases La arquitectura está diseñada para evolucionar hacia microservicios si fuese necesario, manteniendo inicialmente un monorepo modular y versionado.

Estrategia de migración

  1. 1Infraestructura base primero (config, DB, Redis, health)
  2. 2Migración de entidades 1:1 con tablas legacy
  3. 3Definición de DTOs y contratos compatibles
  4. 4Migración por módulos: Analytics / Contactos → Reclamos → Encuestas + Redis → Notificaciones → Impuestos → BotConfig / Feedback / Votantes → Farmacias / Duty
  5. 5Validación de paridad funcional con el backend legacy antes de mover tráfico

Impacto

Backend preparado para escalar por dominios Reducción drástica de acoplamiento Base sólida para autenticación, versionado y testing Observabilidad real en producción Reducción del riesgo operativo futuro

Aprendizajes clave

  • Migración incremental de sistemas legacy sin downtime
  • Diseño de plataformas backend escalables
  • Arquitectura modular orientada a dominios
  • Observabilidad y confiabilidad en producción
  • Evolución de monolitos hacia sistemas modernos sin reescritura total

Tecnologías

TypeScriptNestJS 11PostgreSQLTypeORMRedisDockerPrometheusGrafanaJWTOpenAPI