Um barramento, também conhecido como “Enterprise Service Bus” ou ESB, em inglês, é uma arquitetura de software projetada para integrar diferentes sistemas e aplicações.
Ele atua como um intermediário, permitindo que diferentes sistemas se comuniquem de maneira padronizada e eficaz, sem que cada sistema precise saber exatamente como os outros sistemas operam.
Em um cenário de e-commerce que também é um marketplace, a utilização de um barramento pode ser fundamental devido à complexidade e variedade dos sistemas envolvidos. Aqui está um exemplo de como ele poderia funcionar:
Integração com sellers (vendedores) externos
- Os sellers externos podem ter sistemas próprios de gestão de estoque, preços e pedidos. Ao invés de cada seller criar uma integração direta com o sistema principal da empresa de e-commerce, eles se conectam ao barramento.
- O barramento converte as mensagens e dados recebidos desses sellers para um formato padrão que o sistema de e-commerce pode entender.
Sistemas internos
- Sistema de gestão de pedidos: Quando um cliente faz um pedido, esse sistema é acionado. Pode enviar mensagens ao barramento para verificar o estoque de um produto específico (seja do próprio e-commerce ou de um seller externo).
- Sistema de pagamento: Uma vez que um pedido é confirmado, o sistema de pagamento pode enviar uma mensagem ao barramento para processar o pagamento, que, por sua vez, comunica-se com gateways de pagamento externos.
Integrações com parceiros externos
- Transportadoras: Quando um pedido é enviado, uma mensagem pode ser enviada ao barramento para notificar uma transportadora parceira para coletar e entregar o pedido.
- Gateways de pagamento: Para processar pagamentos com cartões de crédito, boletos ou outros métodos, o barramento pode integrar com diferentes gateways de pagamento.
Outras integrações
- Sistemas de CRM: Para rastrear o comportamento e as preferências do cliente, as interações com o cliente podem ser enviadas via barramento para um sistema de CRM.
- Ferramentas de marketing: Para campanhas promocionais, integrações com ferramentas de e-mail marketing, por exemplo, podem ser estabelecidas através do barramento.
Vantagens de um barramento em tal cenário:
- Flexibilidade: Novos sistemas ou parceiros podem ser facilmente integrados ao barramento sem necessidade de alterar os sistemas existentes.
- Redução de complexidade: Ao ter um ponto central de integração, diminui-se a complexidade de conectar múltiplos sistemas entre si.
- Escalabilidade: O barramento pode ser projetado para lidar com um grande volume de mensagens e dados, garantindo que o sistema de e-commerce possa crescer e expandir.
- Manutenção: Atualizações ou modificações em sistemas específicos não requerem mudanças em todas as outras integrações, apenas no barramento.
Dado o ambiente dinâmico e multifacetado de um e-commerce e marketplace, um barramento bem implementado pode ser a chave para garantir uma operação eficiente, escalável e flexível.
- API Gateway: É o ponto de entrada para os sistemas externos se conectarem ao barramento. Pode realizar funções como autenticação, rate limiting, e logging das mensagens que entram e saem.
- Message broker: Responsável por rotear mensagens entre diferentes serviços e sistemas. Alguns brokers populares incluem RabbitMQ, Apache Kafka e ActiveMQ. Pode lidar com tópicos, filas, publicação/assinatura e outras abstrações de mensagens.
- Workers: São serviços especializados que escutam certos tópicos ou filas no message broker. Realizam o trabalho real de processar mensagens: transformação de dados, integração com outros sistemas, execução de lógica de negócios, etc. Distribuídos e escaláveis para processar grandes volumes de mensagens.
- Transformadores: Podem ser implementados como workers ou serviços separados. Converta mensagens entre diferentes formatos ou esquemas para garantir que os sistemas de destino possam entender e processar a mensagem.
- Orquestradores: Coordenam fluxos de trabalho complexos que envolvem múltiplos sistemas e passos. Por exemplo, um fluxo de trabalho de pedido pode envolver verificação de estoque, processamento de pagamento e notificação de envio.
- Base de dados: Armazena configurações, logs, estado de fluxos de trabalho e outras informações essenciais. Pode ser um banco de dados relacional, NoSQL ou ambos, dependendo das necessidades.
- Monitoramento e logging: Serviços ou ferramentas que monitoram a saúde e o desempenho do barramento. Colete e armazene logs para rastrear mensagens e ajudar na solução de problemas.
- Sistema de alerta: Notifica os administradores ou operadores sobre quaisquer problemas ou incidentes no barramento.
Como tudo funciona junto?
- Um sistema externo envia uma mensagem através do API Gateway.
- A mensagem é roteada para o Message Broker.
- Os Workers ouvem mensagens relevantes e as processam.
- Se uma transformação de dados é necessária, os Transformadores entram em ação.
- Fluxos de trabalho complexos são coordenados pelos Orquestradores.
- Todas as atividades são registradas e monitoradas pelos sistemas de Monitoramento e Logging.
- Em caso de falhas ou incidentes, os Alertas são disparados.
Os componentes exatos e sua arquitetura interna podem variar com base nas necessidades específicas, no volume de mensagens e nas tecnologias escolhidas.
A implementação eficaz de um barramento também exige práticas robustas de DevOps, CI/CD e testes para garantir que as mudanças possam ser feitas de forma eficaz e segura.
Orquestradores
Orquestradores são componentes vitais em sistemas distribuídos e complexos, como os encontrados em cenários de barramento de integração (Enterprise Service Bus – ESB).
Eles são responsáveis por coordenar a execução de várias tarefas, garantindo que sejam executadas na sequência e maneira corretas, e gerenciando possíveis erros e exceções.
Características principais dos orquestradores
- Fluxo de trabalho (Workflow): Os orquestradores definem e gerenciam fluxos de trabalho que descrevem sequências específicas de tarefas ou ações. Um fluxo de trabalho pode envolver chamar vários serviços em uma ordem específica, executando tarefas paralelas, combinando resultados, entre outros.
- Gerenciamento de estado: Eles mantêm o estado atual de cada fluxo de trabalho, o que é crucial para garantir que cada tarefa seja executada apenas uma vez e na ordem correta. Em caso de falhas, o estado armazenado pode ser usado para retomar ou corrigir o fluxo de trabalho.
- Tratamento de erros: Orquestradores têm mecanismos para lidar com erros, seja tentando novamente (retry), redirecionando para um fluxo de trabalho diferente, ou notificando operadores sobre o problema.
- Compensação: Em cenários de falha, ações de compensação podem ser executadas para reverter tarefas anteriores. Por exemplo, se um pedido não puder ser enviado, uma ação de compensação pode envolver o reembolso do pagamento ao cliente.
- Escalabilidade e paralelismo: Eles são projetados para lidar com um grande número de fluxos de trabalho simultâneos, distribuindo a carga conforme necessário. Podem executar tarefas em paralelo quando não há dependências entre elas.
- Integração com outros sistemas: Orquestradores frequentemente interagem com vários outros sistemas, enviando e recebendo mensagens através do barramento de integração ou diretamente via API.
Exemplo prático em um cenário de e-commerce:
- Orquestração de um Pedido:
- Um cliente faz um pedido.
- O orquestrador inicia um fluxo de trabalho que envolve: verificar o estoque, reservar o item, processar o pagamento e, por fim, iniciar o processo de envio.
- Se o estoque estiver baixo, o orquestrador pode optar por notificar o fornecedor ou sugerir um produto alternativo ao cliente.
- Se o pagamento falhar, ele pode tentar novamente ou solicitar ao cliente um método de pagamento alternativo.
- Se tudo correr bem até o envio, mas a transportadora reportar um problema, o orquestrador pode tentar selecionar uma transportadora alternativa ou notificar o cliente sobre o atraso.
- Falha e Compensação:
- Se, por algum motivo, o pedido não puder ser completado após o pagamento ter sido processado, o orquestrador iniciaria uma ação de compensação para reembolsar o cliente.
Ferramentas e plataformas populares para orquestração incluem Apache Airflow, Kubernetes (com operadores específicos para orquestração), AWS Step Functions, Camunda, entre outros. Escolher a ferramenta ou plataforma certa depende das necessidades específicas do sistema e da arquitetura escolhida.
No contexto de um cenário de e-commerce, o gerenciamento de estado é fundamental para oferecer uma experiência de usuário fluida e operações de back-end confiáveis.
Vamos examinar exemplos específicos de gerenciamento de estado em um ambiente de e-commerce:
- Sessão de usuário: Quando um cliente se conecta ao site, uma sessão é criada, permitindo que o sistema rastreie suas interações, como produtos visualizados, itens adicionados ao carrinho e login/logout. Se o cliente abandonar o site e voltar mais tarde, pode encontrar o carrinho como o deixou, graças ao gerenciamento de estado.
- Carrinho de compras: O sistema mantém o estado do carrinho de compras de cada usuário, rastreando os itens adicionados, as quantidades selecionadas e quaisquer promoções ou códigos de desconto aplicados.
- Histórico de pedidos: Após fazer um pedido, o estado desse pedido é rastreado: pendente, processado, enviado, entregue, etc. Isso permite que os clientes vejam o status atual de seus pedidos e permite ao e-commerce processar retornos, reembolsos ou reclamações.
- Sistema de estoque: Mantém o estado atual do estoque para cada produto. Quando um produto é comprado, o número de itens em estoque é atualizado. Se um item estiver fora de estoque, o sistema pode notificar os clientes quando estiver disponível novamente.
- Sistema de recomendação: Com base nas interações anteriores de um usuário (produtos visualizados, comprados, pesquisados), o sistema mantém um estado do perfil de interesse do usuário e oferece recomendações personalizadas.
- Checkouts salvos: Algumas plataformas de e-commerce permitem que os usuários salvem suas informações de pagamento e envio para checkouts mais rápidos no futuro. Essas informações, devidamente protegidas, são parte do estado gerenciado pelo sistema.
- Notificações e alertas: Se um cliente desejar ser notificado quando um produto estiver de volta em estoque ou quando um item estiver em promoção, o sistema manterá esse “desejo” como parte de seu estado e enviará a notificação quando a condição for atendida.
- Programas de fidelidade: Muitos e-commerces têm programas de fidelidade onde os clientes acumulam pontos ou recebem benefícios com base em suas compras. O estado do progresso de cada cliente dentro deste programa é rastreado e gerenciado pelo sistema.
- Análise e relatórios: Os sistemas de back-end mantêm o estado de métricas importantes, como vendas diárias, produtos mais vendidos, taxas de retorno e outros KPIs. Estes são atualizados em tempo real ou em intervalos específicos.
- Configurações de personalização: Se um e-commerce oferece opções de personalização (por exemplo, temas, layouts ou configurações de notificação), essas preferências de usuário são parte do estado gerenciado pelo sistema.
O gerenciamento de estado, no contexto de e-commerce, é essencial para garantir uma operação harmoniosa e uma ótima experiência para o cliente.
É uma combinação de manter a usabilidade para o cliente e a eficiência operacional para a empresa.
O status de um pedido em um e-commerce reflete a fase atual ou a condição desse pedido no ciclo de compra e entrega. Aqui estão vários possíveis status de pedido que um e-commerce pode usar, embora o conjunto específico possa variar com base nas necessidades e operações do negócio:
- Recebido (Pending): O pedido foi feito, mas ainda não foi processado ou confirmado.
- Em análise: Verificando detalhes do pedido, podendo envolver checagem de fraude, disponibilidade de estoque ou validação de detalhes de pagamento.
- Confirmado: O pedido foi validado e aceito, mas ainda não foi encaminhado para preparação ou envio.
- Pagamento aprovado: O pagamento foi processado e aceito.
- Pagamento recusado: Há um problema com o pagamento, que pode ser devido a fundos insuficientes, suspeita de fraude, entre outros.
- Em preparação: Os produtos estão sendo coletados, embalados ou preparados para envio.
- Aguardando retirada: Para pedidos onde o cliente opta por retirar na loja ou em um ponto de coleta.
- Despachado ou enviado: O pedido foi enviado ao serviço de entrega e está a caminho do cliente.
- Em trânsito: O pedido está com a transportadora e está sendo transportado para o cliente.
- Entregue: O pedido foi entregue com sucesso ao cliente.
- Falha na entrega: A entrega não foi bem-sucedida devido a um endereço incorreto, ausência do destinatário ou outros problemas.
- Retornado: O cliente devolveu o pedido. Pode ser devido a arrependimento, defeito, ou outra razão.
- Reembolsado: O dinheiro foi devolvido ao cliente, seja por uma devolução, cancelamento ou problema com o pedido.
- Cancelado: O pedido foi cancelado antes do envio, seja pelo cliente ou pelo e-commerce devido a problemas como indisponibilidade de estoque.
- Aguardando pagamento: Para pedidos feitos com métodos de pagamento como boleto bancário, onde a confirmação pode demorar mais.
- Em troca: O cliente solicitou uma troca de um ou mais itens do pedido.
- Troca concluída: Os itens foram trocados e a troca foi finalizada.
- Finalizado: O ciclo de vida do pedido foi completado, sem a necessidade de ações adicionais.
- Aguardando revisão: Às vezes, após a conclusão do pedido, os clientes são incentivados a deixar comentários ou avaliações.
- Em espera: O pedido está temporariamente pausado, possivelmente devido a problemas de estoque ou outras questões operacionais.
Estes são alguns exemplos de status de pedido que podem ser encontrados em e-commerces. Dependendo da complexidade das operações, da região e dos métodos de pagamento e entrega utilizados, pode haver mais status específicos ou algumas variações destes.
A complexidade dos status de um pedido pode variar amplamente dependendo da escala e das especificidades de um e-commerce. Aqui estão algumas variações e status adicionais que podem ser relevantes:
- Aguardando confirmação de estoque: Quando um pedido é feito para um produto com estoque limitado ou em locais de armazenamento diferentes.
- Em produção: Para produtos feitos sob demanda ou personalizados.
- Aguardando despacho: Pronto para ser enviado, mas ainda não foi entregue ao serviço de entrega.
- Parcialmente enviado: Somente parte do pedido foi enviada, talvez devido à disponibilidade de estoque.
- Parcialmente entregue: Somente parte do pedido chegou ao cliente.
- Aguardando informações adicionais: O e-commerce precisa de mais informações do cliente para processar ou enviar o pedido.
- Revisão de segurança: Em casos onde há suspeita de fraude ou atividade incomum.
- Aguardando pagamento adicional: Casos onde pode haver taxas adicionais, como impostos de importação ou taxas de envio adicionais.
- Pedido em backorder: O pedido foi aceito, mas o item está fora de estoque e será enviado assim que disponível.
- Aguardando coleta da transportadora: Quando a empresa depende da coleta de um terceiro para iniciar o processo de entrega.
- Retenção alfandegária: Para e-commerces que enviam internacionalmente, onde o pedido está retido na alfândega.
- Aguardando devolução do cliente: Quando uma devolução ou troca foi solicitada e o e-commerce está esperando que o cliente envie o item de volta.
- Inspeção de devolução: Quando os produtos devolvidos são recebidos e estão sendo verificados por danos ou uso.
- Crédito emitido: Se o cliente recebeu crédito na loja em vez de um reembolso.
- Substituição enviada: Uma substituição foi enviada ao cliente, geralmente após uma devolução ou reclamação.
- Em quarentena: Pode ser relevante em cenários como a pandemia da COVID-19, onde os pacotes podem precisar ser isolados por um período.
- Aguardando agendamento de entrega: Para entregas que requerem agendamento, como móveis grandes ou itens frágeis.
- Revisão de qualidade: Antes do despacho, os itens são verificados para garantir que atendam aos padrões de qualidade.
- Pedido em espera de promoção: Alguns e-commerces podem colocar um pedido em espera até que uma promoção comece, especialmente se o cliente solicitou especificamente.
- Reprocessando: Em casos onde um pedido foi devolvido ao centro de distribuição devido a problemas de entrega e está sendo reenviado.
Lembrando que nem todos os e-commerces precisarão de todos esses status, e alguns podem ter necessidades muito específicas que exigem status personalizados.
A chave é garantir que os status sejam claros e informativos, tanto para a equipe interna quanto para os clientes.