Executando verificação de segurança...
4

Sem delongas, vou falar o que eu fiz numa situação muito semelhante. Não encare como sugestão, apenas é algo que fiz e pode ser interessante como caso de estudo.

Meu cliente possui varias filiais onde cada uma tem uma copia do banco de dados. Aplicação desenvolvida em Delphi e banco de dados Firebird. Eu precisava sincronizar todos os bancos de todas as filiais para montar um estoque centralizado (virtualmente centralizado) pois eles precisam alem de vender nas lojas fisicas, agora vender em um site proprio e em marketplaces. Isso significa que eu tambem teria que dar baixa no estoque quando um produto fosse vendido online. Sendo assim eu precisaria de comunicacao entrando e saindo de todos os bancos o tempo todo.

Como eu resolvi?

Simples. Desenvolvi duas aplicacoes uma client (que eu instalo na maquina que está o banco de dados da loja) e outra aplicação que eu hospedo num servidor que vai centralizar e orquestrar toda essa bagunça.

Por questões de segurança eu jamais coloco um computador exposto na internet. No lugar, eu faço o app client se comunicar com o banco de dados e sincronizar com o app servidor. É app falando com app.

O client coleta os dados locais e envia para o server na nuvem. O server processa isso de todos os canais (client, site e marketlaces).

Depois de processado, o server deixa uma resposta em fila para entregar ao client na proxima vez que ele conectar ao server para enviar as ultimas atualizações locais. Nesse momento, o server aproveita a conexão do client e devolve para ele os novos valores de estoque.

O server nunca fica com os dados armazenados nele. A informação é usada apenas até que o sincronismo esteja finalizado. Assim que todos os registros foram devidamente teansferidos para todos os clients, a info do server é apagada. Isso garante a segurança dos dados e permite que o server seja um terminal volatil que pode ser apagado, reiniciado, desligado que a informacao do server é apenas o resultado da coleta do que os clients enviam para ele. Por isso, se o server morrer e eu precisar reinstalar na nuvem novamente, eu nao preciso nem me preocupar com backup, pois na hora que ele iniciar a primeira vez após a manutencão, ele vai aguardar os dados que os clients vão enviar pra ele e tudo volta ao normal.

Como disse, solução simples, segura e barata.

Carregando publicação patrocinada...
1

Interessante a solução, obrigado por compartilhar.

Mas acredito que no meu caso é um pouco diferente, uma vez que me falta infraestrutura pra conseguir implementar uma aplicação que controla o banco localmente e se comunica com a rede.

Ou posso não ter compreendido completamente a sua resposta também

1

Opa, tranquilo. Expliquei rapidamente e mesmo sendo conceitualmente simples tem bastante detalhe para fazer isso tudo funcionar.

Respondendo especificamente o ponto que você comentou: eu precisei apenas do wamp rodando no computador que ja tem o banco de dados. Na nuvem eu usei uma VPS simples , $5/mês. Implementei isso usando PHP, mas se eu fosse refazer isso novamente eu optaria por node + express que funcionaria bonitamente! O cuidado para implementar algo nesse formato é apenas certificar que a sua aplicação a ser desenvolvida consiga se comunicar (tenha lib) para o Firebird. Aí pronto, você não precisará fazer nada no sistema operacional, nem liberar portas, regras de firewall, ficar controlando qual o ip do modem para chegar na aplicação fora da rede, etc. É só focar na regra de negócio e ser feliz