Hoje venho aqui uma grande dúvida para encontrar um caminho que seja o mais coerente possível.
Estou trabalhando como autônomo á algum tempo com desenvolvimento de softwares e aplicativos mobile. Recentemente consegui uma oportunidade de gerenciar um projeto de migração de software. Ou seja, a reconstrução de um sistema ERP desenvolvido na linguagem Delphi7, eles querem mudar o sistema para JAVA.
Venho por meio deste tópico perguntar ao mais experientes que participaram de processo de migração ou até mesmo da construção de um ERP em java(algo novo para minha
Estava pensando em fazer essa migração para um Sistema web, visto que hoje em dia possui bastante suporte e uma boa opção para evitar problemas que ocorrem muito hoje com o Sistema atual que é problema na própria maquina do cliente, as vezes algum driver, as vezes vírus ou mal uso do computador. Creio eu que optando por um sistema web esse suporte seria mais prático, rápido e evitaria ter que deslocar algum funcionário até a empresa para ver o que está acontecendo. E ainda economizaria processamento da máquina do cliente…
O que vocês acham? Se eu optar por essa caminho web java, quais os principais problemas eu terei de enfrentar? Seria legal diagramar todo o sistema, para ficar mais fácil a modelagem do banco e até mesmo melhor a agilidade no processo de desenvolvimento?
Quais idéias de ferramentas usar? (Desde o desenvolvimento, banco de dados, frameworks, ferramentas que possam facilitar esse migração, quanto ferramentas que são indispensáveis em um projeto deste tamanho.)
Olha, se você tem conhecimento para fazer em web , vai por esse caminho que é sucesso.
Eu sugiro considerar trabalhar com microservices, é uma abordagem bem bacana para isso.
Concordo com @darlan_machado, procure seguir o caminho web.
Já atuei por quase 5 anos migrando sistemas desktop de Delphi para Java.
Houve muitos desafios pois Delphi nada mais é do que uma ferramenta RAD para desenvolver em Object Pascal e, infelizmente, a maioria de programadores que atuam com Delphi, não utilizam boas práticas de programação e orientação à objetos, geralmente eles se atém em arrastar e colar componentes e escrever código de difícil reaproveitamento.
Primeiro foi necessario portar a VCL do Delphi para Java, para isso foi desenvolvido um compilador para gerar arquivos .java a partir de arquivos .pas e .dfm, com o compilador pronto, começamos a converter um sistema legado de quase 30 anos.
Depois de convertido, cada fonte precisava ser revisado por desenvolvedores com alto conhecimento de Delphi e Java, pois muitas construções dentro de um fonte Delphi não são trivialmente convertidas e precisam de humanos para revisar, por exemplo blocos ifdef e código escrito em assembly.
Outro problema é que os programadores que codificavam em Delphi passariam a codificar em Java, então houve bastante resistência e foi necessário desenvolver um editor gráfico, onde acabamos estendendo o WindowBuilder do eclipse.
Resumindo, converter um sistema Delphi para Java é difícil e custoso, pois imagina que você vai levar 3 anos para converter seus sistemas, nesse período de 3 anos você vai estar oferecendo um sistema em Java com as mesmas características que o sistema Delphi tinha 3 anos atrás. Você acaba ficando parado no tempo investindo em conversão e sem incrementar o seu sistema.
O mais viável é reescrever o sistema e nesse caso, acredito que não vale a pena reescrever utilizando tecnologia desktop, reescreve diretamente para WEB utilizando micro serviços que ao menos poderá atingir uma gama maior de clientes.
Concordo muito com isso.
Eu penso que o ideal é mapear funcionalidades desejadas, coisas que o cliente gostaria e misturar nesse bolo. Já que vai perder tanto tempo na migração, já inclui coisas que vão ser muito mais úteis e vão trazer um valor agregado maior ao sistema.
Apenas lembrando, migrar um sistema para outra tecnologia é como criar um do zero, incluindo base de dados, afinal, não há garantias que o que está ali é confiável.
dependendo do sistema, usar microservices é um overhead que não traz beneficios num primeiro.
mais vale um sistema web convencional, rodando em servidor bom, e otimizar as partes “quentes” se necessario do que cair em uma arquitetura nova que pouca gente tem experiência.
o que precisa ser visto é o custo de homologação desse ERP - e como vcs vão reescrever o sistema então vc pode ter uma serie de regras de negocios difusas e talvez mal documentadas que vão ser o calcanhar de aquiles.
um desafio por vez. mudar de paradigma ( desktop pra web ) ja é tenso.
Por incresça que parível, já vi as regras de negócio de um sistema serem implementadas em um case of do Delphi com mais de 10 mil linhas. O case of é uma instrução parecida com o switch do Java,
Entre essas 10 mil linhas havia dezenas de códigos repetidos onde só mudava o valor de algumas variáveis. É o tipo de situação onde poderia existir um repositório de regras de negócio com objetos parametrizados e reaproveitáveis.
Pela experiencia que passei, migramos aos poucos. A cada módulo migrado já ia pra produção no novo sistema e desativado no velho. O cliente comprou a ideia, fizemos um levantamento de requisitos atualizado do zero e assim ficou bem suave.
Também não encorajo microservices sem ter a real necessidade e equipe com experiencia. Aqui a integração entre sistemas é em maior parte por banco (Oracle) e a infra usa load balancing para questoes de desempenho.
Além de todas as dicas que o pessoal passou acima de “como” fazer o sistema, eu sugiro também que avalie se realmente vale a pena fazer um sistema desses do zero ou talvez comprar um pronto.
Se o produto da empresa for o ERP em si, aí claro, com certeza deve migrar.
Porém se for um sistema interno, que as vezes nao tem diferencial estratégico para a empresa, tente investir um tempinho comparando o preço das alternativas: comprar um produto pronto, usar uma opçao open-source, etc.
Delphi 7 é de 2002 e ja não tem suporte oficial. com a velocidade dos servidores hoje, um sistema web leve vai pode ser um avião se comparado ao sistema antigo. ainda mais com hibernate / 2nd-level cache se tiver uso intenso de banco de dados.
agora se vc colocar isso na mão de gente que enfia codigo no JSP ( scriptlet ao inves de EL ), que concatena string pra gerar SQL, que não sabe fazer um misero debug remoto IMHO tem tudo pra ser uma aventura das brabas. vcs vão gastar muito tempo pra corrigir erro bobo enquanto q problemas de negocio muito mais cabeludos sṍ vão ser descobertos na homologação ( com alguam sorte ). E ai o chicote canta no lombo.
Bom dia!
Irei aproveitar o tópico e solicitar o auxilio dos mais experientes.
Hoje eu trabalho em um sistema em Java desktop. Gostaria de migrar este sistema para Web.
O sistema é para supermercados, distribuidoras, lojas em geral e possui o básico, cadastros, venda, nfe, nfce, compra e financeiro.
Preciso que este sistema seja leve, mas principalmente seguro, quando digo seguro é com relação a segurança de acesso e também de funcionamento.
Minha pergunta é a seguinte:
Quais tecnologias poderia utilizar?
O sistema da empresa é o produto deles, eles alugam esse ERP por isso o motivo da migração, eles estão perdendo clientes por estarem com uma tecnologia tão atrasada e querem mudar pra java pra se manterem atualizados. No momento não tenho nenhuma equipe ou empresa pra desenvolver, estou solo até o momento.
Estou montando um pitch para apresentar ao cliente esse fim de semana, detalhando os benefícios de se migrar pra web, preços e possíveis diagramas do sistema, estou até trabalhando em um MVP para ele ter um melhor entendimento.
O grande problema é que, sou recém formado não cheguei a trabalhar em empresas e nunca peguei um sistema com essa complexidade. Porém, creio que se fizer a reconstrução do sistema acho que será bem mais fácil. Pois seria como se estivesse construindo um sistema novo com as funcionalidades do velho, mas sem reaproveitamento de código do Delph, algo do zero mesmo.
Estou trabalhando como autônomo a quase um ano e venho desenvolvendo sistemas e aplicativos em java, será que vai ser um fiasco ?
Desenvolva e entregue pequenas partes para homologar e colocar em produção, assim terá sucesso, se der m vai ser pequena e vai evoluir com a experiencia.
Essa é uma parte do sistema deles, de telas principais contei um total de 140.
A respeito do preço estou pensando em cobrar algo como 22 mil, seria muito pouco?
Depois que revisar os requisitos com os gestores e fazer protótipo, parte pro estudo e desenvolvimento com tecnologia que você escolheu. Indicar material vai depender de como está seu nível em Java, o que já fez?
num mundo ideal, eu indicaria vc estudar uma ferramenta de integração continua como o jenkins, estudar um framework de mapeamento objeto relacional como o Hibernate, uma ferramenta de build como o maven, um framework de teste unitario como o junit, ferramentas de profiling e teste de carga como o jmeter, uma ferramenta de controle de versão distribuido como o git, etc.
Qual sistema de armazenamento em dados vocês me aconselham? Vi alguns da Cloud driver que chega a 300R$ por ano mas vi um da Google Drive Enterprise que cobra por usuário, coisa de 29R$ por mês/usuário