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?
Não votei negativamente, mas quero trazer alguns contrapontos com base na minha experiência.
Erro da empresa Por ter contratado um júnior para fazer um trabalho tão complexo.
Empresas assim, com um sistema legado desse porte e que muito provavelmente teve a sua primeira versão no DOS, pode ser que não tenha tanto lucro. Talvez ela não consiga oferecer um salário competitivo para um sênior, porque talvez o dono da empresa "receba o salário de um sênior". Estou especulando, mas essa é uma realidade possível.
Outra possibilidade é a empresa não conseguir atrair pessoas com o conhecimento necessário justamente por ser uma empresa pequena, onde alguém com esse conhecimento demandaria um prêmio no salário para compensar o fato de trabalhar num lugar que talvez não tenha espaço para crescer quando comparado à uma empresa maior.
Além disso, esse projeto com certeza levaria alguns anos sendo desenvolvido por uma equipe pequena, por uma pessoa então... Para conseguir argumentar mais assertivamente neste ponto, eu precisaria conhecer o escopo completo do projeto.
Erro seu Por ter iniciado um projeto sem estar analisado.
Aqui eu concordo. O banco local seria a primeira das minhas preocupações, depois viriam outras de coisas específicas que não tenho certeza se seriam possíveis de serem feitas na Web ou com a tecnologia que eu planejo usar. Uma POC serve bem para essa situação.
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.
Eu aprendi muita coisa trabalhando numa empresa pequena e precisando resolver situações parecidas com essa. Não tenha dúvidas de que eu cometi muitos erros, e demorei muito tempo para resolver algumas coisas, mas era a única opção possível. Se a empresa tem tempo para isso, ótimo, o funcionário acaba ganhando muita experiência se ele for do tipo autodidata, que corre atrás e estuda no "tempo livre" (interprete isso como "estuda fora do horário CLT").
Acho que refazer um sistema é uma das coisas mais difíceis que existem. O ideal seria evitar sempre que possível, e se necessário, fazer em módulos pequenos. Refazer um ERP apenas para ficar numa tecnologia mais atual é um desafio enorme, principalmente se você não souber se essa tecnologia atual sustentará bem o ERP.
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.
Continuando com meu raciocínio, acredito que seja sim importante deixar claro que você, como júnior, não sabe fazer isso ou nunca fez algo desse nível, e expor as dificuldades conforme mencionei anteriormente. Se o gestor achar válido esse risco, então tudo bem.
Se não gerar lucro abandona o projeto e deixa do jeito que está.
Lembrar disso é sempre bom.
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.
Acho que essa é uma opinião muito radical. Vendo pelo lado do gestor/empresário, acredito que o projeto "tem tudo para dar errado", visto que depende de uma única pessoa e muito provavelmente o próximo contratado terá grande dificuldade de continuar o projeto, ou decidirá que "tudo deve ser refeito, de novo".
O mais profissional a ser feito aqui, na minha opinião, é deixar claro para o gestor o tamanho do projeto, se já não estiver claro, e a dificuldade de implementá-lo. Se puder oferecer alternativas, outras coisas que gerem valor para o cliente como novos sistemas ou integrações, buscar entender por quê ele quer sair do Delphi... Tudo isso são pontos extras positivos.
Se cada criente tem sua base local como são feitos os backups?
Existem várias opções:
- O cliente conecta um HD externo no computador e inicia uma rotina de backup clicando num botão ou fazendo manualmente.
- O cliente conecta um HD externo no computador, e o computador tem um script ou software responsável pelo backup que realiza essa rotina de madrugada, por exemplo.
- O backup é salvo "na nuvem". Nada impede do sistema ser local e ter um backup online.
No fim, dei um voto positivo na sua resposta, apesar de todas minhas opiniões divergentes. Você levantou bons pontos.
Obrigado pela sua resposta, me trouxe muitas opiniões importantes para serem levadas em consideração.
Sobre alguns pontos:
Por ter contratado um júnior para fazer um trabalho tão complexo.
De fato, hoje eu sei disso. Em vários momentos ao longo desse 1 ano aqui já estive empacado em outras questões do desenvolvimento dessa aplicação e sinto um pouco de desamparo técnico por parte dos colegas que trabalham comigo. Não são capacitados pra me ajudar e eu também não sou capacitado pra ajudar eles
Por ter iniciado um projeto sem estar analisado. 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!
Quando entrei eu tinha bem pouco conhecimento e fui seguindo o que me passavam. Comecei fazendo o layout adaptando o front atual do Delphi em uma versão mais minimalista para Web, criando telas independentes e fazendo consultas em um banco de dados que estão rodando na minha maquina, eu tenho cópias dos bancos de dados dos clientes a minha disposição. No inicio do projeto nem me passou pela cabeça como eu faria pra colocar isso rodar em produção.
Não vejo você capacitado para resolver esse desafio.
Nem eu.
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.
Sim, percebi isso também. Não quero nem ver como vai estar esse monstro daqui uns 2 anos.