engineering · engineering · meteor · database

Migraciones en Meteor.js sin downtime

Estrategia para aplicar cambios de schema en producción con perky-migrations y feature flags.

10 feb 2026 · 5 min

El problema de las migraciones en Meteor

Meteor no tiene un sistema de migraciones de base de datos oficial. La mayoría de equipos termina usando perky-migrations o un script ad-hoc que corre en startup — lo que en producción significa downtime o race conditions si tienes múltiples instancias.

Contexto

Harbiz corre en producción con MongoDB + Meteor. Tenemos ~15 colecciones con schemas que evolucionan cada sprint.

Patrón que usamos

La clave es separar las migraciones de datos de los cambios de código. Un campo nuevo en el schema puede desplegarse en tres pasos: añadir el campo (nullable), desplegar el código que lo usa, migrar los documentos existentes en background.

// migrations/20260210_add_user_timezone.js
Migrations.add({
  version: 42,
  up() {
    Meteor.users.update(
      { timezone: { $exists: false } },
      { $set: { timezone: 'Europe/Madrid' } },
      { multi: true }
    );
  },
  down() {
    Meteor.users.update({}, { $unset: { timezone: 1 } }, { multi: true });
  },
});