Este cenário de exemplo descreve um pipeline para ingestão em massa e análise quase em tempo real de documentos provenientes de feeds de notícias RSS públicos. Utiliza os Serviços Cognitivos do Azure para fornecer informações úteis com base na tradução de texto, reconhecimento facial e deteção de sentimentos. Especificamente, as etapas de processamento de imagem e linguagem natural são conectadas em um pipeline de mensagens baseado no Barramento de Serviço do Azure. A saída do pipeline é uma notificação contendo o insight ou análise.
Arquitetura
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de dados
Os dados fluem através da solução da seguinte forma:
Um feed de notícias RSS atua como o gerador que obtém dados de um documento ou artigo. Por exemplo, com um artigo, os dados geralmente incluem um título, um resumo do corpo original da notícia e, às vezes, imagens.
Um gerador ou processo de ingestão insere o artigo e quaisquer imagens associadas em uma Coleção do Azure Cosmos DB.
Uma notificação dispara uma função de ingestão no Azure Functions que armazena o texto do artigo no Azure Cosmos DB e as imagens do artigo (se houver) no Armazenamento de Blobs do Azure. O artigo é então passado para a próxima fila.
Uma função translate é acionada pelo evento queue. Ele usa a API Traduzir Texto dos serviços de IA do Azure para detetar o idioma, traduzir, se necessário, e coletar o sentimento, as frases-chave e as entidades do corpo e do título. Em seguida, passa o artigo para a próxima fila.
Uma função detect é acionada a partir do artigo enfileirado. Ele usa o serviço de Visão por Computador para detetar objetos, pontos de referência e palavras escritas na imagem associada e, em seguida, passa o artigo para a próxima fila.
Uma função face é acionada a partir do artigo em fila. Ele usa o serviço de API do Azure Face para detetar rostos por sexo e idade na imagem associada e, em seguida, passa o artigo para a próxima fila.
Quando todas as funções estiverem concluídas, a função notify será acionada. Ele carrega os registros processados para o artigo e os verifica para quaisquer resultados que você deseja. Se encontrado, o conteúdo é sinalizado e uma notificação é enviada para o sistema de sua escolha.
Em cada etapa de processamento, a função grava os resultados no Azure Cosmos DB. Em última análise, os dados podem ser usados conforme desejado. Por exemplo, você pode usá-lo para aprimorar processos de negócios, localizar novos clientes ou identificar problemas de satisfação do cliente.
Componentes
A lista a seguir de componentes do Azure é usada neste exemplo.
O Armazenamento do Azure é usado para armazenar arquivos de imagem e vídeo brutos associados a um artigo. Uma conta de armazenamento secundária é criada com o Serviço de Aplicativo do Azure e é usada para hospedar o código e os logs da função do Azure.
O Azure Cosmos DB contém informações de controle de texto, imagem e vídeo do artigo. Os resultados das etapas dos serviços de IA do Azure também são armazenados aqui.
O Azure Functions executa o código de função usado para responder a mensagens de fila e transformar o conteúdo de entrada. O Serviço de Aplicativo do Azure hospeda o código da função e processa os registros em série. Este cenário inclui cinco funções: Ingerir, Transformar, Detetar Objeto, Face e Notificar.
O Barramento de Serviço do Azure hospeda as filas do Barramento de Serviço do Azure usadas pelas funções.
Os serviços de IA do Azure fornecem a IA para o pipeline com base em implementações do serviço de Visão Computacional , API Face e serviço de tradução automática Traduzir Texto .
O Azure Application Insights fornece análises para ajudá-lo a diagnosticar problemas e entender a funcionalidade do seu aplicativo.
Alternativas
Em vez de usar um padrão baseado na notificação de fila e no Azure Functions, você pode usar um tópico e um padrão de assinatura para esse fluxo de dados. Os Tópicos do Barramento de Serviço do Azure podem ser usados para processar as várias partes do artigo em paralelo, em oposição ao processamento serial feito neste exemplo. Para obter mais informações, compare filas e tópicos.
Use os Aplicativos Lógicos do Azure para implementar o código de função e implementar o bloqueio no nível de registro, como o fornecido pelo algoritmo Redlock (que é necessário para processamento paralelo até que o Azure Cosmos DB ofereça suporte a atualizações parciais de documentos). Para obter mais informações, compare Funções e Aplicativos lógicos.
Implemente essa arquitetura usando componentes de IA personalizados em vez dos serviços existentes do Azure. Por exemplo, estenda o pipeline usando um modelo personalizado que deteta determinadas pessoas em uma imagem, em oposição aos dados genéricos de contagem de pessoas, sexo e idade coletados neste exemplo. Para usar modelos personalizados de aprendizado de máquina ou IA com essa arquitetura, crie os modelos como pontos de extremidade RESTful para que possam ser chamados a partir do Azure Functions.
Use um mecanismo de entrada diferente em vez de feeds RSS. Use vários geradores ou processos de ingestão para alimentar o Azure Cosmos DB e o Armazenamento do Azure.
A Pesquisa Cognitiva do Azure é um recurso de IA na Pesquisa do Azure que também pode ser usado para extrair texto de imagens, blobs e outras fontes de dados não estruturadas.
Detalhes do cenário
Este cenário contém exemplos de feeds de notícias em inglês, russo e alemão , mas você pode estendê-lo facilmente para outros feeds RSS e outros idiomas. Para facilitar a implantação, a coleta, o processamento e a análise de dados são baseados inteiramente nos serviços do Azure.
Potenciais casos de utilização
Embora esse cenário seja baseado no processamento de feeds RSS, ele é relevante para qualquer documento, site ou artigo em que você precisaria:
- Traduzir o texto para um idioma de escolha.
- Encontre frases-chave, entidades e sentimento do usuário em conteúdo digital.
- Detete objetos, texto e pontos de referência em imagens associadas a um artigo digital.
- Detete pessoas por sexo e idade em imagens associadas a conteúdos digitais.
Considerações
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Para simplificar, este cenário de exemplo usa apenas algumas das APIs e serviços disponíveis dos serviços de IA do Azure. Por exemplo, o texto em imagens pode ser analisado usando a API de Análise de Texto. Presume-se que o idioma de destino neste cenário seja o inglês, mas você pode alterar a entrada para qualquer idioma suportado.
Segurança
A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Lista de verificação de revisão de design para segurança.
O Azure Cosmos DB usa uma conexão segura e uma assinatura de acesso compartilhado por meio do SDK do C# fornecido pela Microsoft. Não existem outras superfícies viradas para o exterior. Saiba mais sobre as práticas recomendadas de segurança para o Azure Cosmos DB.
Otimização de Custos
A Otimização de Custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Lista de verificação de revisão de design para otimização de custos.
O Azure Cosmos DB é poderoso, mas incorre no maior custo nesta implantação. Você pode usar outra solução de armazenamento refatoração o código do Azure Functions fornecido.
O preço do Azure Functions varia dependendo do plano em que ele é executado.
Excelência Operacional
A Excelência Operacional abrange os processos operacionais que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte Lista de verificação de revisão de design para excelência operacional.
Essa solução usa o Application Insights para coletar informações de desempenho e registro. Uma instância do Application Insights é criada com a implantação no mesmo grupo de recursos que os outros serviços necessários para essa implantação.
Para visualizar os logs gerados pela solução:
Vá para o portal do Azure e navegue até o grupo de recursos criado para a implantação.
Selecione a instância do Application Insights .
Na seção Application Insights , navegue até Investigar\Pesquisar e pesquise os dados.
Eficiência de Desempenho
Eficiência de desempenho é a capacidade de sua carga de trabalho de escalar para atender às demandas colocadas pelos usuários de maneira eficiente. Para obter mais informações, consulte Lista de verificação de revisão de projeto para eficiência de desempenho.
O dimensionamento do Azure Functions depende do plano de hospedagem que você usa. Esta solução pressupõe um plano de Consumo, no qual o poder de computação é automaticamente alocado às funções quando necessário. Você paga apenas quando suas funções estão em execução. Outra opção é usar um plano dedicado, que permite dimensionar entre camadas para alocar uma quantidade diferente de recursos.
Com o Azure Cosmos DB, a chave é distribuir sua carga de trabalho de forma aproximadamente uniforme entre um número suficientemente grande de chaves de partição. Não há limite para a quantidade total de dados que um contêiner pode armazenar ou para a quantidade total de taxa de transferência que um contêiner pode suportar.
Implementar este cenário
Nota
Você deve ter uma conta existente do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
Todo o código para este cenário está disponível no repositório GitHub . Este repositório contém o código-fonte usado para construir o aplicativo gerador que alimenta o pipeline para esta demonstração.
Próximos passos
- Escolhendo um armazenamento de dados analíticos no Azure
- Escolher uma tecnologia de análise de dados no Azure
- Escolher uma tecnologia de armazenamento de big data no Azure
- Introdução ao armazenamento de blobs do Azure
- Bem-vindo ao Azure Cosmos DB
- Introdução às Funções do Azure
Recursos relacionados
Arquiteturas de análise adicionais: