Трохи про те, що я пережив із Webhook-ами.

Uma coisa que notei ao ingressar em uma empresa como programador é que, muitas vezes, o que aprendemos estudando não corresponde exatamente ao que enfrentamos na prática. Percebi isso em várias ferramentas no meu dia a dia.

Por esse motivo, decidi escrever sobre isso, mais especificamente sobre os Webhooks. Quando estudei o tema em aulas, artigos e teorias, tinha uma visão clara do que era, mas, ao trabalhar com notificações e integrações com Shopee, Mercado Livre e Magalu, percebi que, embora o entendimento tenha se tornado mais simples, a aplicação prática era um pouco mais complexa, exigindo concisão e organização.

Ao conversar com meu diretor sobre implementar as atividades, me deparei com um impasse: “Como organizar uma estrutura de Webhook para recebimento de pedidos, garantindo a segurança das informações?”

Eu sabia o que era um Webhook, entendia como funcionava e como implementá-lo em uma aplicação, mas não sabia como controlar as informações que entravam e saíam do sistema. Cada dado que trafega é crucial, e o desafio era garantir a integridade dessas informações em um sistema “on-premise”, onde cada usuário tem o software instalado em sua máquina, sem comunicação contínua com a “Internet”. Após horas lendo as documentações das plataformas envolvidas, identifiquei problemas que poderiam comprometer a confiabilidade dos dados.

A ideia teórica que aprendi sugeria criar uma URL (DNS/DDNS) para comunicação com a plataforma, enquanto o software local teria um controlador para receber esses dados e retornar um status code 200. Isso funcionaria perfeitamente se todas as aplicações dos clientes estivessem ativas 100% do tempo, sem falhas de internet ou desligamento de servidores. Contudo, no Brasil, muitas empresas desligam seus computadores em domingos e feriados, o que inviabiliza essa solução. Mas por quê?

Um exemplo prático ajuda a entender o problema. A documentação das plataformas indica que, se o Webhook não receber um status code 200 após um número específico de tentativas, as notificações são interrompidas. Além disso, o Webhook tenta enviar ‘x’ vezes o mesmo pedido antes de descartá-lo. Esse é um problema crítico: perder um pedido significa que o cliente pode perder uma venda ou até mesmo pontos e reputação na plataforma, especialmente em empresas que gerenciam milhares de vendas através de seus ERPs.

Se fosse apenas um pedido, poderíamos consultá-lo manualmente. Porém, em um cenário com mais de 1.000 pedidos por hora, uma falha de internet que resultasse na perda de um ou mais pedidos teria consequências graves.

Apresentei o problema ao meu diretor, que propôs uma estratégia inovadora para mim, um programador ainda sem experiência nessa área. Sua solução foi: “Criar um serviço na nuvem para centralizar o recebimento de notificações de todas as plataformas, assumindo o controle dos Webhooks.”

Essa ideia era revolucionária para mim. Embora hoje pareça totalmente “palpável”, na época foi um marco. A proposta era criar um sistema onde registraríamos os eventos recebidos, armazenaríamos os dados e os distribuiríamos para os clientes. Em vez da plataforma se comunicar diretamente com o cliente, ela se comunicaria com nossos servidores, que possuíam alta disponibilidade.

Com isso, poderíamos garantir o recebimento dos dados, notificar o cliente sobre possíveis falhas e armazenar as informações até que ele pudesse recebê-las. Isso eliminaria o risco de perda de pedidos por falhas de comunicação, permitindo um controle total sobre os dados armazenados, enviados e descartados.

Além disso, as plataformas evitam enviar informações detalhadas dos pedidos, geralmente limitando-se a códigos e status. Isso minimiza riscos de vazamento de dados, já que a obtenção dos detalhes ficaria a cargo do cliente em seu ambiente.

Centralizar essa responsabilidade trouxe confiabilidade, segurança e um controle, que pode vir a se tornar um erro nosso, mesmo sabendo que nenhuma aplicação é imune a erros.
Сьогодні я розумію, що мета завжди полягає в тому, щоб прагнути до досконалості, гарантуючи безпеку даних і інформації.

Цей досвід роботи з Webhook-ами (Webhooks) навчив мене, що на практиці все є набагато більш складним і цікавим, ніж на теорії. Це навчання змінило моє сприйняття даних і може бути застосоване в різних інших сферах.

By — Wellisson JSR.

Перекладено з: Um pouco sobre o que vivenciei com Webhooks.

Leave a Reply

Your email address will not be published. Required fields are marked *