Graphically illustrated browser windows, smart phones, and computers, all connecting via an API interface
Ir para seção

Webhook

Copiar URL

Webhook é uma função de callback baseada em HTTP que viabiliza a comunicação entre duas interfaces de programação de aplicações (APIs). Os webhooks são usados por várias web apps para receber pequenos volumes de dados de outras aplicações e  também podem ser  usados para acionar workflows de automação em ambientes GitOps.

O que é uma API?

Uma API é um conjunto de definições e protocolos usado no desenvolvimento e na integração de aplicações. Às vezes, a comunicação entre APIs é descrita como um contrato entre um provedor e um usuário de informações, estabelecendo o conteúdo exigido pelo consumidor (a chamada) e o conteúdo exigido pelo produtor (a resposta). Essa relação também é descrita como a aplicação cliente que chama a aplicação servidor. No entanto, essas funções podem se inverter, dependendo da aplicação que esteja solicitando os dados.  

Em geral, as APIs web usam HTTP para solicitar dados de outras aplicações e definir a estrutura das mensagens de resposta, que normalmente são enviadas em um arquivo XML ou JSON. Tanto XML quanto JSON são formatos de preferência porque apresentam os dados de forma simplificada, o que facilita a manipulação por outras aplicações. 

Quando uma API cliente solicita dados de uma API servidor, ela está chamando para verificar a ocorrência de um evento específico, ou seja, se os dados do servidor mudaram e podem ser úteis ao cliente. Nesse processo (conhecido como pesquisa), o cliente envia uma solicitação HTTP em intervalos regulares até a API do servidor enviar os dados relevantes, às vezes chamados de payload

A aplicação cliente não sabe o estado da aplicação servidor, então faz pesquisas com a API do servidor para conseguir uma atualização, repetindo a chamada até a ocorrência do evento específico. No entanto, o servidor só enviará os dados solicitados quando as informações estiverem disponíveis. A aplicação cliente precisa continuar pedindo pela atualização e espera até a ocorrência do evento relevante.

Qual o diferencial dos webhooks?

Para configurar um webhook, o cliente oferece uma URL exclusiva para a API servidor e especifica sobre qual evento ele quer as informações. Quando o webhook estiver configurado, o cliente não precisará mais das pesquisas. O servidor enviará automaticamente o payload relevante para o URL do webhook do cliente quando o evento especificado ocorrer. 

Em geral, os webhooks são descritos como APIs reversas ou APIs de push, porque colocam a responsabilidade da comunicação no servidor, e não no cliente. Em vez de o cliente enviar as solicitações HTTP pedindo os dados até receber uma resposta, o servidor envia para o cliente uma solicitação HTTP POST exclusiva quando os dados estiverem disponíveis. Apesar dos apelidos, os webhooks não são APIs. Eles trabalham juntos. Uma aplicação precisa ter uma API para usar um webhook. 

O nome webhook é uma combinação simples de web, referente à comunicação baseada em HTTP, e a função de programação hooking, utilizada pelas aplicações para interceptar chamadas ou outros eventos relevantes. Webhooks pegam o evento que ocorre na aplicação servidor e solicitam o envio do payload para o cliente via web. Jeff Lindsay ajudou a disseminar o conceito em 2007, no post "Webhooks para revolucionar a web".

As equipes de TI usam vários métodos para proteger as aplicações que se comunicam por webhooks. A maioria das aplicações habilitadas para webhook adicionam uma chave secreta ao cabeçalho da solicitação de payload para que o cliente possa confirmar a identidade do servidor. Em geral, os webhooks são protegidos por autenticação Mutual Transport Layer Security (mTLS), que verifica o cliente e o servidor antes do envio do payload. As aplicações cliente também costumam usar criptografia SSL no URL do webhook para assegurar a privacidade da transferência de dados.

Webhooks:

  • Eliminam a necessidade de pesquisas: isso economiza recursos da aplicação cliente.  
  • São rápidos de configurar: se uma aplicação dá suporte a webhooks, fica fácil de configurá-los usando a interface de usuário da aplicação servidor. É nesse momento que o cliente insere o URL do webhook da aplicação e define os parâmetros básicos, como o evento relevante.    
  • Automatizam a transferência de dados: o payload é enviado assim que o evento especificado ocorre na aplicação servidor. Essa troca é iniciada pelo evento, então a transferência de dados do servidor para o cliente acontece em tempo real.
  • São ótimos para payloads específicos e lightweight: os webhooks dependem do servidor para determinar o volume de dados enviados. Cabe ao cliente interpretar e usar o payload de maneira produtiva. Como o cliente não tem controle sobre o tamanho ou o momento da transferência de dados, os webhooks processam pequenos volumes de informações entre dois endpoints, normalmente na forma de notificações.
 

Em geral, os webhooks são usados para simplificar a comunicação entre duas aplicações, mas também podem ser utilizados para automatizar fluxos de trabalho de infraestrutura como código (IaC) e viabilizar práticas de GitOps.

O que é infraestrutura como código (IaC)? 

Infraestrutura como código (IaC) é o gerenciamento e provisionamento de infraestrutura por código, em vez de processos manuais. O controle de versão é uma parte importante da IaC. Os arquivos de configuração devem pertencer à fonte como qualquer outro código-fonte de software. Ao implantar a infraestrutura como código, também é possível separá-la em módulos, que podem ser combinados de diferentes maneiras por meio da automação.

Ao automatizar o provisionamento da infraestrutura com a IaC, os desenvolvedores não precisam provisionar e gerenciar manualmente servidores, sistemas operacionais, armazenamento e outros componentes de infraestrutura sempre que criam ou implantam uma aplicação. A codificação da infraestrutura oferece um template de provisionamento. Também é possível fazer isso manualmente, mas esses processos podem ser automatizados com uma plataforma de estado desejado de nível empresarial, como o Red Hat® Ansible Automation® Platform.

O que é GitOps?

Muitas vezes considerado uma evolução da IaC, o GitOps é uma abordagem estratégica para gerenciar configurações de infraestruturas e aplicações usando o Git, um sistema de controle de versões open source. Seguindo as práticas do GitOps, os desenvolvedores utilizam o Git como a única fonte de verdade para infraestrutura e aplicações declarativas e usam as pull requests do Git para gerenciar automaticamente o provisionamento e a implantação da infraestrutura. O repositório Git contém todo o estado do sistema, de modo que o registro de mudanças fique visível e possa ser auditado. 

Como os webhooks funcionam?

Os webhooks reduzem o número de etapas necessárias para implementar e gerenciar pipelines de implantação centrados no Git e podem ser usados para automatizar o lançamento de fluxos de trabalho inteiros da IaC. Um webhook funciona da mesma maneira em um ambiente de GitOps e entre duas aplicações. Quando acionado por um evento específico, uma API envia um payload para outra. A diferença está no tipo de evento que aciona o webhook e no que o destinatário faz com o payload.

Nesse contexto, o repositório Git exerce a função de aplicação servidor enquanto a plataforma de estado desejado, que gerencia o estado da infraestrutura, exerce a função de aplicação cliente. Um webhook pode estar configurado para acionar a comunicação sempre que o repositório for alterado. Por exemplo, se uma parte do código for atualizada e enviada para o repositório Git, esse evento acionará o webhook. Então, o repositório envia automaticamente o payload para o endereço do webhook da plataforma de estado desejado, informando sobre a alteração no código.

Esse uso dos webhooks permite que as plataformas de estado desejado fiquem sempre atualizadas sobre mudanças na infraestrutura sem precisar monitorar ativamente os repositórios. Se a plataforma de estado desejado também tiver suporte para automação, os webhooks podem ser usados para acionar fluxos de trabalho de IaC. Por exemplo, com uma plataforma de estado desejado de nível empresarial, como o Red Hat Ansible Automation Platform, um administrador de sistemas pode usar os webhooks para implantar automaticamente as alterações mais recentes nos hosts gerenciados.

O Red Hat® Ansible® Automation Platform contém webhooks de automação integrados para oferecer suporte às práticas de IaC e GitOps. Os webhooks viabilizam a integração nativa de um repositório Git, por meio de serviços como GitHub ou GitLab, com o Ansible Automation Platform. Quando um link de repositório estiver configurado, o Ansible Automation Platform registrará confirmações Git e usará esses eventos para acionar tarefas de automação a fim de atualizar projetos, gerenciar inventário e fazer implantações.

Com os webhooks de automação, você pode ativar automaticamente os fluxos de trabalho de automação quando os eventos acontecerem no sistema de controle de origem. Isso elimina a necessidade de ferramentas adicionais de CI/CD, como o Jenkins, para monitorar repositórios e iniciar trabalhos de automação quando ocorrem as mudanças, simplificando o fluxo de trabalho do GitOps e otimizando as operações. Como o Red Hat Ansible Automation Platform funciona com uma grande variedade de ferramentas de desenvolvimento e implantação, é possível adaptar o fluxo de trabalho do GitOps a suas ferramentas e processos preferidos.

 
E-book cover of Teaching an elephant to dance

Ebook recomendado

Liberte-se dos processos e complexidades de TI que te impedem de atingir a performance máxima. Leia o ebook "Como ensinar um elefante a dançar".

Leia mais

Artigo

Noções básicas do Ansible

O Ansible automatiza processos de TI como provisionamento e gerenciamento de configuração. Conheça as noções básicas do Ansible com esta introdução aos principais conceitos.

Artigo

O que é gerenciamento de processos de negócios?

Gerenciamento de processos de negócios (BPM) é a prática de modelar, analisar e otimizar processos de ponta a ponta para alcançar os objetivos estratégicos.

Artigo

Por que escolher a Red Hat para a automação?

O Red Hat Ansible Automation Platform oferece todas as ferramentas necessárias para compartilhar a automação entre as equipes e implementá-la por toda a empresa.

Leia mais sobre automação

Soluções Red Hat

Os consultores estratégicos da Red Hat fornecem uma visão geral da sua organização, analisam os desafios e ajudam a superá-los com soluções abrangentes e econômicas.

Uma plataforma com suporte completo para implementar a automação em escala, de ponta a ponta.

Uma plataforma para o desenvolvimento de aplicações nativas em nuvem que automatiza decisões e processos de negócios.

Conteúdo adicional

Treinamentos Red Hat

Treinamento gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Treinamento gratuito

Red Hat Ansible Automation for SAP

Illustration - mail

Quer receber mais conteúdo deste tipo?

Cadastre-se para receber a nossa newsletter Red Hat Shares.