Editar

Processamento de ordens dimensionável

Azure Cosmos DB
Azure HDInsight

Este cenário de exemplo é relevante para organizações que precisam de uma arquitetura altamente escalável e resiliente para o processamento de pedidos online. As aplicações potenciais incluem comércio eletrônico e ponto de venda de varejo, atendimento de pedidos e reserva e rastreamento de estoque.

Arquitetura

Diagrama de arquitetura de exemplo para um pipeline de processamento de pedidos escalável.

Baixe um arquivo Visio desta arquitetura.

Fluxo de dados

Essa arquitetura detalha os principais componentes de um pipeline de processamento de pedidos. Os dados fluem através do cenário da seguinte maneira:

  1. As mensagens de eventos entram no sistema através de aplicações orientadas para o cliente (de forma síncrona através de HTTP) e de vários sistemas back-end (de forma assíncrona através do Apache Kafka). Essas mensagens são passadas para um pipeline de processamento de comandos.
  2. Cada mensagem de evento é ingerida e mapeada para um de um conjunto definido de comandos por um microsserviço do processador de comandos. O processador de comandos recupera qualquer estado atual relevante para executar o comando de um banco de dados de instantâneo de fluxo de eventos. O comando é então executado e a saída do comando é emitida como um novo evento.
  3. Cada evento emitido como a saída de um comando é confirmado em um banco de dados de fluxo de eventos usando o Azure Cosmos DB.
  4. Para cada inserção ou atualização de banco de dados confirmada no banco de dados de fluxo de eventos, um evento é gerado pelo feed de alterações do Azure Cosmos DB. Os sistemas a jusante podem subscrever qualquer tópico de evento que seja relevante para esse sistema.
  5. Todos os eventos do feed de alterações do Azure Cosmos DB também são enviados para um microsserviço de fluxo de eventos de instantâneo, que calcula quaisquer alterações de estado causadas por eventos que ocorreram. O novo estado é então confirmado no banco de dados de instantâneo de fluxo de eventos armazenado no Azure Cosmos DB. O banco de dados de instantâneo fornece uma fonte de dados de baixa latência distribuída globalmente para o estado atual de todos os elementos de dados. O banco de dados de fluxo de eventos fornece um registro completo de todas as mensagens de eventos que passaram pela arquitetura, o que permite cenários robustos de teste, solução de problemas e recuperação de desastres.

Componentes

  • O Azure Cosmos DB é o banco de dados multimodelo distribuído globalmente da Microsoft que permite que suas soluções dimensionem de forma elástica e independente a taxa de transferência e o armazenamento em qualquer número de regiões geográficas. Ele oferece garantia de rendimento, latência, disponibilidade e consistência com SLAs (Service Level Agreements, contratos de nível de serviço) abrangentes. Este cenário usa o Azure Cosmos DB para armazenamento de fluxo de eventos e armazenamento de instantâneos, e aplica os recursos do Feed de Alterações do Azure Cosmos DB para fornecer consistência de dados e recuperação de falhas.
  • O Apache Kafka no Azure HDInsight é uma implementação de serviço gerenciado do Apache Kafka, uma plataforma de streaming distribuído de código aberto para criar pipelines de dados e aplicativos de streaming em tempo real. Kafka também fornece funcionalidade de agente de mensagens semelhante a uma fila de mensagens, para publicação e assinatura de fluxos de dados nomeados. Este cenário usa Kafka para processar eventos de entrada e downstream, no pipeline de processamento de pedidos.

Detalhes do cenário

Este cenário adota uma abordagem de fornecimento de eventos, usando um modelo de programação funcional implementado por meio de microsserviços. Cada microsserviço é tratado como um processador de fluxo e toda a lógica de negócios é implementada por meio de microsserviços. Essa abordagem permite alta disponibilidade e resiliência, replicação geográfica e desempenho rápido.

O uso de serviços gerenciados do Azure, como o Azure Cosmos DB e o HDInsight, pode ajudar a reduzir custos usando a experiência da Microsoft em armazenamento e recuperação de dados em escala de nuvem distribuídos globalmente. Este cenário aborda especificamente um cenário de comércio eletrónico ou retalho; se tiver outras necessidades de serviços de dados, deve rever a lista de serviços de base de dados inteligentes totalmente geridos disponíveis no Azure.

Potenciais casos de utilização

Outros casos de uso relevantes incluem:

  • E-commerce ou sistemas de back-end de ponto de venda de varejo.
  • Sistemas de gestão de inventário, para as indústrias de retalho ou de transformação.
  • Sistemas de atendimento de pedidos.
  • Outros cenários de integração relevantes para um pipeline de processamento de pedidos.

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.

Muitas opções de tecnologia estão disponíveis para ingestão de mensagens em tempo real, armazenamento de dados, processamento de fluxo, armazenamento de dados analíticos e análises e relatórios.

Os microsserviços tornaram-se um estilo de arquitetura popular para criar aplicações na cloud resilientes, de elevada dimensionabilidade, implementáveis independentemente e capazes de evoluir rapidamente. Os microsserviços requerem uma abordagem diferente no que respeita a conceção e criação de aplicações. Para obter orientação sobre como criar e executar uma arquitetura baseada em microsserviços, consulte Projetando microsserviços no Azure.

Disponibilidade

A abordagem de fornecimento de eventos desse cenário permite que os componentes do sistema sejam acoplados e implantados independentemente uns dos outros. O Azure Cosmos DB oferece alta disponibilidade e ajuda a organização a gerenciar as compensações associadas à consistência, disponibilidade e desempenho, tudo com as garantias correspondentes. O Apache Kafka no HDInsight também foi projetado para alta disponibilidade.

O Azure Monitor fornece interfaces de usuário unificadas para monitoramento em vários serviços do Azure. Para obter mais informações, consulte Monitoramento no Microsoft Azure. Os Hubs de Eventos e o Stream Analytics estão integrados com o Azure Monitor.

Para outras considerações sobre disponibilidade, consulte a lista de verificação de disponibilidade.

Escalabilidade

O Kafka no HDInsight permite a configuração de armazenamento e escalabilidade para clusters Kafka. O Azure Cosmos DB fornece desempenho rápido e previsível e é dimensionado perfeitamente à medida que seu aplicativo cresce. A arquitetura baseada em microsserviços de fornecimento de eventos desse cenário também facilita o dimensionamento do sistema e a expansão de sua funcionalidade.

Para obter outras considerações sobre escalabilidade, consulte a lista de verificação de eficiência de desempenho disponível no Centro de Arquitetura do Azure.

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 Visão geral do pilar de segurança.

O modelo de segurança do Azure Cosmos DB autentica os usuários e fornece acesso aos seus dados e recursos. Para obter mais informações, consulte Segurança do banco de dados do Azure Cosmos DB.

Para obter orientações gerais sobre como criar soluções seguras, consulte a Documentação de Segurança do Azure.

Resiliência

A arquitetura de fornecimento de eventos e as tecnologias associadas neste cenário de exemplo tornam esse cenário altamente resiliente quando ocorrem falhas. Para obter orientações gerais sobre como projetar soluções resilientes, consulte Projetando aplicativos resilientes para o Azure.

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 Visão geral do pilar de otimização de custos.

Para examinar o custo de execução desse cenário, todos os serviços são pré-configurados na calculadora de custos. Para ver como os preços mudariam para seu cenário específico, altere as variáveis apropriadas para corresponder ao volume de dados esperado. Para esse cenário, a definição de preço de exemplo inclui apenas o Azure Cosmos DB e um cluster Kafka para processar eventos gerados a partir do feed de alterações do Azure Cosmos DB. Processadores de eventos e microsserviços para sistemas de origem e outros sistemas a jusante não estão incluídos, e seu custo é altamente dependente da quantidade e escala desses serviços, bem como das tecnologias escolhidas para implementá-los.

A moeda do Azure Cosmos DB é a unidade de solicitação (RU). Com unidades de solicitação, você não precisa reservar capacidades de leitura/gravação ou provisionar CPU, memória e IOPS. O Azure Cosmos DB dá suporte a várias APIs que têm operações diferentes, desde leituras e gravações simples até consultas gráficas complexas. Como nem todas as solicitações são iguais, as solicitações recebem uma quantidade normalizada de unidades de solicitação com base na quantidade de cálculo necessária para atender à solicitação. O número de unidades de solicitação exigidas pela sua solução depende do tamanho do elemento de dados e do número de operações de leitura e gravação do banco de dados por segundo. Para obter mais informações, consulte Unidades de solicitação no Azure Cosmos DB. Esses preços estimados são baseados no Azure Cosmos DB em execução em duas regiões do Azure.

Fornecemos três perfis de custo de amostra com base na quantidade de atividade esperada:

  • Pequeno: este exemplo de definição de preço está correlacionado a 5 RUs reservadas com um armazenamento de dados de 1 TB no Azure Cosmos DB e um pequeno cluster Kafka (D3 v2).
  • Médio: este exemplo de definição de preço está correlacionado a 50 RUs reservadas com um armazenamento de dados de 10 TB no Azure Cosmos DB e um cluster Kafka de médio porte (D4 v2).
  • Grande: este exemplo de definição de preço está correlacionado a 500 RUs reservadas com um armazenamento de dados de 30 TB no Azure Cosmos DB e um cluster Kafka grande (D5 v2).

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

  • Alex Buck - Brasil | Desenvolvedor de Conteúdo Sênior

Próximos passos

Este cenário de exemplo é baseado em uma versão mais extensa dessa arquitetura criada pela jet.com para seu pipeline de processamento de pedidos de ponta a ponta. Para obter mais informações, consulte o perfil técnico do cliente jet.com e a apresentação do jet.com na Build.

Veja outros conteúdos:

Veja o conteúdo arquitetônico relacionado: