Migração de sistemas legado ou mal estruturados – Parte 1

Migração de sistemas legados é um assunto que pode render horas, dias, semanas ou meses em qualquer empresa, algo que considero normal, pois envolve uma quantidade enorme de variáveis e traz grandes desafios. Não precisamos ir muito longe para identificar sistemas legado e os desafios para mantê-lo nos dias de hoje.

Sistemas que cresceram muito rápido e em um curto espaço de tempo, menos de 1 ano por exemplo, pode não ser considerado legado, entretanto na maioria das vezes este crescimento rápido e não planejado não irá suportar o crescimento da empresa a médio e longo. Com isso, o assunto migração entra em cena novamente.

Meu objetivo nesta série de artigos é ir a fundo no tema, trazer um pouco da minha experiência, sugerir caminhos e alternativas para uma migração menos dolorosa, além de recomendar soluções que irão ajudá-los. Vale lembrar que não existe receita de bolo e vocês verão isso aqui, cada caso é um caso e ninguém melhor do que você para saber dos problemas nas soluções desenvolvidas por você ou sua empresa. Faça seus comentários ao final do artigo, eles irão agregar e ajudar outros a refletir sobre que caminho tomar na neste processo, além de me ajudar nos próximos artigos.

Se não é fácil e sabemos, então por onde começamos?

Todos tem de estar desarmados

A primeira coisa a se fazer neste processo é entrar desarmado, aberto a mudança, aceitar ideias, críticas e sugestões, expor o que você pensa e ouvir, ouvir, ouvir e ouvir muito. Todos aqueles envolvidos neste projeto, deverão estar conscientes disso e preparados para mudar seu comportamento, a pior coisa neste longo projeto é ter um grupo de pessoas remando contra, enquanto todos os outros estão remando para frente. Trabalho em equipe será fundamental, críticas, sugestões e debates calorosos existirão, mas todos tem que estar cientes de que é para o melhor do projeto.

Incorporar métodos ágeis como SCRUM já na fase inicial do projeto pode ser de grande ajuda, as práticas ágeis enfatizam muito a colaboração, trabalho equipe, interação entre as pessoas, etc. Isso pode começar a estabelecer um ponto de equilíbrio na equipe e reforçar de forma continua o trabalho em equipe.

Por que migrar?

Faça esta pergunta a si mesmo “Por que migrar?”, esqueça por um instante o famoso ditado “Time que está ganhando não se mexe”, ou seja, “sistema que está funcionando não se mexe”.

A grande maioria dos sistemas ERP desenvolvidos na década de 80 e início dos anos 90 adotaram a arquitetura Cliente/Servidor (Cliente/Server) e foram desenvolvidos para plataforma Desktop, ao longo do tempo isso foi mudando, a web se tornou uma plataforma mais atrativa e hoje vivemos no mundo dos dispositivos móveis. Naquela época muitas soluções baseadas em Web surgiram, mas o avanço da tecnologia foi tão rápido que essas antigas aplicações web não foram bem estruturadas, trazendo vários outros problemas. Enfim, integração entre plataformas e diversidade de meios de acesso tornou o modelo Cliente/Servidor obsoleto.

Considere como exemplo sistemas ERPs legado ou outros similares, reflita sobre o cenário mencionado no parágrafo anterior e traga para sua realidade, seus clientes hoje querem acesso as informações via web, via iPhone, iPad, Android e seus muitos celulares e tablets e assim por diante. A recente pesquisa que fiz aqui no blog mostrou que 75% dos entrevistados irão desenvolver aplicações para mobile e 45% irão migrar suas aplicações desktop para web em 2013. Como você faria essa migração hoje de forma rápida e escalável? Como você integraria apps com seu backend? Quanta regra de negócio seria reutilizada? Já se perguntou?

Seja Desktop ou Web, se seu sistema está baseado em Cliente/Servidor, a eficiência da sua empresa está comprometida pois você está o tempo todo fazendo remendos para atender as necessidades do mercado, isso eleva a dificuldade de manutenção do código, diminui a eficiência da sua equipe, aumenta o seu custo e o custo do seu cliente, ou seja, diminui sua competitividade no mercado.

Já deve fazer um tempo que seu cliente pede para que TODO o sistema seja Web, ele faz questão de dizer TODO O SISTEMA, ele não precisa de tudo e sim certos módulos importantes, como por exemplo relatórios, gráficos estatísticos em tempo real, acesso ao cadastro de clientes, etc. Mais uma vez arquitetura Cliente/Servidor se torna um problema, o seu cliente disse que os relatórios tem de estar acessíveis pela web e relatórios na web podem trazer uma carga enorme em todo o sistema. Como você atenderia a estas solicitações? Não precisa me dizer dos remendos, eu já imagino, replicar os dados para um servidor web, manter sincronizado, etc.. Isso é caro, não é escalável e se torna um remendo temporário que irá rasgar em pouco tempo.

Já se perguntou quanto custa manter seus sistemas Desktop? Depois de muitos anos sua aplicação virou um grande sistema, com dezenas de módulos, integrações, recursos, dependências, etc.. Para responder essa pergunta, você precisa se fazer as perguntas abaixo:

  • Quantos problemas de instalação do sistema são registrados mensalmente?
  • Quantos problemas de compatibilidade de Windows são registrados mensalmente?
  • Quantos problemas de atualização do sistema são registrados mensalmente?
  • Quantas visitas mensais os técnicos do suporte técnico fazem a clientes para resolver problemas que não são possíveis de resolver remotamente?
  • Quanto representa essa grande estrutura de suporte técnico no seu custo final?
  • Que crescimento você estima para o negócio se todo sistema estivesse na Web?
  • Quais diferenciais a web traria para o seu negócio?
  • Quanto tempo irá levar para você desenvolver uma aplicação Android com base na atual infra que sua empresa oferece?
  • Etc…

Provavelmente você não tenha a resposta para todas, então é hora de começar a buscar e mensurar estes custos.

Aplicações desktop aumentam o custo final, principalmente por causa do alto-custo do suporte técnico, não estou dizendo para mandar embora metade da equipe de suporte técnico, muito pelo contrário, a equipe de suporte técnico tem um grande conhecimento do sistemas e pode ser reutilizado em outras funções, como desenvolvedores, testadores, analistas, etc…

Que tal oferecer sua solução como serviço (SaaS), o negócio do seu cliente não é TI, porque não ter  uma infra-estrutura na nuvem e oferecer sua solução? Cobrar por este serviço.

São inúmeros os pontos a se pensar, os pontos aqui mencionados são alguns entre os milhares e talvez não seja razão para você, o que é totalmente aceitável da minha parte, entretanto reflita sobre outros pontos que você acha importante e faça sua própria análise.

Vou ficando por aqui com esta primeira parte, enquanto isso reflita sobre as razões que o levaria a migrar sistemas legados ou mal estruturados.

38 respostas
  1. Alfeu
    Alfeu says:

    Tenho um ERP desenvolvido com banco de dados baseado em stored procedures e views hoje a manutenção esta bastante complexa devido relacionamentos entre procedures views tabelas.
    Vejo que usando servidor de aplicação posso abandonar as stored procedures, views mas a performance nao sei se é boa viavel.
    O que sugeres???
    Com stores procedures nao preciso parar o sistema para adicionar um recurso novo, ou testar um modulo ja servidor de aplicação parece que tenho de parar tudo pra atualizar.
    Qual será o caminho?

    Responder
  2. William
    William says:

    É Andreano, sao muitas variaveis envolvidas. No que diz respeito a ERP, o sistema ser todo Web é totalmente viavel, mas no caso de aplicacoes mais especificas, como o caso da minha que funciona com rastreamento de veiculos via GPRS, ser multiplataforma é fundamental. Existe um modulo que se nao for nativo do SO, simplesmente nao tem performance. Alfeu, quanto ao seu problema, um asolucao que eu adoto aqui é no servidor de aplicacao ter varios modulos rodando independentes, e comunicando entre si de alguma maneira, via socket por exemplo. Ai e precisar dar alguma manutencao é so parar aquele modulo que os outros ficam enfileirando requisicoes ate o tal modulo parado voltar ao normal. Concordo que nao é facil, mas quanto mais eficiente mais dificil mesmo ne? Espero ter ajudado.

    Responder
  3. Vilmar Diogo
    Vilmar Diogo says:

    Andreano, muito importante este tema abordado. Na minha empresa, estamos trabalhando para que o sistema se torne um ERP, mas confesso que não esta sendo fácil, muitas dúvidas em quais tecnologias usar na aplicação.

    Responder
  4. Milton
    Milton says:

    Soluções web resolveriam muitos problemas, mas como fazer um PDV web ou que trabalhe on/off line? As variantes são muitas mesmo e cada caso é um caso. Mas que será preciso ‘migrar para nuvens’, isto é fato!

    Responder
    • Andreano Lanusse
      Andreano Lanusse says:

      Milton pode se ter um PDV 100% web sem problemas, já vi vários.

      Entretanto como alguns colegas aqui mencionaram, existe legislação que não homologa sistemas web, caso do PAF-ECF

      Vale lembrar que eu mencionei como exemplo migrar de desktop para web, mas migrações podem ser de uma tecnologia para outro e se manter em desktop, ou aqueles que ainda tem aplicações rodando em DOS e querem migrar para desktop windows.

      Existem vários tipos de migração

      Responder
  5. Paulo Vale
    Paulo Vale says:

    Parabéns, o post é muito bom. Acredito em aplicações para web, entretanto, mudar um sistema que já tem mais de 20 anos no mercado e já passou por inúmeras transformações de plataformas, ufa… Não é fácil. Mas acredito nisto e já estamos pensando em mudar novamente. O segredo para mim está sendo “Representação”. Uma empresa se especializa em desenvolver e várias revendem… Nossa empresa tinha sistema próprio para inúmeros segmentos e hoje contamos com representações de sucesso e apenas um sistema próprio. A lucratividade por incrível que pareça aumentou. Fica a dica.

    Responder
  6. Rafael
    Rafael says:

    Na empresa que trabalho estamos migrando um sistema com 10 anos de idade, de Client-Server para Multi camadas, está dando muito trabalho, estamos continuando no desktop para poder utilizar todo código escrito atualmente, pois continuaremos na mesma linguagem, imagine só ter que reescrever quase tudo, por exemplo, ter que reescrever o client inteiro para rodar no browser, acreditamos ser inviável, pelo fato de que mesmo fazendo desktop, poderemos escrever alguns dos módulos mais usados para browser e assim extrair o melhor de 2 mundos, em fim, após fazer algumas das perguntas acima foi essa a conclusão que tiramos.

    abraço a todos!

    Responder
  7. Yuri Alexandre
    Yuri Alexandre says:

    Ansioso pela continuação. Talvez sejam abordadas as principais alternativas e então nos enquadremos em uma delas.
    Curva de aprendizado e ROI também vão pesar na hora de decidir reescrever todo o sistema para a Web. E depois de decidido, qual a melhor estratégia de migração?
    Vamos debater.

    Responder
    • Andreano Lanusse
      Andreano Lanusse says:

      Sem dúvida Yuri, curva de aprendizado e ROI são dois fatores muito importantes. Vamos falar aqui sobre migrações paralela, modular, total e outros tipos.

      Responder
      • Marcelo B
        Marcelo B says:

        Parabéns pelo iniciativa desta discussão. Sem dúvida muito relevante. Estou tentando iniciar esta migração de um sistema de 15 anos – Client/Server e confesso que já adiei várias vezes. Acho que desta vez vai… Aguardo ancioso os próximos posts…

        Responder
  8. Wellington Schaide
    Wellington Schaide says:

    Parabéns pelo post, passei por uma migração de sistema recentemente e garanto que não foi nada tranquilo, mas já passamos pela fase mais complicada.

    Responder
  9. JORGE CALDAS
    JORGE CALDAS says:

    BOM DIA

    ESTOU TENDO ESTE PROBLEMA DE SISTEMA DESENVOLVIDO A MUITO TEMPO, COM A REALIDADE DE MUDANÇA DRÁSTICA E CRESCIMENTO ESPERADO E O NÃO SUPORTE TOTAL PARA AS NOVAS FUNCIONALIDADES POIS O MESMO FOI DESENVOLVIDO A MEDIDA QUE MUDAVA AS FORMAS DE TRABALHO DA ANTIGA EMPRESA PORÉM NÃO FOI VISADO O MERCADO COMO UM TODO AI HOJE PRECISO DO MESMO EM OUTRAS EMPRESAS QUE TRABALHAM OU PELO MENOS AGEM DIFERENTEMENTE DA ANTIGA EMPRESA QUE CRIAMOS O SISTEMA. MAIS UMA NOVA VERSÃO JÁ ESTÁ SENDO PROJETADA E TAMBÉM SENDO ESTUDADA A POSSIBILIDADE DE MIGRARMOS PARA QUE TODA INFORMAÇÃO QUE DIZ RESPEITO AO CLIENTE QUE NA MAIORIA DAS VEZES PRECISA DAS INFORMAÇÕES A CURTO PRAZO E NÃO MORAM TÃO PERTO DA CIDADE..

    Responder
  10. Rodolpho
    Rodolpho says:

    Muito bom o post! Na empresa onde trabalho, temos uma aplicação client/server (em Delphi) que roda a mais de 15 anos. Estou em um projeto cujo o propósito é portar as funcionalidades do sistema para a web porém o que está facilitando muito é a arquitetura do sistema ser em “camadas logicas”. Nossas rotinas de “core” seriam inviáveis reescrevê-las em outra tecnologia quando aplicamos o ROI.

    Responder
  11. Rogério Martins Viana
    Rogério Martins Viana says:

    Eu acredito que uma base de dados bem modelada, que respeite integralmente o modelo relacional, aliado a objetos de negócios o mais próximo possivel da realidade é o grande trunfo pra que todo ERP possa sobreviva as novas tecnologias.

    Responder
  12. Alair
    Alair says:

    Excelente artigo Andreano. Já estou aguardando a continuação.
    Realmente esse assunto levanta muitos questionamentos: mercado alvo, continuidade dos sistemas, custos e prazos de migrações, curvas de aprendizado, tecnologia a ser utilizada e por ai vai. Seria necessária uma gestão de projetos muito bem feita para dar certo.
    Gostaria de ver algumas dicas e orientações nos próximos artigos e se possível, que os usuários postassem suas experiências aqui. Isso pode ser de grande ajuda para aqueles que vão passar por esse processo nos próximos anos. Acredito que esse processo seja inevitável se alguém pretende ter um software competitivo no mercado. Outra coisa legal seria ver qual o caminho que as grandes softhouses estão tomando com relação a esse assunto.
    Um grande abraço e parabéns pelo post.

    Responder
  13. Douglas
    Douglas says:

    Muito bom post Andreano. Estamos passando por um grande migração na empresa onde trabalho, passando de Delphi 6 para XE2, convertendo todo um ERP que se utilizava de vários componentes de terceiros, o que fez a migração virar um inferno! Creio que dificilmente as empresas como metalúrgicas irão abandonar 100% o conhecido PC nas mesas, mas soluções que agregam valor ao ERP para o tornar multiplataforma são extremamente interessantes.

    Responder
  14. Erivando Ramos
    Erivando Ramos says:

    Estou trabalhando atualmente na migração de um sistema desktop desenvolvido em 2004, minha maior dor de cabeça é com o banco de dados porque nesta nova versão estou usando O.O. e utilizo um Framework para persistência dos dados e na versão legada o sistema é procedural e boa parte da regra de negócio fica no banco.

    Responder
  15. Almir
    Almir says:

    A única certeza da vida é a mudança e ainda, bem que temos elas pois são elas que nos fazem ter um ordenado no final do mês, +- de 95 até 2005 a tendência foi migrar do modo texto para o visual, para o cliente/Servidor para o SQL, e desta década para frente será a conectividade e portabilidade de tecnologias, há um mercado imenso para ser explorado, a ideia de mudar algo que ainda não esta pronto ou já esta funcionando redondo, causa horrores em qualquer um, mas é preciso se antecipar as tendências de mercado, pois somente assim poderemos participar dessa empolgante faze da tecnologia, até minha TV tem internet, eu queria abrir meu Delphi e desenvolver algo para usar nela, mas infelizmente a paulada é mais embaixo.
    Com tanta opção no cardápio de tecnologia fica difícil escolher uma para se trabalhar, algumas podem vingar, outras podem morrer de um ano para outro, confesso que isso me tira o sono, pois tenho que manter meu sistema funcionando para atender meus clientes e ao mesmo tempo estar atualizado com a galopante evolução tecnológica.

    Responder
  16. Júlio César M. Ferreira
    Júlio César M. Ferreira says:

    A migração de sistemas é algo realmente complicado. Sobre alguns comentários relacionados ao PAF-ECF, existe uma peculiaridade sobre o assunto: é permitido sim, pela legislação brasileira, que um PDV seja desenvolvido em ambiente web. A regra existe apenas que o sistema possa operar em modo offline, e sabemos que páginas da web, como sistemas, podem rodar em containers locais, na mesma máquina, de forma a gerar uma aplicação local.

    Responder
  17. Abelardo Mattos
    Abelardo Mattos says:

    Este artigo veio de encontro a uma realidade que estamos vivendo. A própria dinâmica nas inovações nos impõem um reaprendizado quando cai na preferência da comunidade de T.I. . O argumento “Time que está ganhando não se mexe” só é válido quando está realmente ganhado e eu rebateria com outro ditado: “Água parada cria mosquito”. Tenho 62 anos e sou um eterno estudante. Precisamos apenas ter o cuidado de manter o que é bom, que funciona bem. Hoje nos apoiamos em padrões definidos por comitês internacionais e é assim que deve ser. temos que ter o senso crítico de não nos deixar levar por modismos tecnológicos que em alguns casos não duram nem um ano. Quantos de nos utilizamos o Object Pascal, Delphi, PHP, C++, MySQL, SQL Server, Oracle, Cliente/server, WEB Server, Etc.. . O tempo de aprendizado ainda não terminou para ninguém. Aí vem mais novidade para o desenvolvedor e o tempo vai passando…
    Sou do tempo do Assembler, do Fortran e do Cobol e eles ainda habitam o meu porão de conhecimentos. Mas preciso constantemente fazer reformas no andar de cima para os novos moradores. Se eles trabalharem com eficácia terão moradia permanente e aposentadoria no devido tempo, mas se forem pirotécnicos serão despejados.

    Responder
  18. Mauricio
    Mauricio says:

    Falando em nuvem, deêm uma olhada na pesquisa abaixo, fiquei espantado com os números apresentados, imagino o Diretor de uma empresa, que não é da area de informática, vendo esses números.

    Dinheiro e Tecnologia – Os riscos da nuvem – Nº edição: 798 | 25.JAN.13 – 19:30
    A computação em nuvem pode trazer riscos para as empresas, se for utilizada de modo descuidado

    http://www.istoedinheiro.com.br/blogs-e-colunas/coluna/10_DINHEIRO+E+TECNOLOGIA

    Responder
  19. Alfeu
    Alfeu says:

    Outro ponto importante ! O desktop por mais que aja evolução win32, win64 ou futuro win124 etc sempre e compativel com dos, win32 principalmente para sistemas windows.
    Ja os navegadores nao tem como saber se o daqui a 5 anos vai estar compativel com a aplicação ou ter que reescrever muita coisa para funcionar, dimencionamento de telas erros etc.
    Vale pensar, imagino que migrar alguns modulos do sistema talvez seja mais rapido mais viavel, muitos modulos se mudar dificilmente ficaria com a mesma performance e praticidade.

    Responder
  20. Alexandre da Silva
    Alexandre da Silva says:

    Na empresa onde trabalho temos um sistema cliente-servidor que funciona a mais de 15 anos. Ja tentamos iniciar um projeto de migração varias vezes, mas não conseguimos ir em frente. Atualmente, desistimos de tentar novamente pois conhecemos o Go-Global, um software de virtualização da aplicações que, para nós, serviu como uma luva.

    Responder
  21. Marcello Dias
    Marcello Dias says:

    Só agora em 2018 estão anunciando uma ferramenta que não fica devendo em nada para
    os frameworks existentes em outras linguagens.
    Intraweb 17.

    Responder

Trackbacks & Pingbacks

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


This site uses Akismet to reduce spam. Learn how your comment data is processed.