Alura > Cursos de Dados > Cursos de Engenharias e Arquiteturas de Dados > Conteúdos de Engenharias e Arquiteturas de Dados > Primeiras aulas do curso Engenharia de Dados: Streaming - Apache Kafka e Spark Structured Streaming

Engenharia de Dados: Streaming - Apache Kafka e Spark Structured Streaming

Conhecendo a arquitetura de streaming - Apresentação

Apresentando a instrutora e realizando audiodescrição

Olá! Eu sou Agnes Huescas, instrutora na Alura e também engenheira de dados. No meu dia a dia, construo pipelines (fluxos de dados), realizo monitoramento e desenvolvo infraestrutura em nuvem. Por acessibilidade, vou me autodescrever.

Audiodescrição: Sou uma mulher branca, de cabelo castanho comprido, uso óculos com armação transparente, visto uma blusa preta e, ao fundo, está o estúdio da Alura, com uma estante à minha esquerda, com algumas plantas e algumas luzes. Estou olhando diretamente para a câmera.

Contextualizando o problema e introduzindo a solução

Você já se perguntou como as empresas conseguem obter informações e acompanhar seus pedidos e pagamentos quase em tempo real, no momento em que tudo está acontecendo? Em muitos desses cenários, há um pipeline (fluxo de processamento) sendo executado continuamente para transformar esses dados em informações úteis para o negócio.

Neste curso, nós construiremos uma solução como essa, utilizando Apache Kafka e Spark Structured Streaming. Durante o curso, nós desenvolveremos sistemas de monitoramento de pedidos de um e-commerce (comércio eletrônico). Os pedidos serão publicados em um tópico do Kafka e, em seguida, serão consumidos pelo Spark Structured Streaming. Ao longo do processamento, nós estruturaremos dados, realizaremos transformações, calcularemos métricas de negócio e disponibilizaremos esses resultados para outras aplicações em tempo real.

Detalhando os conceitos e resultados do curso

Para alcançar esse resultado, começaremos entendendo alguns conceitos fundamentais do Apache Kafka, configurando nosso ambiente, publicando e consumindo eventos, conectando o Spark ao Kafka, transformando mensagens JSON em DataFrames estruturados e construindo um pipeline (fluxo de processamento) de streaming (transmissão contínua).

Também trabalharemos com conceitos importantes, como tempo de evento, janelas, marca d'água, modos de saída, triggers (gatilhos) e pontos de controle, recursos fundamentais para construir um pipeline (fluxo de processamento) de streaming (transmissão contínua) mais confiável.

Ao final do curso, persistiremos nossas métricas em arquivos Parquet e também as publicaremos em um novo tópico do Kafka, permitindo que sejam consumidas por outras aplicações em tempo real.

Apontando pré-requisitos e apresentando recursos de apoio

Para aproveitar melhor este conteúdo, o ideal é que você já tenha conhecimentos básicos de Python, além de noções de engenharia de dados e de processamento em lotes.

Durante todo o curso, você contará com o nosso fórum da Alura e com o nosso canal no Discord para resolver dúvidas e trocar experiências. Além disso, você terá a Luri, nossa assistente de inteligência artificial, com quem poderá aprofundar conceitos, revisar conteúdos e até criar novos exercícios para praticar aspectos específicos ao longo do curso.

Iniciando a preparação do ambiente e convidando para os próximos passos

Agora que você já conhece nosso projeto, o que vamos desenvolver e os principais temas de estudo, vamos preparar nosso ambiente e dar os primeiros passos na construção de um pipeline (fluxo de processamento) de streaming (transmissão contínua) de eventos em tempo real. Vamos?

[♪]

Conhecendo a arquitetura de streaming - Projeto e arquitetura

Apresentando o projeto e a arquitetura

Olá.

Antes de iniciarmos a implementação do projeto, precisamos entender alguns conceitos e conhecer cada componente que fará parte da nossa arquitetura. Neste vídeo, entenderemos exatamente qual é o projeto e qual arquitetura utilizaremos.

Explicando o fluxo de eventos com Kafka e Spark

Imaginemos que uma pessoa cliente acaba de fazer uma compra em um e-commerce (comércio eletrônico). Ao concluir a compra, é gerado um evento com todas as informações: quem é a pessoa cliente, o ID da compra, o valor dessa compra e o horário em que a compra foi realizada. Em vez de enviar essas informações diretamente para cada sistema interessado, a aplicação — o sistema de compras — publicará esse evento em um broker (intermediador de mensagens).

A partir desse momento, o Kafka ficará responsável por receber esses eventos e disponibilizá-los para outras aplicações. Nosso Spark Structured Streaming consumirá continuamente esses eventos vindos do Kafka e, à medida que novos pedidos chegarem, os transformará em informações úteis para o negócio. Essas métricas, que representam informações para o negócio, podem alimentar dashboards (painéis), podem ir para um sistema de monitoramento ou até mesmo enriquecer outras aplicações.

Durante o curso, nós construiremos exatamente essa arquitetura. Em cada aula, implementaremos uma parte desse fluxo até chegarmos à solução completa em funcionamento.

Justificando o processamento em tempo real

Ao entendermos essa arquitetura, surge uma pergunta importante: por que precisamos processar em tempo real? Podemos considerar alguns casos. Imaginemos que fazemos uma compra suspeita com nosso cartão de crédito. Se esperamos horas para identificar que esse comportamento pode ser fraude, isso pode significar uma grande perda. Se temos, por exemplo, um sistema no qual monitoramos nossas aplicações. Um serviço simplesmente deixou de responder.

Quanto antes identificarmos esse problema, menor será o impacto para você, para as pessoas usuárias, para a sua empresa e para a imagem da sua empresa. Por isso, isso é de extrema importância.

Também podemos acompanhar as vendas no e-commerce (comércio eletrônico). Assim, conseguimos ver o desempenho de uma campanha específica em uma data especial ou identificar rapidamente uma queda na taxa de conversão. Por isso, é interessante que esses dados cheguem em tempo real para que possamos fazer essas análises.

Comparando processamento em batch e streaming

Existem dois tipos de processamento: processamento por lotes, em batch (lotes), e processamento em streaming (transmissão contínua).

Como ocorre o processamento por lotes? Geralmente, esperamos acumular uma quantidade maior de dados e os processamos em lote. É como quando queremos um relatório diário de vendas: esperamos acumular todas as vendas do dia e, de madrugada, executamos a automação e extraímos esse relatório. Esperamos os dados se acumularem e processamos tudo de uma vez.

No streaming (transmissão contínua), que é a arquitetura que queremos desenvolver agora, processamos em near real-time (quase em tempo real), muito próximo do tempo real. Nada é efetivamente em tempo real, mas fica muito próximo.

É importante lembrar que streaming (transmissão contínua) e batch (lotes) não se substituem necessariamente. Nas empresas, é comum utilizar ambos os enfoques. Dependendo das suas necessidades, alguns sistemas precisarão de streaming (transmissão contínua), enquanto outros não têm essa necessidade de tempo real e podem ser processados em batch (lotes). Cada um terá particularidades de custo, arquitetura e latência, servindo a cenários diferentes e, em geral, usamos ambos os tipos de processamento.

Definindo a abordagem e encerrando

Como nosso objetivo neste curso é acompanhar os pedidos praticamente em tempo real, vamos utilizar processamento em streaming (transmissão contínua).

Agradeço por me acompanhar neste vídeo e nos vemos no próximo.

Conhecendo a arquitetura de streaming - O que é Apache Kafka

Apresentando o apache kafka

Olá.

Agora que já conhecemos nossa arquitetura, vamos apresentar a primeira tecnologia que utilizaremos nela: Apache Kafka. Podemos imaginar o Apache Kafka como uma plataforma especializada em receber eventos e disponibilizá-los para diferentes aplicações.

Explicando o propósito e as vantagens do kafka

Qual é o propósito disso? Exatamente possibilitar que todo o sistema gere eventos — por exemplo: um pedido criado, um pagamento aprovado, a pessoa usuária iniciou sessão, alguma informação foi atualizada — e que esses eventos permaneçam armazenados por um período para que, posteriormente, possam ser consumidos por outras aplicações.

Uma das grandes vantagens do Kafka é permitir que não apenas uma, mas várias aplicações consumam e utilizem exatamente o mesmo evento. Vamos imaginar que temos um pedido; ele foi realizado e recebido pelo Kafka. Esse dado pode ser disponibilizado para várias áreas diferentes, como inventário, faturamento, analytics (análise de dados) e recomendações de produtos, que poderão consumi-lo e utilizá-lo ao mesmo tempo.

Indicando casos de uso e próximos passos

Pensando em onde encontramos o Kafka no mercado, agora que já entendemos o que é o Kafka, onde podemos encontrá-lo? Podemos encontrá-lo em bancos, e-commerce (comércio eletrônico), streaming (transmissão contínua), IoT (Internet das Coisas) e em diversos serviços que contam com plataformas que geram ou trabalham com grande volume de dados.

Agora que já entendemos qual é o papel do Kafka dentro da nossa arquitetura, no próximo vídeo conheceremos os conceitos fundamentais para utilizá-lo. Nos vemos lá!

Sobre o curso Engenharia de Dados: Streaming - Apache Kafka e Spark Structured Streaming

O curso Engenharia de Dados: Streaming - Apache Kafka e Spark Structured Streaming possui 214 minutos de vídeos, em um total de 87 atividades. Gostou? Conheça nossos outros cursos de Engenharias e Arquiteturas de Dados em Dados, ou leia nossos artigos de Dados.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Engenharias e Arquiteturas de Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas