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
- 1Infraestructura base primero (config, DB, Redis, health)
- 2Migración de entidades 1:1 con tablas legacy
- 3Definición de DTOs y contratos compatibles
- 4Migración por módulos: Analytics / Contactos → Reclamos → Encuestas + Redis → Notificaciones → Impuestos → BotConfig / Feedback / Votantes → Farmacias / Duty
- 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
