O gerenciamento de logs de aplicativos de alto quantity em escala apresenta desafios, desde desempenho lento de consultas e dificuldade de execução de agregações complexas até a manutenção de análises em tempo actual em dados de streaming. Visualizações materializadas do Apache Iceberg com Cola AWS, Amazon Knowledge Firehosee AWS Lambda enfrente esses desafios acelerando a análise de log por meio de resultados de consulta pré-computados.
Nesta postagem, você aprenderá como criar um pipeline de log de aplicativo para uso em produção com Registros do Amazon CloudWatchtabelas materializadas AWS Lambda, Amazon Knowledge Firehose, AWS Glue e Apache Iceberg. Em seguida, você usa visualizações materializadas para acelerar o desempenho da consulta. Esta solução ajuda você a obter tempos de resposta de consulta mais rápidos em dados de log em grande escala, sem exigir que você gerencie a atualização contínua do knowledge lake.
Visão geral da solução
Esta solução acelera a análise de log pré-computando os resultados da consulta por meio de visualizações materializadas do Apache Iceberg. Ao consultar resultados pré-agregados em vez de verificar dados brutos de log para cada solicitação, você pode ajudar a reduzir os tempos de resposta da consulta. Por exemplo, consultas que anteriormente levavam minutos para examinar terabytes de dados brutos podem retornar em segundos a partir da visualização materializada compacta. Os resultados são atualizados automaticamente à medida que novos logs chegam, ajudando você a lidar com fluxos de log de alto quantity e, ao mesmo tempo, mantendo um desempenho analítico rápido.

Visão geral da arquitetura
A arquitetura consiste em serviços AWS trabalhando juntos para criar um pipeline de dados:
- Registros do Amazon CloudWatch recebe logs de aplicativos e eventos do sistema e os encaminha para destinos downstream usando filtros de assinatura do CloudWatch Logs. O CloudWatch Logs possui um mecanismo de nova tentativa integrado. Se o serviço de destino retornar um erro que pode ser repetido, O CloudWatch Logs tenta novamente automaticamente entrega em até 24 horas.
- AWS Lambda serve como camada de transformação, analisando mensagens de log, enriquecendo dados e preparando registros para armazenamento.
- Amazon Knowledge Firehose armazena em buffer os dados recebidos e lida com os requisitos técnicos de gravação em tabelas Apache Iceberg (um formato de tabela de dados de código aberto), incluindo otimização de lote, validação de esquema e lógica de repetição automática para gravações com falha.
- Tabelas Apache Iceberg armazenado em Serviço de armazenamento simples da Amazon (Amazon S3) fornece Suporte a transações ACID, capacidades de evolução de esquemae desempenho de consulta eficiente. As visualizações materializadas são tabelas gerenciadas no AWS Glue Knowledge Catalog que armazenam resultados de consultas pré-computadas no formato Apache Iceberg.
- Cola AWS executa um trabalho único durante a criação da pilha para provisionar o banco de dados Iceberg, a tabela base e a estrutura de visualização materializada no Catálogo de Dados. Um segundo trabalho programado do Glue atualiza a visão materializada recalculando agregações da tabela base em um intervalo configurável ajudando consultas downstream por meio Amazon Atenas retorne resultados atualizados e pré-agregados sem digitalizar dados brutos.
Essa arquitetura foi projetada para oferecer suporte a escalabilidade automática, infraestrutura sem servidor, tratamento de erros que roteia registros com falha para o Amazon S3 para análise e reprodução, captura de invocações do Lambda com falha para nova tentativa automática e monitoramento em tempo actual por meio de métricas do Amazon CloudWatch.
Pré-requisitos
Antes de implementar a solução, revise os pré-requisitos a seguir.
- Conta AWS com as permissões necessárias para executar um modelo do AWS CloudFormation, executar trabalhos do AWS Glue e executar consultas para verificar os dados da tabela Iceberg usando o Amazon Athena.
- Familiaridade básica com Boto3 para entender o código Python. Compreensão básica do Apache Iceberg conceitos.
Implantação da solução
As etapas de implantação a seguir orientam você na implementação desta solução em sua conta da AWS.
Etapa 1: implantar a pilha de pipeline do AWS CloudFormation
Você pode implantar esta solução usando uma pilha do AWS CloudFormation. O modelo cuida da criação de buckets do Amazon S3, do add de scripts do AWS Glue e do Lambda, do provisionamento de funções do IAM, da configuração do fluxo de entrega do Firehose e da execução do trabalho do Glue para criar o banco de dados Iceberg, a tabela base e a visualização materializada.
Inicie a pilha no console do AWS CloudFormation. Revise os parâmetros marcados como OBRIGATÓRIOS e ajuste as opções de alternância (CreateScriptBucket, EnableLakeFormation, CreateSubscriptionLogGroup) com base no seu ambiente. Outros parâmetros incluem padrões pré-configurados que você deve revisar para seu ambiente. Escolha o CloudFormation pilha para implantar recursos usando o console do AWS CloudFormation.

Visualização dos parâmetros necessários da pilha de pipeline no console do AWS CloudFormation.

Parâmetros adicionais necessários para a pilha de pipeline no console do AWS CloudFormation.
Etapa 2: testar o pipeline de ponta a ponta
Envie exemplos de eventos de log que correspondam ao esquema da tabela Iceberg (por exemplo, id, customer_name, quantitye order_date) ao grupo de logs do CloudWatch. O filtro de assinatura aciona o Lambda, que encaminha os registros ao Firehose para entrega na tabela Iceberg.

Execução de eventos de teste.
Verifique a entrega de dados e atualize a visão materializada
Aguarde aproximadamente 30 segundos (saiba mais em Dados de buffer para particionamento dinâmico) para o Buffer de mangueira de incêndio para dar descarga. Após a liberação do buffer, execute a consulta a seguir no Amazon Athena para verificar se os dados foram entregues com êxito à tabela base.

Resultado da consulta usando Amazon Athena.
Atualização automatizada de visualização materializada
Neste exemplo, a pilha do AWS CloudFormation provisiona um trabalho do Glue configurado para executar a atualização da visualização materializada (MV) uma vez por dia à meia-noite UTC, o que significa que o MV reflete os dados até o dia anterior. Você pode ajustar a programação cron do gatilho para atender aos requisitos comuns de atualização de MV, como por hora, a cada 15 minutos ou sob demanda.
O trabalho Glue executa um recálculo completo das agregações da tabela base do Iceberg e grava os resultados no MV. Os consumidores downstream que fazem consultas por meio do Athena leem essa visualização pré-agregada, proporcionando desempenho mais rápido. Isto é especialmente crítico em cenários reais de produção, onde a tabela base contém milhões de registros e inúmeras colunas. A computação de agregações diretamente de dados brutos no momento da consulta degradaria o desempenho do aplicativo downstream.

Visualização agendada do trabalho no console do AWS Glue.
Em um ambiente de produção, a tabela base Iceberg armazena cada evento de pedido particular person, potencialmente milhões de linhas com dezenas de colunas crescendo diariamente. Quando painéis ou aplicativos downstream precisam de insights agregados, como receita diária por cliente ou contagens mensais de pedidos por região, a consulta direta à tabela base força o Athena a verificar terabytes de dados brutos em cada solicitação. Isso resulta em tempos de resposta lentos e altos custos em escala. A visualização materializada resolve isso pré-computando essas agregações em nível de negócios uma vez durante a atualização agendada, armazenando os resultados em uma tabela compacta e criada especificamente para esse fim, com muito menos linhas e colunas. Isso significa que uma consulta no painel que examinaria milhões de registros brutos agora é lida em uma tabela pré-agregada, projetada para reduzir o tempo de resposta da consulta. A tabela base continua sendo sua fonte de verdade para pesquisas granulares em nível de linha, enquanto a visualização materializada serve como camada de desempenho para consultas analíticas repetidas com lógica de negócios incorporada.

Resultado da consulta de visualização materializada usando Amazon Athena
Alternativa: tabelas Amazon S3
Esta solução também pode ser implementada usando Tabelas Amazon S3que fornece uma experiência Apache Iceberg totalmente gerenciada com suporte nativo para visualizações materializadas. Nesta postagem, usamos a abordagem baseada em Glue para demonstrar a mecânica subjacente e fornecer flexibilidade whole para personalizar a lógica de atualização de acordo com seus requisitos específicos. Para saber mais, consulte Primeiros passos com tabelas S3.
Limpar
Para evitar incorrer em cobranças futuras, exclua os recursos que você criou como parte deste exercício se não planeja usá-los posteriormente. Exclua as pilhas criadas nas etapas anteriores, esvazie e exclua os buckets do Amazon S3.
Conclusão
Esta solução mostra como criar um pipeline de dados de log de aplicativos escalável que entrega eventos de log do Amazon CloudWatch Logs para tabelas do Apache Iceberg usando AWS Lambda e Amazon Knowledge Firehose. Essa arquitetura usa serviços AWS totalmente gerenciados para minimizar a sobrecarga operacional e, ao mesmo tempo, fornecer alta disponibilidade e desempenho consistente.
Os principais pontos fortes incluem infraestrutura sem servidor projetada para suportar escalabilidade automática, tratamento de erros projetado para rotear registros com falha para o Amazon S3 para solução de problemas e reprodução, e recursos de análise por meio do Apache Iceberg Transações ACID e otimizações de desempenho de consulta. À medida que você transfer esta solução para produção, recomendamos que você implemente verificações de qualidade de dados no Lambda e configure a criptografia em descansar e em trânsito para seus dados. Você também pode estabelecer políticas de retenção de dados e explorar estratégias de particionamento para melhor desempenho da consulta.
Agora você tem um pipeline de análise de log criado para uso em produção que se adapta à sua carga de trabalho.