Inicio/Blog/Satellite direct-to-device
Arquitectura de Conectividad Resiliente

Satellite direct-to-device y diseño de backend resiliente

El D2D satelital extiende un servicio móvil más allá de la cobertura terrestre. No garantiza capacidad de banda ancha, visibilidad continua, baja latencia o ACK inmediato. La aplicación debe tratar conectividad como recurso variable y conservar comportamiento útil durante interrupciones largas.

D2D complementa la red terrestre

GSMA define direct-to-device como conexión entre satélite y handset común que complementa cobertura y resiliencia. 3GPP Release 17 introdujo NTN estandarizado para NR e IoT, con mejoras en Release 18. También existen servicios propietarios con devices, espectro y capacidades distintos.

El backend no puede inferir capacidad por un icono. Debe descubrir emergencia, texto, datos, telemetría o voz y sus límites de payload, retraso, costo y ventana.

DisponibilidadCobertura terrestre/satélite, cielo, región, acuerdo, device, plan y batería.
Envelope de transportePayload, uplink/downlink, retraso, ventana, throughput, costo y entrega.
Policy de mensajePrioridad, expiración, sensibilidad, compresión, retries, ACK, dedupe y fallback.
Autonomía localQué puede leer, decidir, registrar, alertar y ejecutar el device sin servidor.

Modela estados, no solo online y offline

Estados útiles: terrestre sano, degradado, satélite disponible, satélite restringido, esperando ventana, solo local y solo emergencia. El estado depende de capacidad medida.

Usa señales del sistema/modem, callbacks, caché expirable y probes limitados. Cambiar ruta no debe duplicar efectos.

Fallback y flujo de entrega
01 ClasificarDefine intenciónEmergencia, comando, alerta, posición, formulario, telemetría, adjunto o historial.
02 EmpaquetarCrea envelope durableID, origen, destino, schema, hora, expiración, prioridad, dependencias, hash y cifrado.
03 SeleccionarElige ruta elegibleWi-Fi, móvil terrestre, D2D, relay, transferencia tardía o modo local.
04 AdaptarAjusta el payloadComprime, separa adjuntos, envía resumen, reduce muestras o conserva campos críticos.
05 TransferirStore-and-forwardPersiste antes de enviar, usa retries limitados y conserva hasta ACK o expiración.
06 AceptarDeduplica y validaAutentica, verifica integridad/schema, bloquea replay y acepta idempotentemente.
07 ReconciliarAplica eventos tardíosComprueba versión, causalidad, validez, conflictos, autorización y compensación.
08 ObservarMuestra outcomeQueued, enviado, aceptado por red, servidor, aplicado, rechazado o expirado.

El envelope es la abstracción central

Cada operación necesita ID y hora de creación independientes del envío. Incluye expiración, prioridad, schema, device, actor, destino, secuencia, versión, hash, cifrado y dependencias.

La posición puede valer horas; una alerta sigue siendo útil tras demora; un comando de desbloqueo debe expirar rápido.

Prioriza valor y vida útil

MensajePrioridadPayloadBackendDiseño inseguro
EmergenciaMáxima con expiración.Identidad/pseudónimo, ubicación, evento, hora e integridad.Routing, dedupe, escalamiento, estado y owner.Mostrar entregado al guardar localmente.
ComandoAlta y corta.ID, objetivo, parámetros, precondiciones, expiración y auth.Revalidar estado/auth y exigir resultado.Ejecutar horas después sin comprobar seguridad.
PosiciónMedia y limitada.Coordenadas, precisión, sample time, movimiento y batería.Aceptar fuera de orden y mostrar event time.Mostrar posición tardía como actual.
TelemetríaPor policy.Agregados, thresholds, calidad y ventana.Agregar local, dedupe y conservar anomalías.Enviar todo hasta agotar recursos.
FormularioMedia y durable.Campos y manifiesto; media después.Aceptar formulario antes que adjuntos.Bloquear todo por una foto.
Media/updateBaja; terrestre.Solo manifiesto.Esperar Wi-Fi/terrestre y chunks resumibles.Consumir capacidad satelital crítica.

At-least-once exige idempotencia

Links restringidos y ACK incierto hacen normales los duplicados. MQTT QoS 1 ofrece at-least-once. El servidor deduplica por operation ID y devuelve el resultado original.

Un timeout puede ocurrir tras commit. No generes ID nuevo porque no llegó la respuesta.

Eventos tardíos conservan tiempo e incertidumbre

Guarda event time, receive time, apply time, calidad de reloj, precisión y ruta. Procesa por event time e impide que telemetría vieja reabra incidentes.

Usa secuencia monotónica, epochs, calidad GNSS/red y plausibilidad. Muestra cuando el valor está retrasado.

Los comandos necesitan reglas más fuertes

Incluye emisor, objetivo, scope, precondiciones, creación, expiración, nonce, idempotencia, versión, aprobación y resultado. El receptor evalúa seguridad local actual.

Desconectado, el device sigue policy acotada. La intención antigua de cloud no supera una condición local nueva.

Usa modos degradados explícitos

Envía texto en vez de media, ubicación gruesa en vez de track, thresholds en vez de streams, drafts en vez de writes sensibles e instrucciones en caché en vez de IA online.

La interfaz muestra ruta, retraso, costo/batería y diferencia entre almacenado, transmitido, aceptado y aplicado.

La seguridad atraviesa colas largas

Cifra end-to-end, autentica envelopes, evita replay, rota claves para desconexión y separa expiración de auth. Protege la cola en reposo.

La revocación es eventual. Limita autoridad offline y exige chequeo actual para alto riesgo.

Prueba ventanas y reconnect storms

Prueba sin visibilidad, ventana corta, link asimétrico, latencia, bajo throughput, ACK duplicado, desorden, adjunto interrumpido, clock drift, storage lleno, batería, roaming y auth expirada.

Usa simulador con contacto, pérdida, delay, límites y costo. Tráfico crítico debe preemptar bulk.

Observa cada etapa

Mide cola y edad, bytes por ruta, ventana, retries, duplicados, expiración, compresión, batería, tiempos hasta red/servidor/aplicación, resultado y fallback.

Outcomes incluyen ACK de emergencia, check-in, telemetría recuperada, reportes, posición stale y rechazo de comando tardío.

Qué construiría

Construiría una abstracción con store durable, selector de ruta, transformer, scheduler, adapters, ingest idempotente, reconciliador, comandos seguros y API de delivery state.

Cada tipo declararía delay, payload tiers, rutas, costo, ACK, fallback, seguridad y conflicto.

El principio de diseño

D2D añade una ruta donde no existe red terrestre. El software resiliente no finge que es banda ancha: empaqueta intención, adapta payload, conserva autonomía, verifica efectos tardíos y comunica incertidumbre.