Cara aqui vejo 2 erros GRAVÍSSIMOS
Erro da empresa
Por ter contratado um júnior para fazer um trabalho tão complexo.
Você é júnior cara, lembro quando eu tinha 1 ano de experiência e certamente não tinha capacidade para tomar 10% das decisões que estão sendo tomadas. Me preocupo de como vai ficar a qualidade final do projeto.
Erro seu
Por ter iniciado um projeto sem estar analisado.
Tudo estava correndo surpreendentemente bem, já desenvolvi várias telas, fazendo consultas no banco de dados e exibindo dados em tabelas gráficos, entretanto precisei começar a pensar em uma versão de produção para o app..
Um software web hoje, na minha opinião, deve estar na web no dia 1. Você instalou a biblioteca, fez o commit da primeira tela, ele já tem que estar em produção e acessível (CI/CD que fala)
Você gastou um tempo absurdo criando um projeto sem saber se ele vai funcionar? A comunicação com o banco de dados deveria ser a tua primeira preocupação!
Saiba o seu lugar
Quanto somos iniciantes temos muita sede e energia para querer mudar o mundo. Mas você deve saber o desafio que você pode e não pode resolver.
Não vejo você capacitado para resolver esse desafio.
E sinceramente se voê está perguntando essa dúvida aqui é porque sua empresa também não está preparada para esse desafio. Deve contratar gente especializada em infraestrutura, negócios e sobretudo gestão.
Aprenda a dizer não. não tem problema nenhum em dizer que Não sabe, que não tem capacidade pra resolver um desafio. Problema é você assumir uma responsabilidade e falhar com ela.
Enfrentando o problema.
Os erros foram cometidos, agora a questão é reparar.
Você aqui tem 2 opções:
1- Mover as bases de dados para a cloud.
Essa é a solução mais fácil para você. Porém mais difícil para o seu colega e possivelmente traumática para seus clientes.
Aqui deve-se contratar um servidor profissional em uma nuvem grande. Recomendo AWS, Azure, Google ou Oracle.
também implicaria em um custo adicional indesejado
Você está fazendo uma funcionalidade nova. O quanto isso vai gerar de lucro? Se não gerar lucro abandona o projeto e deixa do jeito que está.
Vantagens
- Solução mais rápida e confiável
Desvantagens
- Se todo o sistema em delphi não foi pensado para trabalhar com banco de dados remoto e faz muitas consultas subsequentes todo o sistema vai ficar mais lento por conta da latência.
- Os clientes vão ficar reféns da qualidade de conexão deles. perde toda a vantagem de ser um sistema local
2- A sua aplicação acessar o banco de dados.
Isso facilmente seria resolvido com uma VPN como o Tailscale. Instale a VPN em cada servidor, dê permissão apenas para o servidor web ver cada um deles. E use o MagicDNS para acessar cada banco de dados individualmente.
Vantagens
- Nenhum cliente vai precisar ser impactado por conta da nova funcionalidade. Tudo vai poder rodar na infra atual.
Desvantagens:
- O servidor web vai sofrer com latência alta, vai ter que ter suas querys muito bem oyimizadas para trafegar a menor quantidade de dados possíveis na menor quantidade de querys possíveis.
- O servidor web estará sujeito a disponibilidade da internet e banda de cada cliente. Se um cliente ficar sem internet o sistema inteiro fica fora do ar
Dor de cabeça
Sim, MUITA. O que você mais vai ter com esse projeto vai ser dor de cabeça. Sugiro atualizar seu currículo, aplicar pra, no mínimo, 100 vagas por dia e sair daí o mais rápido possível.
Uma empresa que trabalha há 20 anos vendendo um software e não dá valor ao core business só tem um caminho: a falência.
Uma dúvida pessoal: Se cada criente tem sua base local como são feitos os backups? o que acontece se aquele computador que fica lá no canto queimar do dia pra notie?