Please enable JavaScript.
Coggle requires JavaScript to display documents.
Evolução e manutenção de software - Coggle Diagram
Evolução e manutenção de software
Artigo 1
Conceito:
Refere-se à criação de um novo sistema em torno do existente, substituindo-o gradualmente
Baseado na natureza, uma metáfora da planta figo estrangulador
Funcionamento:
O antigo sistema é "estrangulado" ao longo do tempo, à medida que suas funções são assumidas pelo novo
Funcionalidade é gradualmente transferida para o novo sistema
Estratégia fundamental: EventInterception e AssetCapture
Vantagens:
Monitoramento cuidadoso do progresso através de lançamentos frequentes
Redução de riscos em comparação com uma reescrita completa
Evita recursos desnecessários que as reescritas geralmente geram
Desvantagens:
Pode ser percebido como mais custoso (embora o autor do artigo discorde)
Pode levar mais tempo do que uma reescrita completa
Exemplos de cenários de aplicação:
Projetos onde o sistema atual é muito complexo ou crítico para ser completamente reescrito de uma vez
Situações onde o valor contínuo e a capacidade de monitorar o progresso são importantes
Projetos onde a minimização do risco é crucial
Artigo 2
Conceito
Técnica para implementar mudanças em grande escala em um sistema de software de maneira gradual
Permite lançamentos regulares durante o processo de mudança
Funcionamento
Quando todo o código do cliente usa o novo fornecedor, o antigo é excluído. A camada de abstração também pode ser excluída, se não for mais necessária
Constrói-se um novo fornecedor que se comunica com a parte do código do cliente usando a mesma camada de abstração
Cria-se uma camada de abstração entre o código do cliente e o módulo, biblioteca ou estrutura a ser substituído(a)
Vantagens
O sistema pode ser compilado e executado corretamente o tempo todo, permitindo a entrega contínua durante a substituição
Permite a coexistência de várias implementações no sistema de software
Desvantagens
Pode exigir a divisão dos recursos do fornecedor em subcomponentes e a execução do procedimento de migração um subcomponente de cada vez
Em alguns casos, pode não ser possível trocar o fornecedor para apenas alguns clientes, tendo que fazer a troca toda de uma vez
Exemplos de cenários de aplicação
Situações em que é necessário substituir uma estrutura de mapeamento objeto-relacional ou uma estrutura de interface de usuário da Web
Quando é importante manter a capacidade de lançar versões regularmente durante o processo de mudança
Artigo 3
Abordagem: Execução Paralela
Funcionamento: Chamada simultânea da implementação antiga e da nova para comparar os resultados.
Conceito: Estratégia para garantir que mudanças drásticas não quebrem o sistema.
Vantagens:
Utilização de dados reais de produção para teste.
Implantação gradual por endpoint.
Desenvolvimento incremental.
Reversão fácil em caso de problemas.
Identificação de bugs no monólito.
Teste de carga para o novo serviço.
Desvantagens e limitações:
Aumento da carga em todos os componentes.
Necessidade de refinar as comparações.
Considerações de privacidade e proteção de dados.
Dificuldade em comparações não triviais.
Limitações em endpoints não idempotentes.
Requer tempo e esforço para configuração adequada.
Requer avaliação cuidadosa dos benefícios em relação ao trabalho necessário.
Exemplos de cenários para aplicar a abordagem:
Utilização do padrão para extrair a lógica de retornos de um aplicativo monolítico para um novo microsserviço.
Aplicação do padrão para substituir um componente legado por uma versão mais nova.
Utilização da execução paralela para garantir que mudanças significativas não causem problemas no sistema.
Cenário de negócios em Zalando:
Crescimento contínuo do negócio e necessidade de lidar com um ambiente em constante mudança.
Desafios de lidar com mudanças em um ambiente com arquitetura de microsserviços.
Necessidade de minimizar a regressão de mudanças no software em produção.
Artigo 4
Conceito de cada abordagem:
Peru Frio:
O sistema legado é reconstruído do zero usando plataformas padrão ou pacotes de terceiros como base.
Embalagem / Fita Adesiva:
Novas tecnologias são utilizadas para resolver problemas específicos, mantendo a arquitetura e tecnologia principais do sistema.
Substituição Gradual:
Ao longo do tempo, os demais componentes/blocos funcionais são gradualmente substituídos até que todo o sistema seja reconstruído.
Funcionamento de cada abordagem:
Peru Frio:
O sistema é reconstruído do zero, utilizando as melhores práticas e tecnologias modernas.
Embalagem / Fita Adesiva:
A arquitetura principal do sistema legado é mantida, enquanto problemas específicos são abordados com tecnologias mais recentes.
Substituição Gradual:
O processo é repetido até que todos os componentes/blocos funcionais tenham sido substituídos e o sistema legado tenha sido completamente reconstruído.
Vantagens e desvantagens identificadas em cada abordagem:
Peru Frio:
Vantagens:
Maior retorno e vantagem competitiva.
Arquitetura moderna e flexível.
Melhora significativa nas medidas operacionais e eficiência dos negócios.
Oportunidade de redefinir e melhorar os processos de negócios.
Desvantagens:
Abordagem arriscada. Possibilidade de problemas de qualidade afetarem as operações comerciais.
Probabilidade de falha ou estouro de custos.
Resistência dos usuários finais à mudança.
Embalagem / Fita Adesiva:
Vantagens:
1 more item...
Exemplo de cenários que façam sentido aplicar cada uma das abordagens:
Peru Frio:
Quando a tecnologia atual é cara para licenciar e outras empresas estão migrando para pilhas mais baratas.
Embalagem / Fita Adesiva:
Quando a empresa está envolvida em um grande programa que consome muita mão de obra de TI e tem um apetite por risco limitado.
Substituição Gradual:
Para externalizar e consolidar regras de negócios dispersas usando uma plataforma de gerenciamento de regras de negócios.
Para eliminar o acoplamento rígido dos sistemas através da implementação de um Enterprise Service Bus (ESB).