View a markdown version of this page

Cenário 3: preparar dados de clickstream para processos de insights de dados - Soluções de streaming de dados na AWS com o Amazon Kinesis

Cenário 3: preparar dados de clickstream para processos de insights de dados

A Fast Sneakers é uma boutique de moda com foco em tênis modernos. O preço de qualquer par de sapatos pode subir ou descer dependendo do estoque e das tendências, por exemplo, qual celebridade ou estrela do esporte foi vista usando um tênis de marca na TV na noite passada. É importante que a Fast Sneakers acompanhe e analise essas tendências para maximizar sua receita.

A Fast Sneakers não quer introduzir sobrecarga adicional no projeto com nova infraestrutura para manter. Eles querem ter a capacidade de dividir o desenvolvimento com as partes apropriadas e que os engenheiros de dados possam se concentrar na transformação de dados e os cientistas de dados possam trabalhar em sua funcionalidade de ML de forma independente.

Para reagir de forma rápida e ajustar automaticamente os preços de acordo com a demanda, a Fast Sneakers transmite eventos significativos (como dados de compras e cliques em áreas de interesse), transformando e aumentando os dados do evento e alimentando-os em um modelo de ML. Seu modelo de ML é capaz de determinar se um ajuste de preço é necessário. Isso permite que a Fast Sneakers modifique automaticamente seus preços para maximizar o lucro de seus produtos.

Ajustes de preços em tempo real da Fast Sneakers

Ajustes de preços em tempo real da Fast Sneakers

Este diagrama de arquitetura mostra a solução de streaming em tempo real que a Fast Sneakers criou utilizando o Kinesis Data Streams, o AWS Glue e o DynamoDB Streams. Ao aproveitar esses serviços, eles têm uma solução elástica e confiável, sem a necessidade de perder tempo configurando e mantendo a infraestrutura de suporte. Eles podem dedicar seu tempo ao que agrega valor para sua empresa, concentrando-se em um trabalho de extração, transformação e carga (ETL) de streaming e seu modelo de machine learning.

Para entender melhor a arquitetura e as tecnologias usadas em sua workload, veja alguns detalhes dos serviços usados.

AWS Glue e streaming do AWS Glue

AWS Glue é um serviço ETL totalmente gerenciado que você pode usar para catalogar seus dados, limpá-los, enriquecê-los e movê-los de forma confiável entre armazenamentos de dados. Com o AWS Glue, é possível reduzir significativamente o custo, a complexidade e o tempo gasto na criação de trabalhos de ETL. O AWS Glue não tem servidor, portanto, não há infraestrutura para configurar ou gerenciar. Você paga apenas pelos recursos consumidos durante a execução dos trabalhos.

Ao utilizar o AWS Glue, você pode criar uma aplicação de consumidor com um trabalho ETL de streaming do AWS Glue. Dessa forma, você pode utilizar o Apache Spark e outros módulos baseados no Spark para consumir e processar seus dados de eventos. A próxima seção deste documento aborda mais detalhadamente esse cenário.

AWS Glue Data Catalog

O AWS Glue Data Catalog contém referências aos dados que são usados como fontes e destinos de seus trabalhos de ETL no AWS Glue. O AWS Glue Data Catalog é um índice para as métricas de localização, esquema e tempo de execução dos seus dados. Use as informações no Catálogo de dados para criar e monitorar seus trabalhos de ETL. As informações no Catálogo de dados são armazenadas como tabelas de metadados, em que cada tabela especifica um único armazenamento de dados. Ao configurar um rastreador, você pode avaliar automaticamente vários tipos de armazenamentos de dados, incluindo armazenamentos conectados do DynamoDB, do S3 e do Java Database Connectivity (JDBC), extrair metadados e esquemas e, depois, criar definições de tabela no AWS Glue Data Catalog.

Para trabalhar com o Amazon Kinesis Data Streams em trabalhos de ETL de streaming do AWS Glue, é uma prática recomendada definir seu fluxo em uma tabela em um banco de dados AWS Glue Data Catalog. Você define uma tabela originária do fluxo com o fluxo do Kinesis, um dos muitos formatos compatíveis (CSV, JSON, ORC, Parquet, Avro ou um formato de cliente com Grok). É possível inserir manualmente um esquema ou deixar essa etapa para o trabalho do AWS Glue determinar durante o tempo de execução do trabalho.

Trabalho de ETL de streaming do AWS Glue

O AWS Glue executa seus trabalhos de ETL em um ambiente sem servidor Apache Spark. O AWS Glue executa esses trabalhos em recursos virtuais que ele provisiona e gerencia na sua própria conta de serviço. Além de poder executar trabalhos baseados no Apache Spark, o AWS Glue fornece um nível adicional de funcionalidade além do Spark com o DynamicFrames.

O DynamicFrames são tabelas distribuídas que são compatíveis com dados aninhados, como estruturas e matrizes. Cada registro é autodescritivo, projetado para flexibilidade de esquema com dados semiestruturados. Um registro em um DynamicFrame contém os dados e o esquema que descreve os dados. Tanto o Apache Spark DataFrames quanto o DynamicFrames são compatíveis com seus scripts ETL, e você pode convertê-los livremente. O DynamicFrames fornece um conjunto de transformações avançadas para limpeza de dados e ETL.

Ao usar o Spark Streaming em seu trabalho do AWS Glue, você pode criar trabalhos de ETL de streaming que são executados continuamente e consumir dados de fontes de streaming, como o Amazon Kinesis Data Streams, o Apache Kafka e o Amazon MSK. Os trabalhos podem limpar, mesclar e transformar os dados e, depois, carregar os resultados em armazenamentos, incluindo armazenamentos de dados do Amazon S3, do Amazon DynamoDB ou do JDBC.

Por padrão, o AWS Glue processa e grava dados em janelas de 100 segundos. Isso permite que os dados sejam processados de forma eficiente e que as agregações sejam realizadas em dados que chegam mais tarde do que o esperado. Você pode configurar o tamanho da janela ajustando-a para acomodar a velocidade da resposta em comparação com a precisão da sua agregação. Os trabalhos de streaming do AWS Glue usam pontos de verificação para rastrear os dados lidos do Kinesis Data Stream. Para obter uma demonstração da criação de um trabalho de ETL de streaming no AWS Glue, consulte Adicionar trabalhos de ETL de streaming ao AWS Glue

Amazon DynamoDB

O Amazon DynamoDB é um banco de dados de chave-valor e documentos que oferece performance abaixo de 10 milissegundos em qualquer escala. É um banco de dados totalmente gerenciado, multirregional, multiativo e durável com segurança, backup e restauração integrados e armazenamento em cache na memória para aplicações em escala de Internet. O DynamoDB pode processar mais de 10 trilhões de solicitações por dia e comportar picos de mais de 20 milhões de solicitações por segundo.

Captura de dados de alteração do DynamoDB Streams

Um fluxo do DynamoDB é um fluxo ordenado de informações sobre alterações em itens de uma tabela do DynamoDB. Quando você ativa um fluxo em uma tabela, o DynamoDB captura informações sobre todas as modificações em itens de dados na tabela. O DynamoDB é executado no AWS Lambda para que você possa criar acionadores, ou seja, partes de código que respondem automaticamente a eventos no DynamoDB Streams. Com os acionadores, você pode criar aplicações que reagem às modificações de dados em tabelas do DynamoDB.

Quando um fluxo é habilitado em uma tabela, você pode associar o Nome de recurso da Amazon (ARN) do fluxo a uma função do Lambda criada por você. Imediatamente após um item da tabela ser modificado, um novo registro é exibido no fluxo da tabela. O AWS Lambda faz uma sondagem no fluxo e invoca a função do Lambda de forma síncrona ao detectar novos registros de fluxo.

Endpoints de serviço do Amazon SageMaker e do Amazon SageMaker

O Amazon SageMaker é uma plataforma totalmente gerenciada que permite que desenvolvedores e cientistas de dados criem, treinem e implantem modelos de ML rapidamente e em qualquer escala. O SageMaker inclui módulos que podem ser usados em conjunto ou de forma independente para criar, treinar e implantar modelos de ML. Com os endpoints de serviço do Amazon SageMaker, você pode criar um endpoint hospedado gerenciado para inferência em tempo real com um modelo implantado desenvolvido dentro ou fora do Amazon SageMaker.

Ao utilizar o AWS SDK, você pode invocar um endpoint do SageMaker transmitindo informações de tipo de conteúdo junto com o conteúdo e, depois, receber previsões em tempo real com base nos dados transmitidos. Isso permite que você mantenha o design e o desenvolvimento de seus modelos de ML separados do código que executa ações nos resultados inferidos.

Isso permite que os cientistas de dados se concentrem no ML e os desenvolvedores que estão usando o modelo de ML se concentrem na forma como o usam no código. Para obter mais informações sobre como invocar um endpoint no SageMaker, consulte InvokeEnpoint na Referência de API do Amazon SageMaker.

Inferir insights de dados em tempo real

O diagrama de arquitetura anterior mostra que a aplicação web existente da Fast Sneakers adicionou um Kinesis Data Stream contendo eventos de clickstream, que fornece dados de tráfego e eventos do site. O catálogo de produtos, que contém informações como categorização, atributos do produto e preços, e a tabela de pedidos, que tem dados como itens pedidos, faturamento, remessa, etc., são tabelas separadas do DynamoDB. A fonte do fluxo de dados e as tabelas apropriadas do DynamoDB têm seus metadados e esquemas definidos no AWS Glue Data Catalog a serem usados pelo trabalho de ETL de streaming do AWS Glue.

Ao utilizar o Apache Spark, o streaming do Spark e o DynamicFrames em seu trabalho de ETL de streaming do AWS Glue, a Fast Sneakers consegue extrair dados de qualquer fluxo de dados e transformá-los mesclando dados das tabelas de produtos e pedidos. Com os dados hidratados da transformação, os conjuntos de dados dos quais obter resultados de inferência são enviados para uma tabela do DynamoDB.

O fluxo do DynamoDB para a tabela aciona uma função do Lambda para cada novo registro gravado. A função do Lambda envia os registros transformados anteriormente a um endpoint do SageMaker com o AWS SDK para inferir quais ajustes de preço são necessários para um produto, se for o caso. Se o modelo de ML identificar que um ajuste no preço é necessário, a função do Lambda gravará a alteração de preço no produto na tabela do catálogo do DynamoDB.

Resumo

O Amazon Kinesis Data Streams facilita a coleta, o processo e a análise de dados de streaming em tempo real, permitindo que você obtenha insights oportunos e reaja rapidamente às novas informações. Combinado com o serviço de integração de dados do AWS Glue sem servidor, você pode criar aplicações de streaming de eventos em tempo real que preparam e combinam dados para ML.

Como o Kinesis Data Streams e os serviços do AWS Glue são totalmente gerenciados, a AWS elimina o esforço indiferenciado de gerenciar a infraestrutura da sua plataforma de big data, permitindo que você se concentre na geração de insights de dados com base nos seus dados.

A Fast Sneakers pode utilizar o processamento de eventos em tempo real e o ML para permitir que seu site faça ajustes de preços em tempo real totalmente automatizados, para maximizar o estoque de produtos. Isso traz o máximo valor para seus negócios, evitando a necessidade de criar e manter uma plataforma de big data.