6 min de leitura
•
18 de agosto de 2025
Com o crescimento exponencial da geração de dados, surgiu o conceito de Big Data, que trata dos desafios de armazenar, processar e extrair valor de grandes volumes de dados de forma eficiente.
Dentro desse contexto, existem duas principais formas de processar dados em larga escala:
Ambas possuem propósitos distintos e sua escolha depende diretamente do contexto de aplicação.
Comparativo | Batch Processing | Stream Processing |
---|---|---|
Natureza do processamento | Dados são acumulados e processados em massa | Dados são processados conforme sua chegada |
Frequência de execução | Agendada (hora, dia, semana, mês) | Contínua |
Casos de uso | Relatórios, ETLs e reconciliação de dados | Monitoramento, detecção de fraude e alertas |
Tempo de processamento normalmente encontrado | Minutos ou horas | Milissegundos ou segundos |
O processamento em lote possui um conjunto próprio de características e desafios:
De acordo com Martin Kleppmann, em seu livro Designing Data-Intensive Applications, os sistemas podem ser classificados em três categorias:
Online — Respondem a requisições em tempo real, priorizando a latência.
Exemplos: APIs REST, aplicações web, bancos de dados transacionais.
Near Real-Time (quase em tempo real) — Combinam aspectos de batch e stream, processando eventos à medida que ocorrem, com baixa latência, mas não imediata.
Exemplos: sistemas de recomendação, atualização de dashboards, stream processors (Kafka Streams, Flink).
Offline — Processam grandes volumes de dados acumulados, geralmente em execuções agendadas. O foco está no throughput.
Exemplos: geração de relatórios, ETL em data warehouses, reconciliações financeiras.
As aplicações batch se enquadram como sistemas offline.
Apesar do avanço do stream processing, o batch continua amplamente utilizado, especialmente em cenários onde:
As aplicações batch podem ser divididas em três modelos, de acordo com a origem dos dados de entrada:
Um dos algoritmos mais notórios nesse contexto é o MapReduce, popularizado pelo Google em 2004 para viabilizar o processamento massivo de dados.
Esse modelo inspirou frameworks como Apache Hadoop e Apache Spark.
Hoje existem diversos frameworks para desenvolvimento de aplicações batch, sendo o Spring Batch um dos mais utilizados.
O Spring Batch é um framework robusto para o desenvolvimento de aplicações batch. Ele faz parte do ecossistema Spring Framework.
Ele oferece:
Importante: o Spring Batch depende de um banco relacional para persistência dos metadados de execução.
O Spring Batch possui diversas características que permitem ao desenvolvedor:
A arquitetura do Spring Batch é dividida em três camadas:
Principais conceitos do Spring Batch:
Esses conceitos são representados por objetos e persistidos nas tabelas de metadados do Spring Batch.
Componentes principais disponibilizados pelo framework:
O Spring Batch suporta duas estratégias de execução:
No repositório abaixo, são implementados dois jobs:
Esses exemplos podem servir como base para construção de batches mais complexos.
📂 Repositório: spring-batch-handson
Spring Batch Docs - https://docs.spring.io/spring-batch/docs/current/reference/html/
Enterprise Integration Patterns – Gregor Hohpe, Bobby Woolf
Designing Data-Intensive Applications - Martin Kleppmann
Spunk Article - https://www.splunk.com/en_us/blog/learn/batch-processing.html