Início/Blog/Satellite direct-to-device
Arquitetura de Conectividade Resiliente

Satellite direct-to-device e design de backend resiliente

O D2D por satélite amplia um serviço móvel além da cobertura terrestre. Não garante capacidade de banda larga, visibilidade contínua, baixa latência ou ACK imediato. A aplicação precisa tratar conectividade como recurso variável e preservar comportamento útil durante longos intervalos.

D2D complementa a rede terrestre

A GSMA define direct-to-device como conexão entre satélite e handset comum, complementando cobertura e resiliência da operadora. O 3GPP Release 17 introduziu NTN padronizado para NR e IoT, com evoluções no Release 18. Também existem serviços proprietários com devices, espectro e capacidades diferentes.

O backend não pode inferir capacidade por um ícone. Descubra se a sessão suporta emergência, texto, dados, telemetria, voz ou outro perfil, e quais limites de payload, atraso, custo e janela existem.

DisponibilidadeCobertura terrestre/satélite, céu, região, acordo da operadora, device, plano e bateria.
Envelope de transportePayload, uplink/downlink, atraso, janela, throughput, custo e semântica de entrega.
Policy de mensagemPrioridade, expiração, sensibilidade, compressão, retries, ACK, deduplicação e fallback.
Autonomia localO que o device pode ler, decidir, registrar, alertar e executar sem resposta atual.

Modele estados, não apenas online e offline

Estados úteis incluem terrestre saudável, terrestre degradado, satélite disponível, satélite restrito, aguardando janela, somente local e somente emergência. O estado vem da capacidade medida.

Use sinais do sistema/modem, callbacks, cache com expiração e probes limitados. Trocar caminho não pode duplicar efeitos.

Fallback e fluxo de entrega
01 ClassificarDefina a intençãoEmergência, comando, alerta, posição, formulário, telemetria, anexo ou histórico.
02 EmpacotarCrie envelope durávelID, origem, destino, schema, horário, expiração, prioridade, dependências, hash e criptografia.
03 SelecionarEscolha caminho elegívelWi-Fi, móvel terrestre, D2D, relay, transferência atrasada ou modo local.
04 AdaptarAjuste ao envelopeComprima, separe anexos, envie resumo, reduza amostra ou preserve campos críticos.
05 TransferirStore-and-forwardPersista antes de enviar, use retries limitados e retenha até ACK ou expiração.
06 AceitarDeduplicate e valideAutentique, valide integridade/schema, bloqueie replay e aceite idempotentemente.
07 ReconciliarAplique eventos atrasadosCheque versão, causalidade, validade, conflitos, autorização e compensação.
08 ObservarExponha o outcomeQueued, enviado, aceito pela rede, aceito pelo servidor, aplicado, rejeitado ou expirado.

O envelope de mensagem é a abstração central

Cada operação precisa de ID e criação independentes da transmissão. Inclua expiração, prioridade, schema, device, ator, destino, sequência, versão-base, hash, criptografia e dependências. Separe envelope pequeno de conteúdo grande.

Adicione campos de tolerância a atraso. Posição pode valer horas; alerta continua útil atrasado; comando de desbloqueio deve expirar rapidamente.

Priorize valor e tempo de vida

MensagemPrioridadePayload satéliteBackendDesign inseguro
EmergênciaMáxima; expiração explícita.Identidade/pseudônimo, localização, evento, horário e integridade.Roteamento, dedupe, escalonamento, status e owner humano.Mostrar “entregue” após apenas salvar localmente.
ComandoAlta e curta.ID, alvo, parâmetros, precondições, expiração e autorização.Revalidar estado e auth; exigir ACK e resultado.Reexecutar horas depois sem verificar segurança.
Posição/check-inMédia e limitada.Coordenadas, precisão, sample time, movimento, bateria e status.Aceitar fora de ordem e exibir event time.Mostrar coordenada atrasada como atual.
TelemetriaPor policy.Agregados, thresholds, qualidade e janela.Agregar localmente, deduplicar e reter anomalias.Enviar cada leitura até esgotar storage/bateria.
FormulárioMédia e durável.Campos estruturados e manifesto; mídia depois.Aceitar formulário primeiro e anexos depois.Bloquear tudo por causa de uma foto.
Mídia/updateBaixa; terrestre por padrão.Apenas manifesto.Aguardar Wi-Fi/terrestre e usar chunks resumíveis.Consumir capacidade crítica do satélite.

At-least-once exige idempotência

Links restritos e ACK incerto tornam duplicatas normais. MQTT QoS 1 oferece at-least-once. O servidor deduplica por operation ID e devolve o resultado original. Writes e comandos precisam de idempotência de negócio.

Timeout pode ocorrer após commit. Não crie novo ID só porque a resposta sumiu. Retenha o ledger pelo maior intervalo de reconexão.

Eventos atrasados preservam tempo e incerteza

Armazene event time, receive time, apply time, qualidade do relógio, precisão e caminho. Processe por event time e impeça telemetria antiga de reabrir incidentes ou sobrescrever estado atual.

Use sequência monotônica, epochs do servidor, qualidade GNSS/rede e plausibilidade. Mostre quando o valor é atrasado.

Comandos exigem regras mais fortes

Comando precisa de emissor, alvo, scope, precondições, criação, expiração, nonce, idempotência, versão, aprovação e resultado. O receptor avalia segurança local atual.

Desconectado, o device segue policy limitada: shutdown seguro, alerta, cache ou workflow aprovado. Intent antigo da cloud não deve vencer condição local mais nova.

Use modos degradados explícitos

Envie texto em vez de mídia, localização grossa em vez de track, thresholds em vez de stream, drafts em vez de writes críticos e instruções em cache em vez de IA online.

A interface informa caminho, atraso, custo/bateria e diferença entre armazenado, transmitido, aceito e aplicado.

Segurança atravessa filas longas

Criptografe end-to-end, autentique envelopes, impeça replay, rotacione chaves pensando em desconexão e expire autorização separadamente da mensagem. Proteja a fila em repouso.

Revogação é eventual. Limite autoridade offline e exija checagem atual para ações de alto risco.

Teste janelas e reconnect storms

Teste sem visibilidade, janela curta, links assimétricos, atraso, baixo throughput, ACK duplicado, ordem alterada, anexos interrompidos, clock drift, storage cheio, bateria, handover, roaming e credenciais expiradas.

Use simulador com agenda de contato, perda, atraso, limites e custo. Garanta que tráfego crítico preempte bulk.

Observe cada estágio

Meça fila e idade por prioridade, bytes por caminho, janela usada, retries, duplicatas, expiração, compressão, bateria, tempo até rede, servidor e aplicação, resultado do comando e fallback.

Outcomes incluem ACK de emergência, check-in, telemetria recuperada, relatórios, localização stale e rejeição de comando atrasado.

O que eu construiria

Eu construiria uma abstração de conectividade com store durável, seletor de caminho, transformer, scheduler de prioridade, adapters, ingest idempotente, reconciliador, comandos seguros e API de delivery state.

Cada mensagem declararia atraso máximo, payload tiers, caminhos, custo, ACK, fallback, segurança e conflito.

O princípio de design

D2D é valioso por adicionar um caminho onde não há rede terrestre. Software resiliente não finge que ele é banda larga: empacota intenção, adapta payload, preserva autonomia, verifica efeitos atrasados e comunica incerteza.