Translate

domingo, 26 de janeiro de 2020

CI/CD sem Mistérios : O Guia do Programador COBOL Padawan para Entender por que o Mainframe Faz DevOps Há Décadas (Mesmo Antes de Chamarem Assim)

 

Bellacosa Mainframe e ci/cd sem misterios

☕ Um Café no Bellacosa Mainframe

CI/CD sem Mistérios

O Guia do Programador COBOL Padawan para Entender por que o Mainframe Faz DevOps Há Décadas (Mesmo Antes de Chamarem Assim)

Existe uma frase muito comum quando alguém começa a estudar DevOps:

"CI/CD revolucionou a forma de desenvolver software."

Ela não está errada.

Mas para quem trabalha com IBM Z, CICS, Db2, COBOL, IMS e JCL, existe uma observação divertida:

"Revolucionou para quem nunca trabalhou com mainframe."

E aqui está um dos maiores easter eggs da computação.

Durante décadas, enquanto boa parte do mundo compilava programas diretamente no servidor de produção usando FTP e um editor de texto, o universo mainframe já possuía ambientes separados, aprovação, promoção de código, controle de versões internos, rollback, auditoria e pipelines extremamente rígidos.

Não recebiam o nome de DevOps.

Mas faziam praticamente a mesma coisa.


O que significa CI/CD?

CI significa

Continuous Integration
(Integração Contínua)

CD possui dois significados.

Primeiro:

Continuous Delivery
(Entrega Contínua)

Depois:

Continuous Deployment
(Implantação Contínua)

Por isso muita gente escreve

CI/CD

para representar todo o fluxo.


Bellacosa Mainframe e o ciclo Ci/Cd

A ideia parece moderna...

...mas é muito antiga.

A origem vem da necessidade de resolver um enorme problema dos anos 70, 80 e 90.

Imagine uma empresa com:

  • 300 desenvolvedores

  • milhares de programas

  • centenas de alterações diárias

Cada programador alterava arquivos diferentes.

No final da semana alguém tentava juntar tudo.

Resultado?

Era praticamente inevitável aparecerem conflitos, regressões e erros de integração.

Nascia então a necessidade de integrar continuamente.


O problema que existia

Imagine cinco programadores.

João altera cálculo de juros.

Maria altera cadastro.

Carlos altera emissão.

Pedro altera impostos.

Ana altera relatórios.

Todos trabalham separados durante um mês.

Na hora de juntar tudo...

Começa o caos.

Isso era chamado de:

Integration Hell

Ou

Inferno da Integração.

CI nasceu justamente para evitar isso.


O objetivo do CI

Ao invés de integrar tudo no final...

Integra-se o tempo inteiro.

Cada alteração dispara automaticamente:

  • compilação

  • testes

  • validações

  • análise estática

  • geração de artefatos

Se algo quebra...

Descobre-se em minutos.

Não em semanas.


Delivery

Continuous Delivery responde outra pergunta.

Depois que compilou...

Como levar até produção?

Sem copiar arquivos manualmente.

Sem esquecer datasets.

Sem esquecer um BIND.

Sem esquecer um módulo.

Tudo passa a ser automatizado.


Deployment

Continuous Deployment vai além.

Se tudo passou...

O sistema entra automaticamente em produção.

Sem intervenção humana.

Este modelo é muito comum em empresas digitais.

No mundo bancário, normalmente utiliza-se Continuous Delivery com aprovação humana antes da promoção para produção, por exigências regulatórias e de governança.


Onde surgiu?

As raízes aparecem ainda nas práticas de integração de software dos anos 1980 e foram consolidadas com métodos como Extreme Programming (XP) na década de 1990. Em 2006, Martin Fowler popularizou o conceito de Continuous Integration, e a partir da década de 2010, com a ascensão do DevOps, CI/CD tornou-se um padrão amplamente adotado.

Curiosamente...

O mainframe já fazia muitas dessas práticas décadas antes.


O Easter Egg do IBM Z

Imagine um desenvolvedor COBOL em 1988.

Ele faz:

Editar

↓

Compilar

↓

Link

↓

Teste

↓

Homologação

↓

Produção

Agora veja um pipeline GitHub.

Commit

↓

Compile

↓

Test

↓

Package

↓

Deploy QA

↓

Deploy PROD

São praticamente a mesma filosofia.

A diferença está na automação e nas ferramentas.


O ciclo clássico do Mainframe

Durante muitos anos, um fluxo típico era:

Desenvolvimento

↓

Teste Unitário

↓

Integração

↓

Homologação

↓

Produção

Cada ambiente possuía:

  • bibliotecas próprias

  • datasets próprios

  • Db2 próprio

  • CICS próprio

  • IMS próprio

Nada era compartilhado.


O programador Padawan pensa...

"Mas isso já não é CI/CD?"

Na essência...

Sim.

A maior diferença é:

antes boa parte das promoções dependia de pessoas.

Hoje dependem de pipelines.


Como funcionava antigamente?

Um fluxo clássico podia ser:

Programador

↓

Compila

↓

Entrega ao líder

↓

Líder aprova

↓

Equipe de mudança

↓

Equipe de produção

↓

Operadores

↓

Implantação

Cada etapa envolvia documentos.

Telefonemas.

Assinaturas.

Mudanças em papel.

Mudanças aprovadas em CAB (Change Advisory Board).

Tudo extremamente controlado.


As equipes antigamente

Era comum existir:

Programadores

Analistas

QA

DBA

Operadores

Produção

Sysprog

Storage

Segurança

Change Management

Cada equipe era responsável apenas por sua parte.

Esse modelo ficou conhecido como "silos".


Hoje

O objetivo do DevOps não é eliminar especialistas.

É fazê-los trabalhar juntos.

Em vez de jogar o problema para o próximo grupo.

Todos compartilham responsabilidade.


O pipeline moderno

Hoje um commit pode executar automaticamente:

Git

↓

Build

↓

Compile COBOL

↓

IBM COBOL Check

↓

Testes ZUnit

↓

Code Review

↓

Quality Gate

↓

DBB/zBuilder

↓

Empacotamento

↓

Deploy DEV

↓

Deploy QA

↓

Deploy UAT

↓

Deploy Produção

Tudo registrado.

Tudo auditável.

Tudo reproduzível.


O grande objetivo

Reduzir risco.

Não aumentar velocidade.

Velocidade é consequência.

O verdadeiro objetivo é:

Confiabilidade.


Comparando com Waterfall

Waterfall

Grande planejamento.

Grande desenvolvimento.

Grande teste.

Grande implantação.

Tudo ocorre em blocos.

Mudanças são caras.

Feedback demora.


Agile

Entrega pequena.

Feedback rápido.

Correções rápidas.

Novos ciclos.

O cliente participa continuamente.


Onde entra o CI/CD?

O Agile responde:

Como organizar o trabalho?

CI/CD responde:

Como entregar software com segurança e repetibilidade?

São complementares.


Waterfall sem CI/CD

Planejar

↓

Desenvolver

↓

Meses depois integrar

↓

Torcer

Agile sem CI/CD

Sprint

↓

Entrega

↓

Implantação manual

↓

Muito retrabalho

Agile + CI/CD

Sprint

↓

Commit

↓

Pipeline

↓

Testes

↓

Deploy

↓

Feedback

É essa combinação que caracteriza a maior parte das organizações modernas.


O Mainframe já fazia isso?

Muito mais do que muita gente imagina.

Ferramentas como:

  • Endevor

  • Changeman ZMF

  • ISPW

  • Librarian

  • Panvalet

já implementavam conceitos de:

  • versionamento

  • promoção

  • rollback

  • aprovação

  • auditoria

  • segregação de ambientes

Décadas antes do GitHub existir.


O pipeline "invisível"

Um pipeline moderno apenas automatiza etapas que o mainframe tradicional já conhecia:

Editar COBOL

↓

Compile

↓

DBRM

↓

BIND PACKAGE

↓

BIND PLAN

↓

Link Edit

↓

Load Library

↓

Deploy

↓

Smoke Test

↓

Produção

Hoje isso pode ser disparado por um único commit.


Os requisitos para um verdadeiro CI/CD

Não basta instalar Jenkins.

É necessário:

  • Controle de versão (Git ou equivalente).

  • Build automatizado (DBB/zBuilder, Maven, Gradle etc.).

  • Testes automatizados (ZUnit, JUnit...).

  • Análise estática (IBM COBOL Check, SonarQube...).

  • Pipeline (Jenkins, GitHub Actions, GitLab CI...).

  • Promoção automatizada entre ambientes.

  • Rollback.

  • Auditoria.

  • Observabilidade.

  • Aprovação quando exigida por compliance.

Sem esses elementos, há automação parcial, mas não um pipeline maduro.


É hype?

Hoje, não.

Há alguns anos, "DevOps" virou uma buzzword usada para vender ferramentas e consultorias. Porém, CI/CD deixou de ser moda para se tornar uma prática consolidada de engenharia de software.

O hype passou.

A necessidade permaneceu.


É uma buzzword?

Depende do contexto.

Quando alguém diz:

"Nossa empresa faz DevOps."

Mas:

  • não existe automação;

  • não há testes automáticos;

  • tudo é manual;

  • produção depende de copiar arquivos;

  • rollback não existe;

Então virou apenas uma buzzword.

Quando existe pipeline, testes, rastreabilidade, observabilidade e governança, CI/CD deixa de ser discurso e vira prática.


O maior mito

Muitos acreditam:

"CI/CD serve para entregar software mais rápido."

Na verdade...

Serve para entregar software com menos risco.

A velocidade aparece porque há menos retrabalho, menos erros humanos e mais confiança no processo.


Curiosidades

  • NASA, bancos, companhias aéreas e bolsas de valores utilizam pipelines altamente controlados, muitas vezes exigindo aprovações humanas mesmo com automação.

  • O IBM Z integra-se hoje com Git, Jenkins, GitHub Actions, Azure DevOps, Ansible, Zowe, DBB/zBuilder, UrbanCode Deploy e outras ferramentas modernas.

  • Em ambientes regulados, é comum usar Continuous Delivery, mas não Continuous Deployment, porque uma etapa de aprovação humana continua sendo obrigatória.


Easter Eggs para o Padawan COBOL

🥚 Endevor fazia "pipeline" antes do pipeline existir.

🥚 Promotion Levels do ISPW lembram muito os estágios (stages) de um pipeline moderno.

🥚 O DBRM pode ser visto como um "artefato de build", equivalente ao que linguagens modernas geram antes da implantação.

🥚 O BIND PACKAGE é, em muitos aspectos, semelhante a uma etapa especializada de empacotamento e configuração dentro de um pipeline.

🥚 O JCL sempre foi uma forma declarativa de orquestração de tarefas em lote, décadas antes de arquivos YAML de pipelines se tornarem populares.


A Grande Lição para um Padawan COBOL

Quando você ouvir alguém dizer:

"DevOps e CI/CD chegaram para substituir o mainframe."

Sorria.

Depois explique que o IBM Z já separava ambientes, promovia código entre níveis, exigia aprovações, mantinha auditoria, fazia rollback e garantia rastreabilidade muito antes dessas práticas receberem os nomes que conhecemos hoje.

O que mudou não foi a filosofia.

Mudaram as ferramentas, o grau de automação e a integração entre equipes.

No fim das contas, CI/CD não é uma tecnologia nem uma moda passageira. É a evolução natural de uma ideia simples: tornar a entrega de software repetível, segura, auditável e previsível. E, para quem vive no universo COBOL e IBM Z, essa história soa surpreendentemente familiar. Afinal, o mainframe sempre ensinou que colocar código em produção é um processo de engenharia — nunca um ato de improviso.


Sem comentários:

Enviar um comentário