O documento discute os desafios e lições aprendidas ao executar jobs batch no Kubernetes. Apresenta como o Spring Batch pode ser usado para processar arquivos de taxas de intercâmbio recebidos diariamente de bandeiras de cartão, atualmente sem automação. A solução proposta envolve cronjobs, Spring Batch e K8s para automatizar a conferência dos cálculos em 4 meses.
3. O DESAFIO
• ESTE VALOR É CALCULADO DE ACORDO COM REGRAS DE CADA BANDEIRA. E SÃO CONSIDERADOS
DIVERSOS ATRIBUTOS DA TRANSAÇÃO, TAIS COMO, TIPO DE ESTABELECIMENTO (MCC),
MODALIDADE DO CARTÃO, FORMA DE PAGAMENTO (PRESENCIAL, NÃO-PRESENCIAL), REGIÃO
(NACIONAL, INTERNACIONAL), ENTRE OUTROS CRITÉRIOS.
• PARA CADA TRANSAÇÃO REALIZADA COM CARTÕES DE CRÉDITO, DÉBITO OU PRÉ-PAGO, O
BANCO RECEBE DAS BANDEIRAS (VISA, MASTER, ELO, AMEX) UM PERCENTUAL DO VALOR DA
TRANSAÇÃO, DENOMINADO DE TAXA DE INTERCÂMBIO.
4. O DESAFIO
• HOJE, OS VALORES DE INTERCÂMBIO CALCULADOS PARA CADA TRANSAÇÃO CHEGAM POR MEIO
DE ARQUIVOS ENVIADOS PELAS BANDEIRAS NA BASE 2. CADA BANDEIRA POSSUI UM LAYOUT DE
ARQUIVO E REGRAS DE CÁLCULO DISTINTAS.
EX. A MASTER UTILIZA O PADRÃO ISO-8583, ENQUANTO A VISA E ELO, UTILIZAM UM PADRÃO
POSICIONAL FIXO DE 168 POSIÇÕES E TIPOS DE REGISTROS.
• EM UMA TRANSAÇÃO DE CARTÃO, EXISTE A BASE 1 (AUTORIZAÇÃO) E A BASE 2 (CONCILIAÇÃO),
QUE É UM ARQUIVO DIÁRIO CONTENDO O MOVIMENTO DO DIA ANTERIOR. O PROCESSAMENTO
DA BASE 2 É FEITO VIA BATCH.
6. O DESAFIO
HOJE NÃO EXISTE NENHUM PROCESSO AUTOMATIZADO
QUE REALIZE A CONFERÊNCIA DO CÁLCULO DA TAXA DE
INTERCÂMBIO.
SIMPLESMENTE CONFIAMOS NO CÁLCULO
FEITO PELAS BANDEIRAS.
9. “
”
PROCESSAMENTO BATCH, … É DEFINIDO COMO
O PROCESSAMENTO DE UMA QUANTIDADE
FINITA DE DADOS, SEM INTERAÇÃO OU
INTERRUPÇÃO
-- MICHAEL MINELLA
THE DEFINITIVE GUIDE TO SPRING BATCH
15. PRINCÍPIOS E ORIENTAÇÕES PARA UMA APLICAÇÃO
BATCH
• BATCH AFETA O ON-LINE E VICE-VERSA
• SIMPLIFICAR O MÁXIMO POSSÍVEL
• ARMAZENE SEUS DADOS ONDE OCORRE O PROCESSAMENTO
• MINIMIZE O USO DE RECURSOS, ESPCECIALMENTE DE I/O
• IMPLEMENTE CHECKSUMS PARA VALIDAÇÕES INTERNAS SEMPRE QUE POSSÍVEL
• PLANEJE E EXECUTES TESTES DE STRESS O MAIS CEDO POSSÍVEL (AMBIENTE E VOLUME DE PRODUÇÃO)
• MANTENHA UMA ROTINA DE BACKUP DOS ARQUIVOS/DADOS DE ENTRADA
16. ESTRATÉGIAS DE PROCESSAMENTOS BATCH
"AS REGRAS DE NEGÓCIO DEVEM SER DECOMPOSTAS EM UMA SÉRIE DE PASSOS QUE POSSAM SER
IMPLEMENTADOS COM OS SEGUINTES BLOCOS DE CONSTRUÇÃO PADRÃO"
• APLICAÇÕES DE:
• CONVERSÃO
• VALIDAÇÃO
• EXTRAÇÃO/FILTRAGEM
• EXTRAÇÃO/ATUALIZAÇÃO
• PROCESSAMENTO/ATUALIZAÇÃO
• TRANSFORMAÇÃO/FORMATAÇÃO
• STEPS UTILITÁRIOS:
• SORT
• SPLIT
• MERGE
17. APLICAÇÕES BATCH
PODEM SER
CATEGORIZADAS
PELA ORIGEM DE
ENTRADA DE DADOS
"Orientadas a Banco de Dados"
Origem dos dados são registros de um banco de
dados
"Orientadas a Arquivos"
Origem dos dados são registros de um arquivo
"Orientadas a Mensagens"
Origem dos dados são mensagens de uma
fila/tópico
18. ESTRATÉGIAS DE PROCESSAMENTOS BATCH
1. PROCESSAMENTO NORMAL NA JANELA BATCH (MODO OFF-LINE)
2. PROCESSAMENTO CONCORRENTE ENTRE BATCHES E ONLINE
3. PROCESSAMENTO PARALELO DE VÁRIOS JOBS DIFERENTES AO MESMO TEMPO
4. PARTICIONAMENTO (VÁRIAS INSTÂNCIAS DO MESMO JOB)
5. COMBINAÇÕES DAS OPÇÕES ANTERIORES
19. ESTRATÉGIAS DE
PARTICIONAMENTO
• QUEBRA FIXA E UNIFORME DE UM
CONJUNTO DE REGISTROS
• QUEBRA POR COLUNA DE CHAVE
• QUEBRA POR VIEWS
• ADIÇÃO DE INDICADOR DE
PROCESSAMENTO
• UNLOAD + SPLIT DE TABELA EM
ARQUIVOS
• UTILIZANDO UMA COLUNA DE HASH
20. NOVIDADES
DO SPRING
BATCH 4.2
• SUPORTE A MÉTRICAS COM O MICROMETER
• ITEMREADER E ITEMWRITER DO KAFKA
• ITEMREADER E ITEMWRITER DO AVRO
• ATUALIZAÇÃO DA DOCUMENTAÇÃO
21. VISÃO GERAL DA ARQUITETURA
CronJob
Master
EDI
Banco
Batch
Mainframe DB2
API REST
Elo
Visa
EDI
EDI
BB Cloud Dashboard
23. TODOS E MELHORIAS
• MONITORAÇÃO: COMO MONITORAR UM JOB BATCH EFÊMERO?
• PROMETHEUS PUSHGATEWAY RSOCKET PROXY
• STORAGE: QUAL A MELHOR FORMA DE ENVIAR ARQUIVOS DO MF PARA A CLOUD?
• NAS? EMPTYDIR? MINIO? CEPH?
• SCHEDULING: QUAL A MELHOR FORMA DE AGENDAR O JOB?
• CRONJOB? CONTROL-M? SPRING CLOUD DATA FLOW?
• ESCALA HORIZONTAL
• PARTICIONAMENTO DOS ARQUIVOS, REMOTE PARTITIONING (MANAGER E WORKERS)
• CACHE
• REDIS? KAFKA?