Processamento de pedidos escalonável

Azure Cosmos DB
Azure HDInsight

Esse cenário de exemplo é relevante para organizações que precisam de uma arquitetura altamente escalonável e resiliente para processamento de pedidos online. Os aplicativos potenciais incluem comércio eletrônico e ponto de venda de varejo, preenchimento de pedidos e reserva e acompanhamento de inventário.

Arquitetura

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

Baixe um arquivo do Visio dessa arquitetura.

Fluxo de dados

Essa arquitetura fornece detalhes sobre os principais componentes de um pipeline de processamento de pedidos. O fluxo de dados neste cenário ocorre da seguinte forma:

  1. As mensagens de evento entram no sistema por meio de aplicativos voltados ao cliente (de forma síncrona sobre HTTP) e vários sistemas de back-end (de forma assíncrona por meio do Apache Kafka). Essas mensagens são passadas para um pipeline de processamento do comando.
  2. Cada mensagem de evento é ingerida e mapeada para um comando específico 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 downstream podem assinar qualquer tópico de evento que seja relevantes 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 ocorridos. 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 distribuída globalmente e com baixa latência 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 evento que passaram por meio da arquitetura, que permite cenários de recuperação de desastre, solução de problemas e testes robustos.

Componentes

  • O Azure Cosmos DB é o banco de dados multimodelo distribuído globalmente da Microsoft que permite que suas soluções escalem 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 garantias de taxa de transferência, disponibilidade, latência e consistência com contratos de nível de serviço (SLAs) abrangentes. Esse cenário usa o Azure Cosmos DB para armazenamento de fluxo de eventos e armazenamento de instantâneos e aplica os recursos de 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ída de código aberto para criar pipelines e aplicativos de dados de streaming em tempo real. O Kafka também fornece funcionalidade de agente de mensagem semelhante a uma fila de mensagens, para publicar e assinar os fluxos de dados nomeados. Esse cenário usa Kafka para processar eventos de entrada e de downstream, no pipeline de processamento de pedidos.

Detalhes do cenário

Esse cenário possui 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. Esse cenário trata especificamente de um cenário de varejo ou de comércio eletrônico; se você tiver outras necessidades de serviços de dados, você deve analisar a lista de serviços de banco de dados inteligente totalmente gerenciados no Azure disponíveis.

Possíveis casos de uso

Outros casos de uso relevantes incluem:

  • Sistemas de back-end de comércio eletrônico ou de ponto de venda de varejo.
  • Sistemas de gestão de estoques, para o varejo ou indústrias de manufatura.
  • 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 de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira 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, análise e relatórios.

Microsserviços se tornaram um estilo popular de arquitetura para criar aplicativos de nuvem resilientes, altamente escalonáveis, implantáveis independentemente e capazes de evoluir rapidamente. Os microsserviços exigem uma abordagem diferente para o design e criação de aplicativos. 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 deste cenário permite que os componentes do sistema sejam livremente acoplados e implantados independentemente um do outro. 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 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 entre os diferentes serviços do Azure. Para obter mais informações, confira Monitoramento no Microsoft Azure. Os Hubs de Eventos e o Stream Analytics estão integrados ao Azure Monitor.

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

Escalabilidade

O Kafka no HDInsight permite a configuração de armazenamento e a escalabilidade para clusters do 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 seu sistema e a expansão da sua funcionalidade.

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

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.

O modelo de segurança do Azure Cosmos DB autentica usuários e fornece acesso a seus dados e recursos. Para saber mais, confira Azure Cosmos DB database security (Segurança de banco de dados do Cosmos DB).

Confira orientações gerais sobre como criar soluções seguras na Documentação de Segurança do Azure.

Resiliência

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

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

Para explorar o custo da execução dessa cenário, todos os serviços são pré-configurados na calculadora de custos. Para ver como o preço seria alterado em seu cenário específico, altere as variáveis apropriadas de acordo com o volume de dados esperado. Para esse cenário, o preço de exemplo inclui apenas o Azure Cosmos DB e um cluster Kafka para processar eventos gerados do feed de alterações do Azure Cosmos DB. Processadores de eventos e microsserviços para sistemas de origem e outros sistemas downstream 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 capacidade de leitura/gravação ou provisão da CPU, memória e IOPS. Banco de dados do Azure Cosmos dá suporte a várias APIs que têm diferentes operações, desde simples lê e grava a consultas complexas de gráfico. Porque nem todas as solicitações forem iguais, as solicitações são atribuídas a uma quantidade normalizada de unidades de solicitação com base na quantidade de computação necessária para atender à solicitação. O número de unidades de solicitação necessários para sua solução depende do tamanho do elemento de dados e do número de banco de dados das operações de leitura e gravação por segundo. Para obter mais informações, confira 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 exemplos de perfis de custo com base na quantidade de atividade esperada:

  • Pequeno: este exemplo de preço se correlaciona a 5 RUs reservados com um armazenamento de dados de 1 TB no Azure Cosmos DB e um cluster Kafka pequeno (D3 v2).
  • Médio: este exemplo de preço se correlaciona a 50 RUs reservados 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 preço se correlaciona a 500 RUs reservados com um armazenamento de dados de 30 TB no Azure Cosmos DB e um cluster Kafka grande (D5 v2).

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

  • Alex Buck | Desenvolvedor sênior de conteúdo

Próximas etapas

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 de cliente técnico jet.com e apresentação do jet.com no Build.

Consulte este outro conteúdo:

Confira o conteúdo de arquitetura relacionado: