A ingestão de dados é o primeiro passo em qualquer pipeline de engenharia de dados. Assim como uma fábrica precisa de matérias-primas antes de fabricar produtos, um sistema de dados precisa coletar dados antes de analisá-los. No exame AWS DEA-C01, uma das perguntas mais frequentes é "qual serviço de ingestão você escolheria para essa situação?" Este guia começa com os dois conceitos fundamentais — streaming e batch — e explica cada serviço da AWS com analogias fáceis de entender para iniciantes.
Streaming vs Batch — A Analogia do Abastecimento de Água
Há duas formas fundamentais de coletar dados.
O streaming é como um cano de água: os dados fluem continuamente em tempo real. Cada vez que um usuário clica em um aplicativo, cada vez que um sensor lê uma temperatura, os dados daquele momento são enviados imediatamente. A latência é de milissegundos a segundos, e responde à pergunta "o que está acontecendo agora?"
O batch é como um reservatório de água: os dados se acumulam e são entregues todos de uma vez em um horário programado. Pense em processar todas as transações do dia à meia-noite, ou analisar as vendas da semana passada toda segunda-feira de manhã. Não há tempo real, mas é eficiente e mais simples de implementar.
| Aspecto | Streaming | Batch | |---------|-----------|-------| | Chegada dos dados | Tempo real (contínua) | Periódica (tudo de uma vez) | | Latência | Milissegundos a segundos | Minutos a horas ou dias | | Casos de uso | Detecção de fraude em tempo real, monitoramento de preços | Relatórios mensais de vendas, ETL noturno | | Serviços AWS | Kinesis Data Streams, MSK | DMS, AppFlow, Transfer Family |
!Ingestão de dados em streaming vs em lote
Kinesis Data Streams — A Rodovia para Dados em Tempo Real
Kinesis Data Streams é um serviço para coletar e processar grandes volumes de dados em tempo real. Imagine uma rodovia com múltiplas faixas (shards). Quanto mais faixas você tiver, mais carros (registros de dados) podem trafegar ao mesmo tempo.
Entender os shards é o conceito-chave. Cada shard fornece 1 MB/s de escrita e 2 MB/s de leitura. À medida que o volume de dados cresce, você divide os shards para aumentar a capacidade.
A chave de partição (partition key) determina para qual shard um registro vai. Registros com a mesma chave de partição sempre vão para o mesmo shard. Por exemplo, se você usar o ID do cliente como chave de partição, todos os eventos do mesmo cliente chegam ao mesmo shard em ordem.
Principais características:
Retenção: Por padrão os dados são mantidos por 24 horas; pode ser estendido até 365 dias. Mesmo que um processador falhe, os dados ainda estão lá esperando. Reprocessamento (Replayability): Você pode ler os mesmos dados várias vezes. Isso significa que você pode reprocessar dados depois de corrigir um bug na lógica, ou ter múltiplos sistemas lendo o mesmo stream de forma independente. Múltiplos consumidores: AWS Lambda, Kinesis Data Firehose e aplicações KCL podem se conectar como consumidores ao mesmo tempo. Enhanced Fan-out: No modo padrão, todos os consumidores compartilham os 2 MB/s de leitura por shard. O Enhanced Fan-out dá a cada consumidor registrado seus próprios 2 MB/s dedicados.
Kinesis Data Streams requer gerenciamento ativo. Você configura o número de shards e constrói suas próprias aplicações consumidoras. Em troca, você tem total flexibilidade e reprocessamento completo.
Kinesis Data Firehose — Entrega Automática ao Seu Destino
Kinesis Data Firehose é como um serviço de entrega de dados. O entregador (Firehose) pega os pacotes (registros de dados) e os entrega automaticamente no endereço que você especificou (S3, Redshift, OpenSearch, etc.). Você não precisa dirigir o caminhão.
Por ser completamente serverless, não há infraestrutura para gerenciar — sem shards, sem servidores. Você simplesmente envia dados e o Firehose cuida do resto.
Principais características:
Destinos de entrega automática: Amazon S3, Amazon Redshift, Amazon OpenSearch Service e endpoints HTTP são suportados nativamente. Buffering: Em vez de entregar um registro por vez, o Firehose acumula dados até atingir um limite de tamanho (ex.: 5 MB) ou de tempo (ex.: 60 segundos), e então entrega um lote. Isso evita que milhares de arquivos pequenos se acumulem no S3. Transformação com Lambda: Antes de entregar os dados, o Firehose pode invocar uma função Lambda para transformá-los — por exemplo, converter JSON para Parquet ou mascarar campos sensíveis. Sem consumidores personalizados: Ao contrário do Data Streams, o Firehose só entrega para seus destinos predefinidos. Sem reprocessamento: Uma vez entregues os dados, você não pode relê-los do Firehose.
Kinesis Data Streams vs Kinesis Data Firehose:
| Aspecto | Data Streams | Firehose | |---------|-------------|---------| | Gerenciamento | Gerenciamento manual de shards | Completamente serverless | | Consumidores | Apps consumidoras personalizadas | Apenas destinos fixos | | Reprocessamento | Sim | Não | | Latência | Milissegundos | Dezenas de segundos a minutos | | Melhor para | Processamento complexo em tempo real | Carga automática simples para S3/Redshift |
Amazon MSK — Kafka Gerenciado na AWS
Apache Kafka é uma plataforma de streaming de código aberto originalmente criada pelo LinkedIn, amplamente usada para streaming de dados em larga escala. Amazon MSK (Managed Streaming for Apache Kafka) é um serviço onde a AWS gerencia o cluster Kafka por você.
Pense na diferença entre "construir e operar seus próprios servidores Kafka" versus "ter a AWS gerenciando o Kafka para você (MSK)." Com o MSK, a AWS cuida das atualizações de brokers, patches e recuperação de falhas.
MSK vs Kinesis Data Streams:
| Aspecto | Amazon MSK | Kinesis Data Streams | |---------|-----------|---------------------| | Tecnologia base | Apache Kafka | Tecnologia proprietária AWS | | Ecossistema | Compatibilidade total com ecossistema Kafka | Nativo da AWS | | Migração | Código Kafka existente funciona como está | Reescrita de código necessária | | Complexidade operacional | Relativamente alta | Baixa | | Escolha quando | Precisa do ecossistema Kafka | Começa projeto nativo na AWS |
Dica para o exame: Se a pergunta mencionar "migrar uma carga de trabalho Kafka existente para AWS" ou "ecossistema Kafka," escolha MSK. Se disser "streaming nativo da AWS," escolha Kinesis Data Streams.
Serviços de Ingestão Batch — Coletando e Processando em Lotes
Para ingestões periódicas ou de grande volume que não requerem tempo real, estes são os serviços adequados.
AWS DMS (Database Migration Service)
DMS é como uma empresa de mudanças profissional. Pega os móveis (dados) da sua casa antiga (banco de dados de origem) e os move para a casa nova (banco de dados de destino).
Migração homogênea: MySQL para MySQL, Oracle para Oracle Migração heterogênea: Oracle para Aurora PostgreSQL, SQL Server para MySQL CDC (Change Data Capture): O DMS captura continuamente cada INSERT, UPDATE e DELETE do banco de dados de origem e aplica essas mudanças no destino. É como seguir o "diário de mudanças" de um banco de dados em tempo real. Carga completa mais CDC: Primeiro copia todos os dados existentes, depois sincroniza continuamente apenas as mudanças.
AWS AppFlow
AppFlow traz dados de aplicações SaaS — Salesforce, SAP, Google Analytics, Slack e mais — para a AWS. Em vez de escrever código de integração de API personalizado para cada serviço SaaS, o AppFlow permite configurar a conexão com alguns cliques.
Destinos: S3, Redshift, Salesforce, Snowflake e outros Executa conforme um cronograma ou acionado por eventos Pode filtrar e transformar dados em trânsito Sem necessidade de código para ingestar dados de SaaS
AWS Transfer Family
O Transfer Family permite que parceiros externos façam upload e download de arquivos para S3 ou EFS usando os protocolos SFTP, FTP, FTPS ou AS2. Se um parceiro comercial envia arquivos CSV via SFTP todos os dias e você quer que esses arquivos sejam automaticamente armazenados no S3, o Transfer Family é a solução.
S3 Event Notifications
Quando um arquivo é enviado para ou excluído de um bucket S3, as S3 Event Notifications podem acionar automaticamente outro serviço. Por exemplo, quando um parceiro faz upload de um CSV para seu bucket S3, uma função Lambda começa a processá-lo imediatamente. As notificações podem ser enviadas para SQS, SNS, Lambda ou EventBridge.
Resumo dos Pontos-Chave para o Exame
| Palavra-chave | Escolha este serviço | |--------------|---------------------| | Streaming em tempo real, processamento personalizado, reprocessável | Kinesis Data Streams | | Dados em tempo real carregados automaticamente para S3/Redshift, serverless | Kinesis Data Firehose | | Apache Kafka gerenciado, migrar carga de trabalho Kafka existente | Amazon MSK | | Migração de banco de dados, CDC | AWS DMS | | Ingerir dados de apps SaaS (Salesforce, etc.) | AWS AppFlow | | Transferência de arquivos SFTP/FTP para S3 | AWS Transfer Family | | Acionar processamento automaticamente ao enviar arquivo para S3 | S3 Event Notifications + Lambda |
Guia de decisão Data Streams vs Firehose: Se você precisa de lógica de consumo personalizada ou da capacidade de reprocessar dados, escolha Data Streams. Se simplesmente precisa coletar dados automaticamente no S3 ou Redshift sem processamento personalizado, o Firehose é a opção mais simples e econômica.