Banco local
O que fica na máquina, por quanto tempo, com que índice e qual o tamanho máximo antes de arquivar. Normalmente SQLite, pelo custo zero de administração.
Aplicação desktop bem feita não é a que ignora a nuvem, nem a que depende dela. É a que sabe exatamente o que guardar na máquina, o que enviar, em que ordem — e o que fazer quando a resposta demora ou nunca chega.
Sincronização é fácil enquanto tudo dá certo. O projeto se define no que acontece quando não dá.
Ligar uma aplicação desktop à nuvem é simples no dia bom: grava local, envia, confirma, pronto. O trabalho de arquitetura começa no dia ruim — quando a máquina do caixa gravou uma venda, a internet caiu, o supervisor alterou o mesmo pedido pelo painel web e as duas versões se encontram meia hora depois. Sem uma regra decidida antes, o sistema escolhe uma delas em silêncio, e alguém descobre isso no fechamento do mês.
Por isso a etapa produz decisões explícitas, não um desenho bonito: o que é fonte da verdade para cada tipo de registro, o que a máquina pode fazer sozinha e o que exige confirmação do servidor, quanto tempo a fila pode acumular antes de virar alerta, o que acontece com um número de nota quando duas estações estão offline ao mesmo tempo. Cada uma dessas respostas vira comportamento no código e texto no documento de arquitetura.
Também definimos o que o sistema faz de cara feia. Estoque negativo, preço divergente, cadastro que sumiu na origem, relógio da máquina errado — a operação não pode travar por isso, mas também não pode fingir que está tudo certo. A regra de cada caso é decidida com você, com o custo do erro na mesa.
Aplicação que "sincroniza automaticamente" sem regra de conflito não sincroniza: ela escolhe um vencedor em silêncio e você descobre no fechamento.
Seis definições que separam uma aplicação que aguenta o dia ruim de uma que só funciona na demonstração.
O que fica na máquina, por quanto tempo, com que índice e qual o tamanho máximo antes de arquivar. Normalmente SQLite, pelo custo zero de administração.
A ordem de envio, o número de tentativas, o tempo de espera entre elas e o que fazer com o item que falha sempre.
Quem vence quando os dois lados mudaram o mesmo registro — e quais casos, em vez de escolher sozinho, param para uma pessoa decidir.
Quais rotas, que formato, que limite de tamanho e como a API se comporta com um cliente que sumiu por dois dias.
O que é cifrado na máquina, onde ficam as credenciais e o que sobra num computador que for roubado ou trocado.
O que a aplicação continua fazendo sem rede, o que ela bloqueia e como avisa o operador sem interromper a fila.
Documento curto e legível: quem não programa precisa entender as escolhas que vão custar dinheiro depois.
De duas a três semanas, terminando com uma prova técnica rodando de verdade.
Registro a registro: o que nasce na máquina, o que nasce na nuvem e o que os dois podem alterar. É essa lista que gera as regras de conflito.
Escolha de banco local, formato de sincronização, política de tentativa e limites. Cada decisão registrada com a alternativa que foi descartada e o motivo.
Um protótipo que grava local, perde a conexão de propósito, acumula fila e reconcilia. Arquitetura no papel não prova comportamento.
Apresentamos o modo degradado para quem opera. Se a regra que decidimos atrapalha a fila real, ela muda agora — e não depois de pronta.
Compromissos que valem para todo projeto desktop da YveTech.
Os limites que preferimos dizer antes de assinar.
Ponto de partida que ajustamos ao seu caso. O que não muda é decidir isso antes de escrever código.
| Tipo de registro | Fonte da verdade | Comportamento sem conexão |
|---|---|---|
| Venda e movimento do turno | a máquina que registrou | grava local e entra na fila; a operação não para |
| Cadastro de produto e preço | a nuvem | usa a última cópia recebida e marca a idade dela na tela |
| Estoque | a nuvem, com reserva local | permite a saída dentro do saldo conhecido e reconcilia depois |
| Permissão e perfil de acesso | a nuvem | mantém a sessão vigente; mudança de perfil só entra ao reconectar |
| Numeração fiscal | faixa reservada por estação | usa a faixa própria — é o que evita duas notas com o mesmo número |
| Registro de auditoria | a máquina, com envio garantido | acumula local e sobe inteiro, sem descarte por antiguidade |
O que combinamos antes de começar — e cobramos de nós mesmos durante o projeto.
As dúvidas que mais aparecem nesta etapa. Sobre prazo, forma de cobrança e contrato, veja as perguntas frequentes da YveTech.
Muitas vezes não. O padrão que mais usamos é banco local em cada estação conversando direto com a nuvem — sem nenhuma máquina servidora na sua sala, sem sala refrigerada e sem alguém responsável por ela. Servidor local entra quando há volume alto entre estações, quando a rede externa é ruim demais ou quando uma exigência de acesso obriga o dado a não sair do prédio. Nesses casos dizemos no diagnóstico, com o custo de compra e de manutenção na mesa.
Depende do que combinarmos, e é uma decisão de projeto, não um limite técnico. O banco local aguenta semanas de movimento sem esforço. O que define o prazo aceitável são as regras do negócio: preço desatualizado, estoque sem reconciliar e permissão revogada que ainda não chegou. Definimos com você a partir de quanto tempo o sistema passa a avisar e a partir de quando ele bloqueia certas operações.
A que a regra disser — e a regra é escrita nesta etapa, tipo de registro por tipo de registro. Para movimento, cada estação é dona do que registrou e nada colide. Para cadastro, normalmente a nuvem vence. Para os casos em que escolher errado custa dinheiro, a aplicação não escolhe: ela marca o conflito e apresenta as duas versões para uma pessoa decidir.
É exatamente o risco que a arquitetura precisa tratar antes de acontecer. Por isso a fila tem prazo e alerta: se uma estação passa do tempo combinado sem sincronizar, alguém é avisado enquanto ainda dá para agir. Para operações críticas, replicamos o registro em outra máquina da rede local no mesmo instante da gravação — o custo é pequeno perto de perder um turno inteiro de vendas.
Começamos pela classificação dos seus dados e pelo comportamento sem rede. É a etapa que evita o retrabalho mais caro de um projeto desktop.
As quatro etapas do método e os três recortes da operação — cada uma com o seu próprio detalhamento.