Itaú Tech
ItauTech
Published in
8 min readDec 13, 2022

--

Modernização: oito estratégias para endereçar seus desafios

Por André Pereira dos Reis, Analista Sênior de Arquitetura de Tecnologia no Itaú

Imagem com fundo azul. No lado direito, uma foto com duas pessoas na mesa apontando para a tela do computador. No lado esquerdo, está escrito “Os oito Rs da modernização: Conheça as estratégias que podem te auxiliar no desafio de modernizar aplicações.”

O Itaú Unibanco atravessa, atualmente, um processo de modernização de sua plataforma, e metade dela já operará na nuvem até o final de 2022.

No entanto, esse processo não é trivial: uma estratégia de modernização requer uma avaliação cuidadosa, que considere qual o caminho mais adequado para trazer mais qualidade para a jornada de nossos clientes e quais os requisitos necessários para alcançarmos a excelência.

Com base nas situações que encontramos ao longo da nossa jornada até aqui, aplicamos oito opções de estratégias que podem ser usadas em diferentes cenários — cada uma com diferentes benefícios e desvantagens, que devem ser avaliadas dentro de seus objetivos.

Nesse artigo, vamos detalhar cada uma delas para que você entenda qual melhor se encaixa no que você precisa. Vamos nessa?

  1. Rehost

Também conhecido como “lift-and-shift”, o rehost envolve a mudança de servidores e aplicações ou serviços existentes para uma plataforma diferente, sem mudanças de arquitetura, tecnologia ou negócio. Ele também pode ser aplicado em workloads migrados, por meio do uso de emuladores de hardware e sistema operacional de mainframe, sem que sejam feitas mudanças nas aplicações.

Benefícios

  • Essa estratégia fornece melhorias na infraestrutura legada, acelera a migração e a captura de benefícios para o negócio, além de diminuir custos com hardware ou licenciamento de software;
  • Como ela se baseia em servidores virtualizados, os provedores de cloud já possuem soluções que permitem que a transição entre a infraestrutura de servidores on-premises para a nuvem seja simplificada.

Desvantagens

  • Apesar de ser a estratégia mais simples, a migração pode carregar problemas sistêmicos e funcionais de sua aplicação original. Com isso, é provável que ela não traga as melhorias desejadas para o seu usuário.

Exemplos de aplicação

  • A estratégia pode ser utilizada para a movimentação de hardware on-premises para hardware na cloud e para a realocação de infraestrutura on-premises para ambientes virtualizados na cloud;
  • Além disso, ela também pode ser aplicada na emulação de hardware mainframe, que permite execução do sistema operacional Z/OS em instâncias Linux;
  • Outra possível aplicação é em mudanças na infraestrutura de storage.

2. Replatform

Também conhecido como “lift and reshape”, o foco do replatform é tocar o mínimo possível no código central da aplicação e da lógica, apenas para maximizar os benefícios da troca de plataforma. A proposta dessa estratégia é realizar uma modernização para upgrades simples de componentes da aplicação ou serviço.

Benefícios

  • Esforço de migração/modernização é menor que reescrever a aplicação;
  • Menor risco de compliance, de segurança e de disponibilidade do serviço;
  • Aumento da eficiência operacional.

Desvantagem

O escopo do projeto deve ser definido com cautela. Se um replatforming não for bem planejado, documentado e controlado, ele pode exigir mudanças desnecessárias, adição de novas funcionalidades e até repatriação ou compatibilização — resultando em maior tempo de execução e reduzindo o ROI (Return on Investment).

Exemplos de aplicação

  • Conteinerização de aplicações;
  • Novos releases de aplicações: atualizando, por exemplo, uma versão de sistema operacional, poderemos utilizar uma versão mais recente de uma determinada aplicação.
  • Utilização de soluções de emulação de middleware: As APIs de middleware legado e sistema operacional são substituídas, permitindo a portabilidade da aplicação.

3. Refactor

Também conhecido como “lift and reuse”, é uma mudança da estrutura e otimização do código existente, mas sem alterar suas características externas. O refactor é aplicável na remoção de débitos técnicos e para melhorar atributos não funcionais ou estruturais dos componentes. Essa estratégia pode ser complexa porque requer alterações no código fonte, que precisarão ser exaustivamente testadas e otimizadas, levando a possíveis atrasos.

Benefícios

  • Uma aplicação otimizada para cloud pode fornecer um ROI maior e mais rápido, além de aumentar os serviços disponíveis para aplicações cloud native;
  • Um processo de refatoração que considere o uso de tecnologias e conceitos como “dimensionamento automático”, “infraestrutura imutável” e “automação” podem aumentar a resiliência e a confiabilidade da aplicação;
  • É possível incorporar melhores opções de escalabilidade e observabilidade na aplicação.

Desvantagens

  • Migrações para cloud geralmente transitam entre mudanças tecnológicas e culturais. Se a refatoração for muito complexa, todo o processo exigirá um planejamento cuidadoso e com cronograma realista;
  • Pode demandar habilidades que não estão presentes na equipe.

Exemplo de aplicação

  • Otimização de código sem afetar funcionalidades de negócio e mudanças de arquitetura. Por exemplo: uma refatoração visando a utilização de recursos específicos de um determinado provedor de cloud computing.

4. Rearchitect

Também conhecida como “reengineer”, é a modernização da camada de arquitetura da aplicação sem impactar nas funcionalidades de negócio. A rearquitetura é baseada na premissa de que a lógica de negócios e os dados relevantes para a organização está no código da aplicação e nos artefatos relacionados (DDLs, copybooks, manuais de treinamento do usuário). Esses ativos devem ser aproveitados na nova aplicação, mas é importante saber que rearquitetar não é reconstruir do zero.

Benefícios

  • É possível disponibilizar funcionalidades legadas de maneira mais simples. Por exemplo: “serviçar” chamadas para transações do mainframe;
  • A implementação costuma ser mais rápida e mais barata que o rewrite;
  • Parte da lógica de negócios pode passar a residir fora do código da aplicação, e parte do código técnico original pode ser substituída por ferramentas de middleware (ferramentas BPM, mecanismos de regras de negócios, integração de dados, soluções de acesso) para obter maior agilidade;
  • A rearquitetura de uma aplicação pode habilitar o uso de tecnologias e conceitos como dimensionamento automático e infraestrutura imutável, aumentando a resiliência e a confiabilidade da aplicação;
  • Pode incorporar melhores opções de escalabilidade e observabilidade na aplicação.

Desvantagens

  • A exposição das funcionalidades de sistemas legados pode criar gargalos;
  • A substituição de parte da lógica da aplicação por ferramentas de middleware externas aumenta a complexidade da operação;
  • Dependência de outras equipes para o suporte da aplicação.

Exemplos de aplicação

  • Utilização de peças corporativas, como autenticação;
  • Utilização de Lambda para executar código COBOL;
  • Mudança de código (Cobol para Java);
  • Utilização de ferramentas de conversão automática de código.

5. Rewrite

Também conhecida como “redesign”, é uma modernização mais estrutural da aplicação, incluindo grandes mudanças funcionais, revisitando ou até redefinindo os requisitos de negócio. Essa estratégia envolve um desenvolvimento completo de código, com novas definições para dados e testes.

O rewrite requer engajamento e esforço total de desenvolvimento, arquitetura, produtos e testes. Além disso, inclui a criação de microsserviços, tecnologias cloud natives, serverless, databases não compartilhados, profundas mudanças no design de negócios e mudanças em toda a estrutura de dados e de arquitetura.

Benefícios

  • Permite uma revisão geral até mesmo dos requisitos funcionais;
  • A reescrita em forma de soluções cloud natives, é operacionalmente mais econômica;
  • Permite uma melhor utilização da abordagem DevSecOps;
  • Aprimoramento da resiliência e escalabilidade;
  • Observabilidade, segurança e compliance mais bem geridos;
  • Melhor utilização dos recursos da cloud.

Desvantagens

  • Custos elevados para implementação;
  • Projetos mais longos e complexos.

Exemplos

  • Desenvolvimento de novo código;
  • Novos requisitos de negócio;
  • Evolução do modelo de dados;
  • Customizações e mudanças complexas na aplicação.

6. Repurchase

Também conhecido como “drop and shop”, aqui considera-se a compra, configuração e customização de COTS (abreviação para “software de prateleira”, em inglês) ou SaaS (Software as a Service). A aplicação antiga é desativada e substituída de acordo com novos requerimentos e necessidades de negócio ou técnicas.

Benefício

  • Você receberá suporte do fornecedor.

Desvantagens

  • Dificuldade para implementar customizações;
  • Falta de acesso ao código fonte da aplicação.

Exemplos de aplicação

  • Aquisição de uma nova solução;
  • Storage: saindo do On-premises e indo para cloud.

7. Retain

Também conhecido como “not moving”, é praticado quando não há nenhuma ação para ser realizada, e manter a execução da aplicação local atual é a melhor opção. Vale lembrar que aplicações “retidas” devem ser revistas no futuro. Nesse caso, você deve migrar apenas o que faz sentido para a empresa.

Benefício

  • Nenhum.

Desvantagem

  • Problemas existente serão mantidos.

Exemplos de aplicação

  • Dependências físicas não resolvidas;
  • Aplicações com pré-requisitos (técnicos, legais, regulatórios, segurança etc.) que não podem ser atendidos em cloud;
  • Cenários em que não há benefícios de negócios, técnicos ou financeiros para se migrar para cloud.

8. Retire

Também conhecido como “decommission”, essa prática envolve a desativação de aplicativos obsoletos. Isso inclui remover o aplicativo da produção, mantendo o acesso apenas aos dados históricos. Um item crítico a ser considerado é como os dados podem ser recuperados posteriormente, o que geralmente envolve a migração dos dados para outro repositório. O retire também pode ser o encerramento de um sistema legado que foi modernizado.

Benefícios

  • Diminuição da complexidade do ambiente;
  • Redução de custo e riscos com o desligamento de aplicações obsoletas ou em backlevel.

Desvantagem

  • Podem surgir consumidores não mapeados do sistema que está sendo descomissionado.

Exemplo de aplicação

  • Aplicações que fazem parte de programas de descomissionamento.

A modernização de sistemas é um processo caro, tedioso, demorado e que demanda um grande esforço. A escolha de uma estratégia de modernização que está de acordo com os OKRs definidos pela organização ajuda a simplificar todo esse processo.

Por fim, escolha a abordagem de modernização que terá o maior efeito e valor para a organização, mapeando as oito opções de modernização em termos de seu efeito sobre tecnologia, arquitetura, funcionalidade, custo e risco.

Lembre-se! A modernização é uma jornada contínua, não uma única viagem.

--

--