Estratégias para modernização do legado

Talvez nunca tenha sido tão essencial como nos dias de hoje a preocupação em garantir um processo de modernização contínua. A velocidade que se lança novos frameworks, linguagens e tecnologias é assustadora e, simplesmente jogar todos sistemas fora e refazê-los, não é uma opção viável. (E nem deveria).

Neste Eximia Talks, Fernando Paiva, juntamente com o engenheiro de software Bruno Joaquim e o consultor Gabriel Kohlrausch, falam sobre os desafios de se modernizar os sistemas legados nas corporações, compartilhando suas experiências vividas na prática.

Logo no início da conversa, Gabriel destaca a importância de existir um plano de modernização com motivações e resultados explícitos. Pois, infelizmente, ainda é comum a motivação ser focada apenas na atualização da stack de tecnologia ou o desejo de utilizar um estilo arquitetural da moda como microsserviços, por exemplo. Embora a modernização possa passar por esse caminho, essa não deveria ser razão suficiente para sustentar esse plano.

A recomendação direta neste caso é mapear os objetivos de negócio e atributos de qualidade que precisam ser atingidos antes mesmo de iniciar essa jornada de modernização. Garantindo que se tem explícito como esse trabalho vai ajudar a melhorar o resultado da empresa.

Outro ponto importante destacado está relacionado aos critérios para definir o que fazer primeiro na hora de modernizar. Fernando e Bruno sinalizaram que um bom indicativo pode ser o volume de dívidas técnicas que se tem mapeado e quais os “juros” de cada uma delas. O propósito é garantir que se priorize aquilo que tende a trazer mais resultado com o menor custo. Além dessa abordagem, contar com métricas do processo, como cycle time e a vazão do time dos times de desenvolvimento também podem ser um bom indicador para definir onde seu ecossistema carece de mais intervenção.

Fernando também alertou que, em sua vivência prática, em diferentes projetos de modernização, estratégias “big bang” geralmente possuem um risco muito alto e tendem a trazer resultados desastrosos. Por essa razão é recomendável considerar um padrão de estrangulamento que, além de simplificar o processo, traz grandes benefícios em diminuir o risco, através de uma abordagem incremental.

Mesmo utilizando padrões de estrangulamento, uma decisão relevante a ser tomada será a respeito da granularidade de cada um dos serviços novos que estão sendo criados. Gabriel chamou a atenção para tomarmos cuidado com o tamanho desses serviços. Um ecossistema pulverizado implica em custos adicionais que possivelmente você não necessita.

Na sequência, o Bruno explanou caminhos que ele tem utilizado para realizar o estrangulamento de sistemas monolíticos legados. Em sua visão, o primeiro passo está em definir os contextos, delimitados através de uma abordagem baseada em Domain Driven Design. Isso ajuda a evitar anti-patterns como “serviços baseados em entidades”, mantendo a discussão focada no domínio da aplicação e próxima do especialista de negócio.

Independente da estratégia de modernização adotada, é um consenso que o banco de dados é um ponto crítico e pode facilmente representar um gargalo na hora da modernização. Isso se dá, pois à medida que novos serviços vão sendo construídos, eles precisam ter seu próprio banco de dados, mas ao mesmo tempo uma forma desacoplada de interagir com o legado, para garantir o nível de consistência adequado. Bruno apontou alguns caminhos:

As formas mais comuns de lidar com os dados do legado e do moderno são:

  1. Intervenção direta na base de código legado: Esta estratégia basicamente consiste em realizar alterações pontuais no legado com o objetivo publicar dados através de eventos/notificações, de preferência utilizando tecnologias assíncronas (broker de mensageria), para serem consumidos, processados e persistidos pelos novos serviços. Uma vantagem dessa abordagem ativa, é que a “intencionalidade” dos eventos produzidos é maior, pois são gerados em momentos onde são executadas as “regras de negócio” dentro do monolito, por exemplo, usuário cadastrado, pedido enviado, pedido cancelado, etc. Entretanto, dependendo da tecnologia utilizada no legado, essa estratégia pode ser inviabilizada por falta de bibliotecas compatíveis com novas tecnologias utilizadas como “ponte” entre os serviços. Também tem como desafio o risco de criar bugs em um sistema legado estável e, para ser razoável, precisa existir ainda, um time capaz de alterar e dar manutenção no legado.
  2. Integração de dados via CDC: Nessa abordagem passiva, os dados são capturados na “origem”, ou seja, tabelas do banco do monólito de interesse, são monitoradas para que as alterações que ocorram sejam capturadas e publicadas em forma de evento. Essa alternativa é uma ótima opção para casos onde o legado é “hostil” de ser alterado ou até casos onde a maior parte das regras de negócio são encontradas em procedures no banco de dados. A principal desvantagem dessa técnica é que as alterações capturadas, geralmente não refletem toda a informação necessária, sendo necessário, “escutar” diferentes tabelas para que o evento seja gerado com todas as informações necessárias, para poder ser integrado em outros sistemas. Neste post, mostramos algumas formas de implementação de técnicas de CDC.
  3. Consultas recorrentes a base de dados: Uma forma bastante simples que em caso de menor escala pode ser bastante útil, é criar um pooling que consultas a determinadas informações que precisamos monitorar. Sua principal vantagem é a facilidade de implementação. Porém, ela possui restrições para cenários com grande escala ou que a taxa de atualização seja muito alta.

A conclusão deste Eximia Talks é que se faz necessário um bom planejamento antes de iniciar a modernização e é altamente recomendado contar com pessoas que já tiveram experiência nesse tipo de trabalho. Também é um consenso, que abordagens incrementais tendem a ser mais interessantes que aquelas “big bang”, tanto para mitigar riscos, como para validar a própria estratégia de modernização adotada.

Vários dos temas abordados, ainda podem ser bastante detalhados e explorados. Se este é um tema que te interessa ou se ficou alguma dúvida, nos deixe saber nos comentários no youtube para que possamos continuar essa série do Eximia Talks sobre modernização de legado.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Bruno Joaquim
Desenvolvedor .NET/NodeJs e especialista em Kafka com experiência em startups e grandes empresas

COAUTORES

Fernando Paiva
CTO Consulting, especialista em arquitetura, DDD e execução de estratégias de tecnologia
Gabriel Kohlrausch
Arquiteto de software com experiência executiva em tecnologia

INSIGHTS EXIMIACO

Arquitetura de Software

Evolução e modernização de aplicações para suportar mudanças de escala.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Software

Consciência Situacional: O Sucesso do Software em Constante Evolução

Arquiteto de Software com experiência executiva em Tecnologia
Arquitetura de Software

Automação de Processos de Negócio: A Chave para Operações Eficientes e Lucrativas

Arquiteto de software e solução com larga experiência corporativa
Arquitetura de Software

A Evolução da Arquitetura de Software para Produtos Digitais Escaláveis

Arquiteto de Software com experiência executiva em Tecnologia
0
Queremos saber a sua opinião, deixe seu comentáriox
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

Estratégias para modernização do legado

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Estratégias para modernização do legado

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?