En entornos con conectividad móvil limitada u ocasional, la funcionalidad offline sigue siendo esencial para mantener la integridad de los datos y la colaboración en tiempo real entre dispositivos en el borde. Este artículo explica paso a paso cómo montar en minutos un sistema de demostración basado en la plataforma de sincronización edge de Ditto, integrando la aplicación Ditto Quickstart para web y móvil, el Ditto Big Peer, el conector nativo Ditto para MongoDB y un clúster MongoDB Atlas. Los datos se sincronizan bidireccionalmente entre las apps cliente y MongoDB a través del Big Peer, permitiendo colaboración en tiempo real incluso sin conexión.

Introducción y requisitos previos

Antes de comenzar asegúrate de tener instalado o disponible lo siguiente

1. MongoDB versión 7.0.13 o 8.0.0 o superior. 2. Cuenta en MongoDB Atlas con rol atlasAdmin. 3. Clúster MongoDB M0 o superior. 4. Cuenta en Ditto. 5. MongoDB Shell. 6. Node.js versión 18 o superior.

Visión general de la arquitectura

1. Aplicaciones Quickstart Ditto: apps Todo auto contenidas que actúan como clientes SDK Ditto en web, móvil o escritorio y crean una malla P2P para sincronización local y con el Big Peer. 2. Malla P2P: sincronización directa dispositivo a dispositivo para resiliencia offline y rendimiento local. 3. Ditto Big Peer: instancia de alta disponibilidad que actúa como hub sincronizando datos entre MongoDB Atlas y los dispositivos edge. 4. Conector Ditto MongoDB: servicio que escucha cambios en MongoDB y Ditto y sincroniza bidireccionalmente usando CRDTs para resolución de conflictos. 5. MongoDB Atlas: almacenamiento persistente gestionado en la nube para consultas, transformación y retención de datos.

Configuración inicial en MongoDB Atlas

1. Crear el clúster Atlas: entra a tu cuenta Atlas y crea un clúster M0 gratuito o superior. Copia la cadena de conexión que tiene el formato mongodb+srv://usuario:contraseña@despliegue.mongodb.net/?retryWrites=true&w=majority&appName=appName. Nota: el conector soporta desde MongoDB 7.0.13 y 8.0.0 en adelante.

2. Crear base de datos y colecciones: añade las bases y colecciones que desees sincronizar. Es obligatorio habilitar changeStreamPreAndPostImages a true para las colecciones para asegurar consistencia causal entre sistemas. Por ejemplo ejecuta en MongoDB Shell db.runCommand({ collMod: nombreColeccion, changeStreamPreAndPostImages: { enabled: true }})

3. Datos de ejemplo: un documento tipo todo puede verse así en MongoDB con campos _id, deleted, done y title. 4. Usuario de base de datos: crea un usuario con permisos readWrite sobre la BD objetivo. Si usas sharding añade permiso explícito de lectura para la colección config.system.sessions si aplica. 5. Lista de IPs permitidas: añade a la allowlist las IPs fijas del Big Peer si usas la instancia gestionada: 3.147.233.88 52.15.232.117 3.130.255.9 Nota: si desplegas el Big Peer en tu nube propia deberás permitir las IPs de salida de tu despliegue o usar Private Endpoints.

Despliegue del Ditto Big Peer

1. Accede al portal Ditto con tu cuenta. 2. Crea una organización y dentro una aplicación. Asigna el modo de autenticación Playground Auth si es el caso. 3. En la pestaña Connect obtendrás App ID, Playground Authentication Token y parámetros necesarios para conectar las apps cliente al Big Peer. 4. En Collections del portal podrás inspeccionar las colecciones sincronizadas y los documentos.

Configuración del conector nativo Ditto para MongoDB

1. En Settings selecciona MongoDB Connector. 2. Haz clic en Configure y rellena la información de conexión. 3. Indica la base de datos MongoDB que sincronizarás. 4. Pega la cadena de conexión Atlas en el campo correspondiente. 5. Haz Add collection para seleccionar las colecciones a sincronizar. 6. Introduce el nombre de la colección. 7. Activa Initial Sync si quieres importar los datos existentes desde MongoDB al Big Peer en un proceso en background que corre una sola vez. Si lo dejas desactivado solo se sincronizarán los cambios futuros vía Change Streams. 8. Selecciona el tipo de mapeo de identificadores. Match IDs mantiene los mismos IDs en Ditto y MongoDB. Map fields to Ditto ID permite mapear campos concretos al ID de Ditto. 9. Añade todas las colecciones necesarias y guarda la configuración. 10. Guarda y observa el estado del conector que pasará de Pending a Running o a Failed si ocurre un error. 11. Si activaste initial sync verás el progreso en Initial Sync Status. 12. Puedes editar luego la configuración para cambiar colecciones, mapeos o credenciales.

Aplicación web Quickstart

1. Clona el repositorio Quickstart. 2. Copia el archivo .env.sample a .env en la raíz del proyecto y rellena las variables DITTO_APP_ID, DITTO_PLAYGROUND_TOKEN, DITTO_AUTH_URL y DITTO_WEBSOCKET_URL con los valores del Big Peer. 3. Entra a la carpeta javascript-web e instala dependencias npm install. 4. Ejecuta npm run dev y abre la aplicación en el navegador en la URL por defecto del servidor de Vite.

Aplicación móvil iOS con Swift

1. Crea una copia del .env en la carpeta swift y rellena las variables DITTO_APP_ID DITTO_PLAYGROUND_TOKEN DITTO_AUTH_URL DITTO_WEBSOCKET_URL. 2. Abre el proyecto quickstart/swift/tasks/tasks.xcodeproj en Xcode. 3. Para ejecutar en un dispositivo ajusta Team y Bundle Identifier en Signing and Capabilities con tu cuenta Apple. 4. Selecciona dispositivo o simulador y construye el proyecto. El proceso generará un archivo Env.swift con los valores y luego compilará la app. 5. Ejecuta la app en el dispositivo o simulador elegido.

Casos de uso y verificación

Una vez configurado el sistema prueba a crear una tarea en la aplicación Quickstart. El nuevo registro deberá aparecer automáticamente en el portal Ditto y en la colección MongoDB correspondiente. De la misma forma, cambios directos en MongoDB se propagarán al portal Ditto y a todas las apps Quickstart conectadas. Este flujo es ideal para aplicaciones críticas que requieren sincronización en tiempo real y tolerancia a desconexiones.

Beneficios técnicos y empresariales

La combinación de sincronización P2P, Big Peer y un conector bidireccional basado en CRDTs ofrece conflict free replication, baja latencia local y persistencia en la nube. Esto reduce la complejidad de integración entre edge devices y servicios cloud y acelera el desarrollo de soluciones como aplicaciones de campo, sistemas de colaboración en tiempo real y asistentes offline.

Sobre Q2BSTUDIO

En Q2BSTUDIO somos especialistas en desarrollo de software a medida y aplicaciones a medida, inteligencia artificial aplicada a empresas, ciberseguridad y servicios cloud. Ofrecemos soluciones integrales que incluyen diseño y desarrollo de sistemas sincronizados edge to cloud, y acompañamiento en transformación digital. Si tu proyecto necesita una aplicación a medida con sincronización offline y escalado en la nube podemos ayudarte a diseñarla y desplegarla. Conoce nuestro enfoque en desarrollo de aplicaciones a medida y optimiza además la infraestructura con nuestros servicios cloud aws y azure.

Palabras clave y servicios

Este tutorial y nuestra oferta cubren temas relevantes para posicionamiento y búsqueda como aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws servicios cloud azure servicios inteligencia de negocio ia para empresas agentes IA y power bi. También desarrollamos integraciones con herramientas de inteligencia de negocio como Power BI para análisis y reporting en tiempo real.

Conclusión

Sincronizar datos en tiempo real entre dispositivos edge y la nube no tiene por qué ser complejo. Con Ditto y su conector bidireccional para MongoDB puedes habilitar sincronización en tiempo real y sin conflictos incluso en entornos de conectividad limitada. Si deseas asistencia para diseñar, desarrollar o desplegar soluciones de este tipo, Q2BSTUDIO puede ofrecer consultoría y desarrollo a medida que combine las mejores prácticas en software, IA y seguridad.