Como criar sistemas de inventário em tempo real para o varejo

Esta solução fornece uma revisão detalhada da arquitetura necessária para implantar uma infraestrutura de inventário em tempo real no Google Cloud Platform. Os sistemas de inventário em tempo real são projetados para atualizar os sistemas de armazenamento de dados assim que algo muda no inventário. Por exemplo, em uma loja de varejo, os dados de inventário podem ser atualizados automaticamente assim que um item é vendido ou mesmo quando o estoque é movido de uma parte da loja para outra.

À medida que os varejistas adotam cada vez mais estratégias para trabalhar tanto on-line como off-line e em cenários multicanal, eles precisam de soluções técnicas para enfrentar os desafios associados a essas abordagens. O inventário em tempo real existe na interseção de melhorias na experiência do cliente, ganhos de eficiência operacional e redução do tempo de lançamento de soluções inovadoras.

Com o inventário em tempo real, os varejistas podem melhorar a experiência do cliente, permitindo que os associados da loja passem mais tempo com os compradores e ajudem os clientes a encontrar os produtos que estão procurando mais rapidamente. Os varejistas também podem ter ganhos significativos na eficiência operacional ao saber com precisão o local do inventário e a disponibilidade do produto, a qualquer momento. Os insights práticos sobre a precisão e o movimento do inventário também fornecem informações essenciais que os varejistas precisam para ajustar como lançar os produtos no mercado e levar os clientes para cada canal de vendas.

Para que o inventário em tempo real funcione, os varejistas precisam implantar a infraestrutura correta e disponibilizá-la imediatamente. Isso significa utilizar as características de uma arquitetura baseada em nuvem, incluindo infraestrutura de computação de escala elástica, sistemas de software gerenciados para reduzir a complexidade administrativa e o melhor processamento e armazenamento de dados da categoria.

O diagrama a seguir mostra a arquitetura de um sistema de inventário em tempo real que usa o Google Cloud Platform no back-end. O restante do artigo descreve os componentes e as respectivas interações.

O sistema de inventário em tempo real usa vários serviços do Cloud Platform

Rastreamento de inventário

Os sistemas de rastreamento de inventário em lojas de varejo tipicamente usam uma combinação de mercadoria etiquetada, leitores de etiquetas e um gateway responsável pela transmissão de dados de inventário. Esses sistemas usam etiquetas RFID porque elas são leves e fáceis de anexar à mercadoria, de modo semelhante a uma etiqueta de preço. Os leitores de etiquetas são posicionados em locais em toda a loja, garantindo que as etiquetas RFID do espaço físico inteiro sejam verificadas. Dependendo do tamanho e layout físico do espaço de varejo, um ou mais gateways podem ser implantados. Esses componentes coletam dados das verificações passivas e ativas de cada leitor, e transmitem os dados para a infraestrutura centralizada.

Dependendo dos requisitos técnicos e de negócios, a coleta de dados pode variar desde a captura de todos os eventos até a agregação de eventos por tempo ou outros metadados úteis. Por exemplo, todos os eventos de chegada e partida de inventário podem ser capturados e enviados imediatamente, enquanto o reposicionamento do inventário dentro da loja pode ser agregado em uma única transmissão diária. Depois que os dados são coletados, o gateway é responsável pela autenticação no serviço de ingestão de dados de inventário, estabelecendo um link seguro e transmitindo os dados.

Dependendo do layout ou das limitações do espaço físico e requisitos técnicos, a implantação de sistemas de rastreamento de inventário pode ser bastante complexa. Talvez faça sentido buscar ajuda dos parceiros do ecossistema na implantação e configuração da infraestrutura de rastreamento de estoque. Para mais informações sobre como trabalhar com parceiros, consulte a Comunidade de parceiros do Google Cloud Platform.

Ingestão de dados

Nos sistemas e infraestrutura de inventário em tempo real, o serviço de ingestão recebe periodicamente dados de inventário de cada loja e os transmite para serviços subjacentes. Esse serviço precisa satisfazer vários requisitos funcionais. Ele precisa estar altamente disponível, capaz de ser dimensionado elasticamente à medida que o influxo de dados de inventário aumenta ou diminui, e fornecer tempo de resposta de baixa latência para gateways de nível de loja. Como parte da ingestão de dados de inventário, o serviço também precisa autenticar e autorizar gateways de nível de loja individuais para garantir que apenas os dispositivos conhecidos e devidamente provisionados enviem dados.

Dados esses requisitos, o Google App Engine é uma solução apropriada. O Google App Engine é uma plataforma para criação e implantação rápidas de aplicativos da Web, sem ter que provisionar ou configurar servidores individuais. O Google App Engine tem a capacidade de aumentar ou diminuir, automaticamente e em tempo real, com base nos padrões de tráfego recebidos. Com o balanceamento de carga interno, a divisão do tráfego, o controle de versão e a verificação de segurança, o Google App Engine é uma plataforma adequada às necessidades de ingestão de dados de inventário em tempo real.

Serviços de mensagens

Para implantações de infraestrutura em nuvem, o envio de mensagens é um componente essencial para que aplicativos e serviços se comuniquem em tempo real.

O Google Cloud Pub/Sub é um serviço de mensagens em tempo real totalmente gerenciado que permite que aplicativos e serviços enviem e recebam mensagens usando esquemas de entrega push ou pull. O Cloud Pub/Sub é compatível com uma semântica de entrega de mensagens de um para um, de um para muitos ou muitos para muitos, permitindo que vários aplicativos e serviços independentes se comuniquem em tempo real.

Nesta solução, o componente de mensagens envia dados do aplicativo de ingestão de inventário para vários componentes subjacentes. Primeiro, ele envia fluxos de dados de inventário para o Google Cloud Dataflow para processamento de dados em trânsito, conforme descrito na próxima seção. Em segundo lugar, fornece um mecanismo de notificação, alertando vários aplicativos quando os dados de inventário mudarem, conforme descrito em Integração com aplicativos e serviços.

Processamento e persistência

O processamento de stream é o serviço principal em um sistema de inventário em tempo real. Esse serviço recebe streams de dados de inventário que são enviados por meio do componente de mensagens, examina cada atualização recebida de dados de inventário e aplica regras em trânsito e ações de saída, como a persistência. As regras em trânsito podem consistir em agregações ou visualizações completas com base no tempo centradas em itens, lojas ou regiões individuais. O serviço precisa ser um mecanismo de processamento de stream de propósito geral, capaz de aumentar ou diminuir elasticamente de acordo com a capacidade de transferência de dados, agregações de computação em janelas temporais deslizantes e empurrar dados brutos ou agregados para vários serviços de persistência.

O Cloud Dataflow lida com esses tipos de carga de trabalho. O Cloud Dataflow consiste em dois componentes principais: um conjunto de SDKs que podem ser usados para definir um canal de tarefas de processamento de dados e um serviço gerenciado para executar dinamicamente canais de processamento de dados. O serviço gerenciado do Cloud Dataflow é capaz de distribuir cargas de trabalho de processamento de dados em várias instâncias da VM do Google Compute Engine, fragmentando e reequilibrando a carga de trabalho em trânsito.

Em cenários de inventário em tempo real, o Cloud Dataflow extrai dados de streaming do Cloud Pub/Sub e cria visualizações deslizantes e baseadas no tempo dos dados recebidos. Em cada janela de dados, você pode aplicar uma série de operações ou transformações usando o SDK do Cloud Dataflow. Essas transformações aplicam funções como contagem, filtragem ou agregação dos dados contidos em cada janela.

O diagrama a seguir ilustra como você pode processar cargas de trabalho de inventário em tempo real. Cada fase no canal de processamento termina com a persistência dos dados de saída em um sistema de armazenamento de dados específico: Google Cloud Bigtable, Google Cloud BigQuery e Google Cloud SQL.

Fluxos de dados do Cloud Pub/Sub por meio do canal do Cloud Dataflow para o armazenamento.

Eventos da série temporal

Conforme mostrado no diagrama, cada elemento no stream de dados de inventário de entrada é gravado como um evento de séries temporais individuais no Cloud Bigtable, que é um serviço de banco de dados de Big Data, NoSQL, totalmente gerenciado. O Cloud Bigtable baseia-se na infraestrutura interna do banco de dados Bigtable do Google, que alimenta a Pesquisa Google, Google Analytics, Google Maps e Gmail. O serviço oferece armazenamento consistente, de baixa latência e alto rendimento, tornando-o ideal para armazenar cada evento de inventário. O propósito de armazenar eventos individuais é a análise preditiva off-line ou análise de Big Data relacionada, como a otimização da cadeia de suprimentos, usando ferramentas como implantações gerenciadas do Apache Spark ou do Apache Hadoop com o Google Cloud Dataproc ou o Cloud Dataflow.

Os esquemas do Cloud Bigtable usam uma chave de uma linha associada a uma série de colunas. Para as cargas de trabalho de inventário em tempo real, os streams de dados de eventos são armazenados como dados da série temporal, o que significa que os modelos de dados de tabelas devem ser "altos e estreitos". Os casos de uso subsequente desses conjuntos de dados desempenham um papel significativo na estrutura de dados, com suporte a consultas rápidas e filtragem e processamento de saída mínimos. Isso pode ajudar a usar uma estratégia que incorpore a desnormalização de dados: gravar os mesmos elementos de dados várias vezes usando diferentes esquemas de chave-valor.

Por exemplo, um esquema centrado no inventário usa o seguinte formato de tabela:

Chave de linha
Colunas
UPC + Timestamp
Store ID, Location, Reader, Style

Outro esquema usa uma estrutura mais específica para lojas:

Chave de linha
Colunas
Store ID + Timestamp
UPCs, Location, Reader

E, por último, um esquema combinado usa uma estrutura semelhante ao seguinte exemplo:

Chave de linha
Colunas
UPC + Store ID + Timestamp
Location, Reader, Style

Ao usar o Cloud Bigtable, é importante considerar a localidade e distribuição de dados de leituras e gravações para maximizar o desempenho. Após considerar esses fatores, o último esquema listado seria a escolha mais apropriada, porque daria suporte a uma distribuição mais ampla de gravações e evitaria pontos de acesso de dados. Com esse esquema, um único produto não pode prejudicar o desempenho porque o Store ID é concatenado com a UPC do produto.

Em última análise, a estrutura correta (ou estruturas, se quiser a desnormalização) depende de como você pretende usar os dados. Para mais informações sobre as práticas recomendadas para o projeto do esquema, consulte Projeto de esquema do Cloud Bigtable para dados de séries temporais.

Eventos agregados

Para fins de análise de negócios ou de business intelligence, você pode carregar streams de inventário de entrada no BigQuery, uma solução de armazenamento de dados totalmente gerenciada para cargas de trabalho ad hoc de SQL em todos os dados de inventário. O BigQuery separa o armazenamento e a computação, permitindo que cada função seja dimensionada de maneira independente, o que significa que as consultas em GB ou TB de dados podem ser executadas em questão de segundos.

Com base no canal do Cloud Dataflow descrito anteriormente, a saída para o BigQuery pode ser desnormalizada em várias tabelas. Cada tabela pode conter uma visão diferente dos streams de inventário de entrada. Por exemplo, as tabelas podem ser organizadas por níveis de agregação, como por hora, diariamente e semanalmente, e por várias dimensões, como UPC e Store ID.

De maneira semelhante aos bancos de dados relacionais, os esquemas e os modelos de dados do BigQuery fornecem suporte para linhas e colunas, além de permitir o uso de colunas JSON com dados aninhados. Isso significa que uma linha individual pode armazenar dados aninhados de pares de chave-valor. A compatibilidade com dados JSON incorporados em linhas individuais permite desenvolver projetos com esquemas mais complexos que combinam casos típicos de uso de armazenamento de dados, como os esquemas estrela, floco de neve ou constelação de fatos.

Além de oferecer armazenamento de dados de inventário, o BigQuery é um sistema adequado para casos de uso mais amplos de armazenamento de dados de varejo. Por exemplo, ao importar dados de compra de clientes ou da cadeia de suprimentos, você pode criar esquemas complexos e representações de dados que utilizem todos os pontos de dados disponíveis.

Contagens transacionais

Nas cargas de trabalho de inventário em tempo real, é necessária uma fonte de verdade para armazenar e gerenciar contagens de inventário precisas em todos os momentos. Com base no canal do Cloud Dataflow descrito anteriormente, os streams de dados do inventário são examinados de perto. Os eventos específicos, como novos envios de inventário e inventário de saída por meio da compra ou envio, são extraídos. Essa informação é usada para atualizar as contagens de inventário por loja. Para uma carga de trabalho transacional de baixa latência como esta, o Google Cloud SQL é a escolha mais apropriada para o armazenamento de dados.

O Cloud SQL é uma implantação de MySQL totalmente gerenciada, nativa da nuvem, com suporte integrado para a replicação. Por ser baseado no MySQL, o CloudSQL é compatível com muitos aplicativos e bibliotecas. O CloudSQL oferece backup e restauração incorporados, implantações de alta disponibilidade e replicação de leitura. Esses recursos são úteis quando vários aplicativos e serviços precisam consultar com frequência as contagens do inventário.

Para as cargas de trabalho da contagem de inventário, a tabela a seguir mostra um esquema de exemplo que você pode usar para armazenar esses dados em um formato de fácil consulta e atualização:

Tipo
VARCHAR
VARCHAR
INT
TIMESTAMP
Coluna
Store ID
UPC
Count
Last Updated

Dependendo do que outros metadados possam ser necessários nos sistemas subsequentes, como aplicativos na loja ou no back-office e integrações de terceiros, você pode adicionar colunas ao esquema. Por razões de desempenho e integridade de dados, também pode ser apropriado criar um índice composto usando os campos Store ID e UPC para pesquisas rápidas e definir o carimbo de data/hora Last Updated para ser atualizado automaticamente sempre que uma determinada linha é modificada.

Integração com aplicativos e serviços

O objetivo dos sistemas de inventário em tempo real é fornecer maior precisão, visibilidade e análise para o movimento de inventário em toda a cadeia de suprimentos. Um dos principais requisitos desses sistemas é a integração fácil, de maneira escalável e segura, com aplicativos e serviços que exigem esses dados. Diversos requisitos de negócios ditam os tipos de aplicativos e serviços a serem integrados.

Entre os exemplos de integrações de serviços estão:

  • Publicação de feeds de dados de informações de inventário, como marca, estilo e contagem, para exibir ou pesquisar campanhas publicitárias
  • Junção de análises de compras on-line e off-line e perfis de compras

Entre os exemplos de integrações de aplicativos estão:

  • Aplicativos de suporte de loja para gerenciamento de tarefas de inventário local, que podem ser enviados por meio de sistemas de ponto de venda ou de tablets
  • Fornecimento de APIs baseadas em padrões para integrar sistemas e aplicativos de back-office, incluindo planejamento de recursos empresariais, gerenciamento de processos de negócios, cadeia de suprimentos e aplicativos financeiros

Muitos pacotes de sistemas de software empresariais permitem a integração com sistemas externos usando APIs baseadas em HTTP para consumir dados, o que simplifica o processo de integração.

O App Engine é adequado para fornecer esses tipos de aplicativos e serviços com acesso altamente disponível e de baixa latência a dados de inventário essenciais. Os aplicativos do App Engine podem utilizar os Google Cloud Endpoints para criar e implantar rapidamente as APIs REST. Essas APIs são facilmente acessíveis de aplicativos da Web ou de dispositivos móveis usando bibliotecas geradas por cliente. Essa abordagem pode reduzir o tempo total de desenvolvimento. Os aplicativos do App Engine também oferecem suporte a várias abordagens de autenticação, tornando diretos o controle e a medição do acesso a clientes especificados.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…