Como modernizar um mainframe COBOL

Quatro estratégias, o que cada uma realmente custa e como saber de qual delas uma determinada carga de trabalho precisa. Escrito para as pessoas que precisam aprovar a decisão.

A maior parte dos conselhos sobre modernização de mainframe se resume a uma única questão: migrar ou não. Essa visão é o motivo pelo qual tantos programas estagnam. Uma grande instituição não tem uma única carga de trabalho de mainframe; ela tem centenas, e nem todas merecem o mesmo tratamento. A decisão útil é tomada por carga de trabalho, e há quatro respostas defensáveis.

As quatro estratégias

01

Rehost

Mover a carga de trabalho como está para um emulador ou instância de nuvem sem alterar o código.

Good for
Cargas de trabalho em que a lógica de negócios ainda está correta e a pressão é o custo de hardware, a capacidade ou a saída de um data center.
What it costs
A opção mais rápida e de menor risco por carga de trabalho. O código continua em execução, portanto o comportamento é preservado quase por construção.
The catch
Você moveu o problema, não o resolveu. O COBOL continua sendo COBOL, as regras de negócios não documentadas continuam não documentadas e as pessoas que o entendem continuam sendo as únicas que o entendem. Fazer o rehost de uma carga de trabalho que você não consegue explicar ganha tempo e nada mais.
02

Replatform

Substitua a camada de runtime, como banco de dados, gerenciador de transações e agendador, mantendo o código da aplicação praticamente intacto.

Good for
Escapar do licenciamento por MIPS ou de um subsistema em fim de vida útil quando a própria lógica da aplicação é sólida.
What it costs
Um caminho intermediário. Menos risco do que uma reescrita, mais benefícios do que um lift-and-shift.
The catch
As interfaces entre o código da aplicação e o runtime são onde residem décadas de premissas não documentadas. A transição de DB2 para PostgreSQL não é um simples localizar e substituir. Os níveis de isolamento, as sequências de ordenação e o tratamento de nulos diferem de maneiras que se manifestam como números errados em vez de travamentos.
03

Refatoração

Reescrever o código para uma linguagem moderna, preservando a lógica de negócios.

Good for
Cargas de trabalho que precisam mudar com frequência, onde a escassez de COBOL é a restrição no roadmap, e não no runbook.
What it costs
O custo mais alto e o maior potencial. Quando feito corretamente, remove a dependência de habilidades permanentemente.
The catch
Esta é a estratégia que falha publicamente. O motivo da falha nunca é a sintaxe. Os transpiladores lidam com a sintaxe. O problema é que a especificação nunca foi documentada, então ninguém pode dizer se o novo sistema está correto. Você não está migrando código; está recuperando uma especificação que existe apenas como comportamento.
04

Manter

Deixar deliberadamente a carga de trabalho no mainframe.

Good for
Cargas de trabalho estáveis e de alto rendimento, que são baratas de operar e raramente mudam. A liquidação em lote costuma ser o exemplo mais claro.
What it costs
Nada, se você escolher isso deliberadamente e documentar o motivo.
The catch
Manter é uma estratégia real e é subutilizada, porque é difícil de colocar em uma apresentação para a diretoria. Mas a retenção sem documentação não é uma estratégia, é um adiamento. Você ainda perde o conhecimento quando a equipe se aposenta.

Como escolher, por carga de trabalho

Quatro perguntas separam as cargas de trabalho que precisam de cada estratégia. Responda a elas por aplicação, não por portfólio.

Com que frequência este código é realmente alterado?
Extraia o histórico de alterações, não opiniões. Um código que não é modificado há oito anos é um candidato a retenção ou re-hospedagem, independentemente da idade da linguagem. Um código com uma fila de alterações pendentes é onde a refatoração se paga.
Alguém consegue explicar o que isso faz atualmente?
Se a resposta depender de uma ou duas pessoas específicas, nenhuma estratégia de migração é segura ainda. A documentação e a captura de conhecimento são pré-requisitos, não entregáveis a serem produzidos ao longo do processo.
Qual é o custo de um erro?
Um cálculo de juros lançado incorretamente e um relatório lento não representam o mesmo risco. Quanto maior o custo de uma diferença comportamental silenciosa, mais verificação a migração exige, e mais a viabilidade econômica pende para a manutenção ou rehospedagem.
O que realmente está forçando a mudança?
Custo de hardware, um prazo de conformidade, uma escassez de profissionais e um roadmap de produto apontam, cada um, para estratégias diferentes. Programas que não conseguem identificar o fator motivador tendem a recair na opção mais cara.

Por que as migrações de COBOL para Java falham

O caminho da refatoração merece um tratamento próprio, pois é o que produz as manchetes. Os modos de falha recorrentes são consistentes entre as instituições.

A especificação nunca foi escrita

Quarenta anos de alterações vivem no código e em nenhum outro lugar. Toda reescrita é, portanto, um ato de arqueologia em primeiro lugar e de engenharia em segundo. Equipes que pulam a arqueologia descobrem as regras ausentes em produção.

O desvio de comportamento é silencioso

A aritmética de decimais compactados do COBOL e o ponto flutuante do Java não arredondam de forma idêntica. Diferenças de um centavo por transação não lançam exceções; elas geram erros de reconciliação no final do trimestre, muito depois de a migração ter sido declarada concluída.

Os testes codificam o comportamento atual, não o comportamento correto

Uma suíte de testes bem-sucedida, baseada no sistema legado, prova que o novo sistema reproduz o que o antigo fazia nos caminhos que alguém pensou em testar. Portfólios reais têm caminhos que ninguém executa deliberadamente há uma década.

A recertificação regulatória não é gratuita

Em bancos, seguradoras e no governo, um sistema reescrito é frequentemente um sistema novo para fins de auditoria. Esse custo deve estar no business case desde o início, e não ser uma descoberta no nono mês.

Os especialistas saem no meio do programa

Programas plurianuais esbarram diretamente na curva de aposentadoria das pessoas das quais dependem. O conhecimento deve ser capturado antes do início do programa, pois não estará mais disponível quando for mais necessário.

A pergunta que muda a equação financeira

Cada estratégia acima é limitada pela mesma restrição: é possível provar que o sistema ainda faz o que fazia? Os testes avaliam amostras do espaço de entrada. A verificação formal analisa todo o espaço, provando que, para cada entrada, o caminho modernizado produz a mesma saída que o legado. Quando essa prova está disponível, a refatoração deixa de ser um salto de fé e se torna um exercício de engenharia delimitado, e a pergunta acima sobre o custo de um erro muda de resposta. Quando não está, o conservadorismo é a postura correta.

Onde o Hypercubic se encaixa

Construímos para a arqueologia e para a prova, nessa ordem. O HyperDocs reconstrói a documentação a partir do código-fonte COBOL, PL/I e JCL. O HyperTwin captura o que seus engenheiros seniores sabem antes de se aposentarem. O Hopper executa as operações diárias do z/OS. O HyperLoop realiza a própria migração com provas de exatidão linha a linha. Se você está em um estágio inicial o suficiente para que os dois primeiros importem mais que os dois últimos, essa é a sequência honesta.

Perguntas frequentes

Quais são as quatro estratégias de modernização de mainframe?
Rehost, replatform, refactor e retain. O rehost move a carga de trabalho para um emulador ou instância de nuvem sem alterar o código. O replatform substitui a camada de execução (banco de dados, gerenciador de transações, agendador) mantendo o código da aplicação intacto. O refactor reescreve o código para uma linguagem moderna, preservando a lógica de negócios. O retain mantém deliberadamente a carga de trabalho no mainframe. Grandes instituições normalmente aplicam várias dessas estratégias em um portfólio, em vez de escolher apenas uma.
Devo fazer rehost ou refatorar minhas aplicações COBOL?
Depende da frequência com que o código muda e do custo de um erro. O rehost é mais rápido e de menor risco, mas preserva tanto o código legado quanto a dependência de profissionais especializados. Por isso, é indicado para cargas de trabalho estáveis sob pressão de hardware ou data center. A refatoração remove a dependência do COBOL permanentemente e é indicada para cargas de trabalho com um backlog ativo de mudanças, mas custa mais e falha quando as regras de negócios originais nunca foram documentadas. Decida por carga de trabalho com base no histórico de mudanças, em vez de aplicar uma regra para todo o portfólio.
Por que as migrações de COBOL para Java falham?
Raramente por causa da sintaxe. Elas falham porque a especificação nunca foi documentada, então ninguém consegue provar que o sistema reescrito está correto; porque a aritmética difere entre o decimal compactado do COBOL e o ponto flutuante do Java, produzindo desvios silenciosos de arredondamento em vez de travamentos; porque as suítes de teste codificam o comportamento atual nos caminhos que alguém pensou em testar, em vez do comportamento correto em todos os caminhos; porque os custos de recertificação regulatória são descobertos tarde demais; e porque os especialistas que entendem o sistema se aposentam durante o projeto.
Quanto tempo leva a modernização de mainframe?
Depende muito mais do quão bem o sistema existente é compreendido do que da quantidade de código. Portfólios com documentação atualizada e especialistas no assunto disponíveis avançam em trimestres. Portfólios em que as regras de negócios existem apenas como comportamento passam a maior parte do cronograma na fase de descoberta antes do início de qualquer trabalho de migração. É por isso que a documentação e a captura de conhecimento são pré-requisitos, em vez de fluxos de trabalho paralelos.
É correto manter uma carga de trabalho no mainframe em alguma situação?
Sim. Cargas de trabalho estáveis, de alto rendimento, que raramente mudam e têm baixo custo de operação (a liquidação em batch é o exemplo mais claro) muitas vezes já cumprem o seu propósito, e movê-las adiciona riscos sem agregar capacidade. Reter é uma estratégia legítima quando escolhida de forma deliberada e documentada. O que não é uma estratégia é reter uma carga de trabalho que ninguém consegue explicar, porque o conhecimento se perde de qualquer forma quando a equipe se aposenta.

Descubra quais cargas de trabalho mover primeiro.

Fale com nossa equipe sobre como mapear seu portfólio com base nas quatro estratégias, ou comece pelo glossário se estiver construindo um vocabulário interno.