Translate

Mostrar mensagens com a etiqueta escalabilidade. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta escalabilidade. Mostrar todas as mensagens

sábado, 2 de agosto de 2025

Boas Praticas em Performance e otimização uma primeira olhada.

 

Boas Praticas em Performance e otimização uma primeira olhada.

4,424 followers

Falando sobre performance e otimização.

Salve jovem padawan, no artigo de hoje conversemos sobre um assunto pantanoso, que derruba 7 em 10 programadores, estou falando de performance e otimização de programas, infelizmente a pressa é inimiga da perfeição.

Como veremos no decorrer do artigo, o grande problema sempre é o fator tempo, somos todos coelhos da Alice: atrasados e fugindo da Rainha Louca, ops Rainha de Copas e no final quem paga é o programa implementado na máxima velocidade de desenvolvimento dentro possível, com uma qualidade mediana, atendendo o MVP.


Pense antes de codificar

Rascunhe seu programa em lápis e papel, desta forma consegue ter uma visão do todo, uma noção do caminho crítico e para o teste de mesa, num primeiro momento consegue-se visualizar pontos passiveis de melhoria e pontos onde o programa não se comporta da maneira espera.

Existem inúmeras ferramentas visuais no mercado, que auxiliam na depuração calculando o uso de memória, uso de CPU e gargalos do sistema, para o ambiente Mainframe existe o Omegamon e o APA. Ferramentas que em seus relatórios apresentam estatísticas fabulosas sobre os problemas encontrado no código, pontos de gargalo e tempo de execução.


Uso de memória

Cuidado ao codificar, não crie variáveis em excesso, lembre-se sempre de inicializar as variáveis no princípio do código, desta forma economizam-se ciclos de CPU gastos desnecessariamente, forçando paradas no processamento para inicializar as variáveis. Lembre-se I/O seja em acessos a discos e sub-programas externo estouram o Time.

Cuidado ao utilizar arrays e vetores, pois ao criar grandes tabelas internas estará consumindo memoria desnecessariamente e prejudicara o bom funcionamento do seu programa, principalmente em escala, quantos mais usuários maior queda de performance.

Verifique as variáveis não utilizadas, que gastam espaço em memória, pense num programa utilizado por milhares de usuários, com centenas de milhares de requisição, ao final de um ano, quanto de memória poderia ter sido economizado, quanto de processamento ou ciclos de CPU, gasto em gerenciamento de memória desnecessário. Imagine a pegada ecológica, gasto de eletricidade e CO2 liberado.


Ciclos de CPU

A pressa é inimiga da perfeição, muitas vezes criamos logica em que o programa consome desnecessariamente processamento, movendo variáveis semi-utilizadas ou mesmo sem nenhuma utilização, atente-se a código morto e rotinas que entram e saem sem agregar nenhum valor ao processo.

Pense no custo em CPU de chamadas repetida a functions, arrow-functions e programas externo, a cada parada de processo e pulo para outro programa e o próprio retorno ao programa chamador.

Trabalhe apenas com os campos da tabela que serão utilizados em outputs ou cálculos, o trafego de dados além da memória, gera gasto de CPU indevidos. Muitas vezes é mais produtivo, usar arquivo sequencial da tabela, através de unload, usar aplicativos específicos para ETL, a exemplo SORT do Mainframe.


Espaço em Disco

Em tempos de cloud computer e processamento distribuído, desvalorizávamos o impacto do processamento, em gravar dados desnecessariamente em disco, informações que nunca serão utilizadas e degradam o ambiente, obrigando a adquirir mais e mais espaço em disco.

Fazendo o programa perder milissegundos cruciais na busca da informação num disco imenso e cada vez mais abarrotado, uma política de dados é importante para evitar esse viés.


Os perigos de laços estilo While

Quando codificar While cuidado com os laços infinitos. Às vezes um teste de mesa incompleto deixa uma situação onde o FLAG de saída, pode parecer obvio, mas grandes programadores caíram em situação semelhante, um IF mal planejado e um FLAG descontrolado e surge o caos, com looping infinito ou anomalias de difícil reprodução.


Os perigos de laço estilo FOR

O perigo do FOR não é tão drástico quanto o While, mas devido a sua quantidade de uso é muito prejudicial a longo prazo, obrigando a aquisição de mais hardware inutilmente, uma solução bem simples é sair do laço assim que a solução for encontrada.


Os perigos de IF inúteis

Muitas vezes o programador está cheio de boas intenções e cria uma sequência sem fim de IFs. Mas para garantir a qualidade dos dados e o controle de fluxo do programa, porem muitas vezes são desnecessários, procure pensar numa lógica do IF master e somente se ele funciona gerar os outros testes em IF, quanto menos paradas para decisão mais performático e melhor será seu programa.

Use comandos em estilo EVALUATE, SWITCH para um controle de fluxo mais eficiente e atente-se a não usar ELSEs em demasia, dificultam muito a análise e ajudam a gerar erros de simpatia, pois às vezes confundimos o lugar do ELSE e no teste pulamos o IF.

Outro grande problema e a quantidade de paradas no processamento, obrigando o programa a funcionar como conta gostas.


Espionando programas em Mainframe

Como disse anteriormente existem algumas ferramentas fabulosas em ambiente Z/OS, o OMEGAMON e o APA monitoram e acompanham a performance de programas em ambiente Mainframe, indicando os custos de CPU / Memória e rotinas em looping e consumos/acessos diversos. Vale a pena conhecer o manual técnico e explorar esta ferramenta.

Em banco de dados DB2 existe o comando Explain que gera estatísticas de acesso e caminhos para melhorias tais como criar índices, reorg de tabelas, partição de ambientes e etc, auxiliando o DEV a criar querys mais performáticas.


Conclusão

Caro padawan, reconheço que fui superficial e que deixei pontos a esclarecer, mas o objetivo deste artigo. Foi fazê-lo pensar, a ter cuidado quando codifica, apesar das máquinas terem caído o custo, em quantidade, o uso de memória e CPU desnecessário tiram a competitividade da empresa, gerando custos ocultos e gerando prejuízos a longo prazo.

Como exercício de imaginação, pense um Banco com milhares de agências e milhões de clientes, usando os serviços 24 horas por dia, 7 dias por semana e 365 dias no ano. Quanto custara ao final do ano alguns IFs desnecessários e 2 segundos desperdiçados em loops inúteis?

Por isso pense bem ao codificar, faça teste de mesa, use papel e lápis para ajudar em seu trabalho, verifique os IF e loopings, não use campos de tabelas desnecessariamente e boa sorte.

Espero ter ajudado. Bom curso a todos.


Article content


Article content

Mais momento jabá, quem diria que já passou retrospectiva do meu 44° aniversario, tantas aventuras, tantos momentos únicos, memórias em imagens de momentos mágicos da vida do Tiozão visite meu vídeo e veja para onde fui desta vez: https://www.youtube.com/watch?v=sBgA0nvtpdU


Bom curso a todos.

Article content

https://www.linkedin.com/in/vagnerbellacosa/


Article content

https://github.com/VagnerBellacosa/

Pode me dar uma ajudinha no YouTube?

Article content

https://www.youtube.com/user/vagnerbellacosa


sexta-feira, 21 de julho de 2023

A Segunda Temporada de Kami-tachi ni Hirowareta Otoko: O Manual Definitivo de Como Escalar um Sistema sem Derrubar a Produção

 

Bellacosa Mainframe e a segunda temporada do mais fofo domador de slimes Kami tachi ni Hirowareta otoko

☕ Um Café no Bellacosa Mainframe

A Segunda Temporada de Kami-tachi ni Hirowareta Otoko: O Manual Definitivo de Como Escalar um Sistema sem Derrubar a Produção

"A primeira temporada mostrou como construir um ambiente estável. A segunda ensina como fazê-lo crescer sem perder a simplicidade. É exatamente o desafio que todo arquiteto de sistemas IBM Z enfrenta."

Muitos animes isekai acreditam que evolução significa enfrentar inimigos cada vez mais poderosos.

Kami-tachi ni Hirowareta Otoko 2 segue outro caminho.

Aqui, a evolução não é medida pelo tamanho da espada, mas pela capacidade de administrar pessoas, processos e conhecimento.

Sob a ótica do Bellacosa Mainframe, a segunda temporada é praticamente um curso de Capacity Planning, Governança, Escalabilidade e Automação Empresarial disfarçado de anime.


Ficha Técnica

Título Original

神達に拾われた男2

(Kami-tachi ni Hirowareta Otoko 2)

Título Internacional

By the Grace of the Gods – Season 2

Autor

Roy

Ilustrações

Ririnra

Light Novel

HJ Novels

Estúdio

Maho Film

O mesmo estúdio da primeira temporada, mantendo a identidade visual e o ritmo contemplativo da série.

Direção

Yoshiaki Yanagida

Roteiro

Kazuyuki Fudeyasu

Exibição

Janeiro de 2023

até

Março de 2023

Episódios

12

Cada episódio possui aproximadamente 24 minutos.


Gêneros

  • Isekai

  • Fantasia

  • Slice of Life

  • Iyashikei

  • Administração

  • Aventura

  • Comédia leve

Classificação indicativa:

12 anos

Quase não existe violência gráfica.

O foco continua sendo desenvolvimento humano.


Sinopse

Depois de consolidar sua lavanderia utilizando slimes, Ryoma percebe que o verdadeiro desafio não era criar um negócio.

Era fazê-lo crescer.

Clientes aumentam.

Funcionários aparecem.

Novas cidades entram na rota.

A demanda cresce.

Novas espécies de slimes surgem.

Novos contratos aparecem.

Agora Ryoma deixa de ser apenas um pesquisador.

Ele se torna um administrador.


Resumo da Segunda Temporada

Enquanto a primeira temporada era praticamente uma história de sobrevivência e descoberta, a segunda acompanha Ryoma administrando as consequências do próprio sucesso.

Ele precisa:

  • expandir a lavanderia;

  • formar novos funcionários;

  • abrir filiais;

  • lidar com logística;

  • organizar produção;

  • continuar pesquisando slimes;

  • manter relações com guildas e nobres.

É uma mudança interessante: o conflito deixa de ser "como sobreviver?" e passa a ser "como crescer sem perder qualidade?".


A História Vista por um Analista Mainframe

Imagine que a primeira temporada foi a implantação de um novo sistema COBOL em produção.

Tudo funciona.

Os usuários adoram.

Agora chega o problema real.

O banco compra outra instituição.

O volume de transações dobra.

Novas agências aparecem.

Mais integrações são exigidas.

O SLA fica mais rígido.

É exatamente isso que acontece com Ryoma.

Sua lavanderia passa a atender muito mais pessoas.

Isso exige:

  • novos processos;

  • treinamento;

  • padronização;

  • documentação;

  • delegação.

Ou seja...

Ele deixa de ser apenas programador.

Vira gerente de produção.


O Grande Tema da Temporada

Se a primeira temporada falava sobre reiniciar a vida, a segunda fala sobre escalar responsabilidades.

Ryoma aprende que crescer não significa trabalhar mais.

Significa trabalhar melhor.

É um conceito extremamente moderno.


Personagens

Ryoma Takebayashi

Continua sendo um protagonista extremamente raro.

Não busca fama.

Não procura reconhecimento.

Seu prazer continua sendo aprender.

Nesta temporada ele demonstra maior maturidade como líder.


Eliaria

Sua amizade com Ryoma continua evoluindo.

Ela amadurece emocionalmente e passa a compreender melhor as responsabilidades da nobreza.

A relação permanece delicada e natural, sem forçar um romance precoce.


Família Jamil

Reinhart, Elise e os demais seguem apoiando Ryoma.

Funcionam como um conselho administrativo que oferece recursos, contatos e estabilidade.


Guildas

As guildas ganham maior importância.

Representam instituições, regras e integração entre diferentes setores da sociedade.


Os Slimes

Mais uma vez roubam a cena.

Novas espécies aparecem.

Outras evoluem.

Algumas demonstram comportamentos inesperados.

O trabalho científico continua sendo um dos maiores diferenciais da série.


O Que Existe de Diferente na Segunda Temporada?

A mudança principal é de escala.

Na primeira temporada:

  • sobrevivência;

  • descoberta;

  • experimentação.

Na segunda:

  • gestão;

  • expansão;

  • liderança;

  • processos;

  • qualidade;

  • continuidade.

É praticamente a diferença entre escrever um programa COBOL e administrar um datacenter inteiro.


As Aventuras

Embora continue sendo um anime tranquilo, Ryoma participa de diversas atividades.

Expansão da lavanderia

Seu maior projeto.

Envolve logística, contratação, treinamento e qualidade.


Novas pesquisas com slimes

Ele continua catalogando espécies.

Cada descoberta gera novas aplicações.

Sob uma ótica moderna, lembra pesquisa e desenvolvimento (P&D).


Viagens

Ryoma visita novas regiões.

Conhece diferentes culturas.

Amplia sua rede de contatos.


Missões da guilda

Ainda existem aventuras tradicionais.

Mas servem mais para desenvolvimento pessoal do que para ação.


Os Slimes São um Datacenter Vivo

Sob a visão Bellacosa Mainframe:

Cada slime é um serviço.

Cada serviço possui responsabilidade única.

Quando novos slimes aparecem, Ryoma não pensa em combate.

Pensa em:

  • integração;

  • reaproveitamento;

  • eficiência;

  • automação.

É praticamente arquitetura orientada a serviços (SOA).


Mensagens Ocultas

1. Escalabilidade

Todo sistema pequeno funciona.

O difícil é crescer mantendo estabilidade.


2. Liderança

Ryoma aprende que ninguém administra tudo sozinho.

Delegar é obrigatório.


3. Documentação

Todo experimento é registrado.

Nada depende da memória.

Todo Sysprog experiente sabe o valor dessa prática.


4. Melhoria Contínua

Nunca existe versão final.

Sempre existe uma otimização possível.

É a filosofia Kaizen aplicada a um mundo de fantasia.


5. Saúde Mental

Mesmo com o crescimento do negócio, Ryoma preserva momentos de descanso, curiosidade e convivência.

A série reforça que produtividade sustentável depende de equilíbrio.


O Que a Segunda Temporada Diz Sem Falar

Existe uma crítica silenciosa ao ambiente corporativo moderno.

Ryoma jamais cresce sacrificando pessoas.

Nunca exige jornadas absurdas.

Nunca explora funcionários.

Nunca transforma eficiência em pressão.

Sua empresa cresce porque:

  • automatiza;

  • organiza;

  • ensina;

  • compartilha conhecimento.

É praticamente o oposto de muitas empresas reais.


Qualidade da Animação

A Maho Film manteve:

  • cores suaves;

  • iluminação aconchegante;

  • trilha sonora relaxante;

  • ritmo contemplativo.

A animação não impressiona pela quantidade de quadros, mas pela consistência.

Ela reforça a proposta de conforto da obra.


Impacto Cultural

A segunda temporada não alcançou a popularidade de fenômenos como Mushoku Tensei ou Re:Zero, mas consolidou Kami-tachi ni Hirowareta Otoko como uma referência entre os fãs de Slow Life Isekai e Iyashikei Fantasy. A série continua sendo frequentemente recomendada para quem busca histórias acolhedoras, focadas em crescimento pessoal, empreendedorismo e resolução de problemas cotidianos, em vez de grandes guerras ou conflitos épicos.


Houve Censura?

Não há registros relevantes de censura internacional ou cortes impostos por emissoras.

As diferenças percebidas pelos leitores da light novel decorrem principalmente da adaptação:

  • alguns acontecimentos foram condensados;

  • várias explicações técnicas sobre magia e ecologia dos slimes foram simplificadas;

  • certos conflitos foram suavizados para manter o tom leve e otimista.

Essas mudanças são consideradas decisões criativas de adaptação, e não censura.


Vale a Pena Assistir?

Sem dúvida, especialmente para quem apreciou a primeira temporada.

Se a primeira parte ensina como construir um sistema estável, a segunda mostra como fazê-lo crescer sem perder qualidade, simplicidade e humanidade.


☕ Conclusão Bellacosa Mainframe

Na maioria dos isekais, a evolução do protagonista é medida pelo nível, pelas habilidades ou pelo poder de combate.

Em Kami-tachi ni Hirowareta Otoko 2, ela é medida por algo muito mais difícil: a capacidade de criar processos sustentáveis, formar pessoas, documentar conhecimento e construir um ambiente onde todos prosperam.

Para um profissional de IBM Z, Ryoma lembra o arquiteto que implantou um sistema COBOL impecável e, anos depois, conseguiu expandi-lo para milhões de transações diárias sem perder estabilidade. Não há explosões, espadas lendárias ou batalhas contra reis demônios — apenas engenharia, disciplina, melhoria contínua e a convicção de que os melhores sistemas, assim como as melhores vidas, são aqueles que evoluem de forma consistente.

No fim, a maior magia da segunda temporada não está nos slimes. Está na demonstração de que automação, resiliência e liderança são as verdadeiras habilidades "lendárias" capazes de sustentar qualquer mundo — seja um reino medieval ou um datacenter IBM Z. ☕🟢


domingo, 8 de maio de 2022

Os Erros Invisíveis que Destroem um Projeto Antes Mesmo da Primeira Linha de Código

Bellacosa Mainframe e os erros invisivei que destroem um projeto



☕ Um Café no Bellacosa Mainframe

Os Erros Invisíveis que Destroem um Projeto Antes Mesmo da Primeira Linha de Código

"Arquitetura não é desenhar caixas e setas. É antecipar problemas que ainda não aconteceram."

Uma arquitetura pode parecer perfeita em um PowerPoint.

Microservices...
Docker...
Kubernetes...
Event Streaming...
Kafka...
REST...
GraphQL...
Cloud Native...

Tudo muito bonito.

Até o primeiro milhão de usuários.

Até o primeiro pico de Black Friday.

Até o primeiro deadlock.

Até a primeira perda de dados.

É nesse momento que aparecem os erros invisíveis.


1. Ignorar Consistência dos Dados

O erro

Muitos iniciantes acreditam que:

"Eventual Consistency resolve tudo."

Não resolve.

Consistência é uma decisão de negócio.

Não tecnológica.


Exemplo bancário

Imagine uma transferência.

Conta A
Saldo = 1000

↓

Transferir 900

↓

Conta B

Se um serviço atualizar a Conta A...

...e outro atualizar a Conta B alguns segundos depois...

Durante esses segundos:

Conta A = 100

Conta B = 0

O dinheiro "sumiu".

Ou pior...

Uma nova consulta pode permitir outra transferência.

Resultado:

Saldo negativo.


Quando Eventual Consistency funciona

Excelente para:

  • Feed do Instagram

  • Likes

  • Comentários

  • Catálogo de produtos

  • Estatísticas

Alguns segundos de atraso não importam.


Quando NÃO funciona

Nunca utilize em:

  • PIX

  • Bancos

  • Bolsa de Valores

  • Controle de Estoque

  • Reserva de assentos

  • Sistemas médicos

Nestes casos:

Strong Consistency

é obrigatória.


Mainframe

DB2 usa:

  • Commit

  • Rollback

  • Locking

  • Isolation Levels

Há décadas.

Muito antes da moda dos bancos NoSQL.


2. Não Definir Limites do Sistema

Este talvez seja o maior erro.

Imagine uma empresa.

Quem faz RH?

Quem faz Financeiro?

Quem faz Compras?

Agora imagine todos fazendo tudo.

É exatamente isso que acontece em sistemas mal divididos.


Sintoma

Um módulo chamado:

CustomerService

faz:

  • login

  • pagamento

  • envio de email

  • cadastro

  • estoque

  • geração de nota

  • relatórios

Virou um monólito.


Consequência

Qualquer alteração:

quebra tudo.


Boa arquitetura

Cada domínio possui responsabilidade única.

Order Service

Inventory

Billing

Notification

Shipping

Cada um evolui sozinho.


Conceito

Domain Driven Design

Bounded Context

Single Responsibility

Todos nascem desse princípio.


3. Ignorar Latência

Usuários não medem CPU.

Eles medem tempo.


Exemplo

Pesquisa Google

300 ms

Parece instantânea.

Agora imagine:

4 segundos.

Você já fechou a página.


Latência acumulada

Cliente

API Gateway

Auth

Inventory

Recommendation

Payment

Shipping

DB

Cada chamada adiciona:

20 ms

40 ms

80 ms

100 ms

...

No final:

1 segundo

Sem perceber.


Lei importante

Uma arquitetura com 20 microsserviços pode ser MAIS LENTA que um monólito.


Mainframe

Por isso CICS sempre priorizou:

  • poucas chamadas

  • processamento local

  • transações curtas


4. Subestimar a Carga

Outro erro clássico.

O sistema funciona perfeitamente...

...com 50 usuários.

Mas na Black Friday:

200 mil usuários

Tudo trava.


Perguntas importantes

Quantos usuários?

Quantas requisições?

Picos?

Sazonalidade?

Crescimento anual?


Capacidade

Sempre calcule:

Requests/second

Transactions/minute

IOPS

CPU

RAM

Storage

Network

Exemplo

Sistema:

1000 req/s

Promoção:

15000 req/s

Resultado:

Timeout.

Fila.

Erro 500.


5. Fazer Tudo Sincronamente

Imagine um e-commerce.

Cliente compra.

Sistema:

processa pagamento

envia email

gera nota

atualiza estoque

gera cashback

envia SMS

atualiza BI

Tudo esperando.

O usuário fica olhando.


Melhor abordagem

Pagamento

Resposta imediata

Eventos

Email

Nota

BI

Analytics

Machine Learning

Tudo assíncrono.


Tecnologias

Kafka

RabbitMQ

IBM MQ

SQS

Azure Service Bus

Pulsar


Benefícios

Escalabilidade

Baixa latência

Maior throughput

Resiliência


6. Não Planejar Evolução

Todo sistema muda.

Sempre.


Hoje:

Pix

Amanhã:

Pix Parcelado

Depois:

Pix Internacional

Depois:

IA financeira

Se sua arquitetura não suporta mudança...

Ela morre.


Arquitetura deve ser extensível

Open/Closed Principle

Plug-ins

Feature Flags

Configuration Driven

Interfaces

Strategy Pattern


7. Criar Pontos Únicos de Falha (Single Point of Failure)

Imagine:

1 servidor

↓

Banco

↓

Toda empresa

Servidor cai.

Empresa para.


Alta disponibilidade

Sempre pense em:

Load Balancer

Cluster

Replica

Failover

Geo-redundância

Backup


Mainframe

Sysplex

Parallel Sysplex

GDPS

foram criados exatamente para isso.


8. APIs Mal Projetadas

API é um contrato.

Contrato ruim gera caos.


Exemplo ruim

GET /data

Retorna:

qualquer coisa...

Exemplo melhor

GET /customers/{id}

Resposta consistente.

Documentada.

Versionada.


API deve possuir

Versionamento

Idempotência

Paginação

Rate Limit

Autenticação

Observabilidade

Documentação


9. Ignorar Backup e Recuperação

A pergunta não é:

"Meu sistema vai falhar?"

A pergunta correta é:

"Quando ele vai falhar?"


Recovery é parte da arquitetura

Backup

Snapshot

Point-in-Time Recovery

Replication

Disaster Recovery

Multi Region

Chaos Engineering


Conceitos fundamentais

RPO (Recovery Point Objective)

Quanto de dados você pode perder?

0 minutos

5 minutos

1 hora

RTO (Recovery Time Objective)

Quanto tempo o sistema pode ficar indisponível?

30 segundos

5 minutos

2 horas

Essas metas orientam a escolha da estratégia de backup e recuperação.


Um Décimo Erro que Poucos Mencionam: Falta de Observabilidade

Mesmo uma boa arquitetura pode fracassar se você não consegue enxergar o que acontece em produção.

Os três pilares da observabilidade são:

  • Logs: registram eventos e erros.

  • Métricas: mostram CPU, memória, latência, throughput e disponibilidade.

  • Traces distribuídos: acompanham uma requisição passando por vários serviços.

Ferramentas como Prometheus, Grafana, OpenTelemetry, Jaeger e Elastic Stack ajudam a identificar gargalos antes que eles se transformem em incidentes graves.


Um Décimo Primeiro Erro: Esquecer a Segurança Desde o Início

Segurança não deve ser um complemento adicionado ao final do projeto.

Uma arquitetura moderna precisa considerar desde o início:

  • Princípio do menor privilégio (Least Privilege)

  • Autenticação e autorização robustas

  • Criptografia em trânsito (TLS) e em repouso

  • Gestão de segredos

  • Auditoria e rastreabilidade

  • Proteção contra ataques como SQL Injection, XSS e CSRF

  • Rate limiting e proteção contra abuso

No ecossistema IBM Z, RACF, TLS, criptografia por hardware e auditoria integrada são exemplos de recursos que incorporam esses princípios há décadas.


O Que Todo Programador COBOL Padawan Deve Aprender

Uma lição importante é que System Design não é exclusivo de microsserviços ou da nuvem. Os princípios fundamentais são universais:

  • Modelar corretamente o domínio do negócio.

  • Entender os requisitos funcionais e não funcionais.

  • Projetar para disponibilidade, escalabilidade e recuperação.

  • Definir responsabilidades claras entre componentes.

  • Reduzir acoplamento e aumentar coesão.

  • Tratar desempenho, segurança e observabilidade como requisitos de primeira classe.

Os grandes sistemas corporativos escritos em COBOL, CICS, IMS e DB2 continuam processando bilhões de transações diariamente porque foram construídos com esses princípios. A tecnologia evolui, mas os fundamentos da boa arquitetura permanecem os mesmos. Um arquiteto experiente não é aquele que conhece mais ferramentas, e sim aquele que consegue prever os problemas antes que eles aconteçam e projetar sistemas preparados para enfrentá-los.


terça-feira, 14 de outubro de 2014

💣🔥 SYSTEM DESIGN — O DIA EM QUE O COBOL DEIXA DE SER PROGRAMA… E VIRA ARQUITETURA DE PODER 🔥💣

 

Bellacosa Mainframe introduz o System Design

💣🔥 SYSTEM DESIGN — O DIA EM QUE O COBOL DEIXA DE SER PROGRAMA… E VIRA ARQUITETURA DE PODER 🔥💣

Se você programa em COBOL e acha que “system design” é coisa de arquiteto engravatado fazendo diagrama bonito… cuidado.

Você pode estar executando jobs perfeitos… dentro de um sistema mal projetado.

E aí não tem abend que denuncie o problema.


🧠 O QUE É SYSTEM DESIGN (TRADUZINDO PARA COBOL MENTAL)

System Design não é código.

É decidir antes do código existir:

  • Onde o dado nasce
  • Como ele trafega
  • Quem processa
  • Quem valida
  • Quem garante consistência
  • E quem aguenta o tranco quando tudo dá errado

👉 Em linguagem de mainframe:

System Design é o JCL invisível da arquitetura inteira


🏛️ ORIGEM — ANTES DO COBOL, ANTES DO SEU JOB

System Design nasce junto com a computação moderna.

  • Anos 60–70: Mainframes da IBM dominam o mundo corporativo
  • Surge o conceito de processamento batch vs online
  • Sistemas passam a lidar com:
    • milhões de registros
    • concorrência
    • consistência de dados

É aqui que entra o design.

Porque sem design…

👉 o sistema vira um monte de programas que “funcionam”… mas não escalam.


⚙️ A ERA DE OURO DO DESIGN: CICS, DB2 E O NASCIMENTO DA ARQUITETURA

Quando surgem tecnologias como:

  • CICS
  • DB2

o problema muda:

Antes:

Rodar programa

Depois:

Orquestrar milhares de transações simultâneas

E aí nasce o System Design moderno:

  • controle transacional
  • isolamento de dados
  • rollback
  • filas
  • throughput

👉 Isso não é mais programação.
👉 Isso é engenharia de sistema.


🔥 ANALOGIA BELLACOSA

Você, programador COBOL:

  • escreve o programa = módulo
  • escreve JCL = execução
  • usa VSAM/DB2 = armazenamento

Mas o System Design pergunta:

“E quando 10 milhões de clientes acessarem ao mesmo tempo… o que acontece?”


🧩 COMPONENTES DE UM SYSTEM DESIGN (TRADUZIDO PARA MAINFRAME)

1. Entrada de dados

  • Arquivo VSAM?
  • MQ?
  • API REST via z/OS Connect?

2. Processamento

  • Batch (JCL)
  • Online (CICS)
  • Híbrido

3. Persistência

  • DB2
  • VSAM
  • GDG

4. Consistência

  • Commit / Rollback
  • Controle de concorrência

5. Escalabilidade

  • Paralelismo de jobs
  • Balanceamento de carga

6. Resiliência

  • Restart automático
  • Checkpoints
  • Logs (SMF, JES)

🧪 EXEMPLO PRÁTICO — SISTEMA BANCÁRIO

Imagine:

👉 Transferência entre contas

Sem design:

  • Um programa COBOL atualiza conta A
  • Outro atualiza conta B

💣 Problema:
Se cair no meio → dinheiro some


Com System Design:

  • Transação controlada no CICS
  • Commit só ocorre quando tudo está consistente
  • Rollback garante integridade

👉 Isso é design salvando o sistema.


🧬 PASSO A PASSO — COMO PENSAR COMO UM ARQUITETO (MESMO SENDO COBOL)

🔹 1. Entenda o fluxo

Antes de codar:

  • de onde vem o dado?
  • para onde vai?
  • quem usa?

🔹 2. Modele falhas

Pergunte:

  • e se cair?
  • e se duplicar?
  • e se atrasar?

🔹 3. Separe responsabilidades

  • programa A = valida
  • programa B = processa
  • programa C = grava

👉 Não misture tudo (anti-pattern clássico COBOL 😄)


🔹 4. Pense em volume

  • 100 registros ≠ 100 milhões

🔹 5. Pense em concorrência

  • 1 usuário ≠ 10.000 simultâneos

🚀 COMO COMEÇAR (CAMINHO REALISTA)

Se você é COBOL:

Aprenda:

  • Conceitos de arquitetura distribuída
  • Filas (MQ)
  • APIs
  • Transações
  • Design patterns

Pratique:

  • Simule um sistema de pagamentos
  • Modele falhas
  • Crie fluxo batch + online

Evolua:

  • Integração com APIs modernas
  • Event-driven architecture
  • Observabilidade

🧠 O QUE VOCÊ PRECISA ENTENDER (DE VERDADE)

System Design não é ferramenta.

É mentalidade.

Você precisa dominar:

  • consistência vs performance
  • acoplamento vs flexibilidade
  • disponibilidade vs integridade

👉 Isso é trade-off.
👉 Isso é engenharia.


🕵️ CURIOSIDADES (QUE POUCOS CONTAM)

  • Muitos sistemas bancários de hoje ainda rodam design criado nos anos 80
  • O que mudou foi a interface, não o core
  • Mainframe já fazia “alta escala” antes da nuvem existir

🥚 EASTER EGG (NÍVEL MAINFRAME ROOT)

O conceito moderno de:

  • microserviços
  • filas
  • event-driven

👉 já existia, de forma conceitual, dentro do mainframe

Só com nomes diferentes:

  • programa = serviço
  • fila = dataset / MQ
  • evento = transação CICS

⚠️ ERRO CLÁSSICO DE PROGRAMADOR COBOL

Achar que:

“Se o programa funciona… o sistema está certo”

Errado.

👉 Um sistema pode estar funcionando perfeitamente… e ainda assim estar errado em design


💣 FRASE FINAL (ESTILO PRODUÇÃO CRÍTICA)

“Código resolve problema local.
Design decide se o sistema sobrevive.”