Ilustração de janelas de navegador, smartphones e computadores conectados por meio de uma interface de API
Ir para seção

O que é um webhook?

Copiar URL

Um webhook é uma função de retorno de chamada baseada em HTTP que viabiliza a comunicação lightweight e orientada por eventos entre duas interfaces de programação de aplicações (APIs, na sigla em inglês). Os webhooks são usados por várias apps web para receber pequenos volumes de dados de outras apps, mas também podem ser utilizados para acionar fluxos de trabalho de automação nos ambientes do GitOps.

Como os webhooks podem conectar origens de eventos a soluções de automação, eles são a única forma de iniciar uma automação orientada por evento para realizar ações de TI quando um evento específico ocorre.

O que é uma API?

A API é um conjunto de definições e protocolos usado no desenvolvimento e na integração de software 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 app cliente que chama a app servidor. No entanto, essas funções podem se inverter, dependendo da app que esteja solicitando os dados.  

Em geral, as APIs web utilizam HTTP para solicitar dados de outras apps e definir a estrutura das mensagens de resposta, que normalmente são enviadas em um arquivo XML ou JSON. Ambos são formatos recomendados porque apresentam os dados de forma simplificada, o que facilita a manipulação por outras apps. 

Quando uma API cliente solicita dados de uma API servidor, ela quer 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 app cliente não sabe o estado da app servidor, então ele busca uma atualização na API servidor, 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 app cliente precisa continuar pedindo a atualização e esperar até a ocorrência do evento relevante.

O que torna os webhooks diferentes?

Para configurar um webhook, o cliente oferece uma URL exclusivo 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 a 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 estão 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 apps para interceptar chamadas ou outros eventos relevantes. Os webhooks capturam o evento que ocorre na app servidor e solicitam o envio do payload para o cliente via web. Jeff Lindsay ajudou a disseminar este conceito em 2007, no post “Web hooks to revolutionize the web”.

As equipes de TI usam vários métodos para proteger as apps que se comunicam por webhooks. A maioria das apps 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 pela autenticação de TLS mútuo (mTLS), que verifica o cliente e o servidor antes do envio do payload. As apps cliente também costumam usar criptografia SSL na URL do webhook para assegurar a privacidade da transferência de dados.

Webhooks: 

  • Dispensam a necessidade de pesquisa. Assim você economiza recursos para a aplicação cliente. 
  • São rápidos de configurar. Se uma app oferece suporte a webhooks, fica fácil de configurá-los usando a interface de usuário da app servidor. É nesse momento que o cliente insere a URL do webhook da app 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 app servidor. Essa troca é iniciada pelo evento, então a transferência de dados do servidor para o cliente acontece praticamente em tempo real.
  • São ótimos para payloads lightweight específicos. 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 exatos 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, na sigla em inglês) 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 estar sob esse processo 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, no entanto esses processos podem ser automatizados com uma plataforma empresarial de estado desejado, como o Red Hat® Ansible® Automation Platform.

O que é o GitOps?

Muitas vezes considerado uma evolução da IaC, o GitOps é uma abordagem estratégica para gerenciar configurações de infraestrutura e aplicação usando o Git, um sistema de controle de versão open source. Seguindo as práticas do GitOps, os desenvolvedores utilizam o Git como single source of truth para aplicações e infraestruturas declarativas e usam 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 alterações fique visível e possa ser auditado. 

Onde os webhooks entram em cena?

Os webhooks reduzem o número de etapas necessárias para implementar e gerenciar pipelines de dados de implantação com foco no Git. Com eles, você pode automatizar a inicialização de fluxos de trabalho inteiros da IaC. Em um ambiente GitOps, com um repositório git como source of truth, o webhook funciona da mesma maneira que 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 app servidor enquanto a plataforma de estado desejado, que gerencia o estado da infraestrutura, exerce a função de app cliente. Webhooks podem ser usados para notificar a plataforma de estado desejado sempre que uma alteração é feita no repositório git. Se uma parte do código for atualizada e enviada para o repositório, 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.

Se a plataforma de estado desejado oferecer suporte à automação, esses webhooks também poderão iniciar fluxos de trabalho da IaC, automatizando a alteração de código. Por exemplo, os administradores de sistema podem implementar a automação, que será acionada toda vez que o payload de um webhook for recebido, permitindo a aplicação automática de novas alterações de código em seus hosts gerenciados e a restauração destes para um estado padrão. Esse método de usar webhooks para acionar automação pode ser ampliado para realizar outras operações de TI sem intervenção humana, viabilizando a automação orientada a eventos.

A única diferença é a source of truth. Em vez de conectar uma plataforma de estado desejado a um repositório git, que depende de pessoas para enviar atualizações de código, um webhook pode conectá-la a uma ferramenta de terceiros que monitora uma fonte em busca de eventos específicos. Depois que essas fontes de eventos detectam o alvo e acionam o webhook, o payload pode iniciar a automação que toma medidas imediatas para resolver o evento a qualquer hora do dia, sem precisar que a equipe de TI pressione qualquer botão.

A automação orientada a eventos é o processo de responder automaticamente às mudanças de condições de um ambiente de TI para acelerar a solução de problemas e diminuir as tarefas rotineiras e repetitivas. Com a automação orientada a eventos, as equipes de TI podem codificar respostas para quaisquer eventos, como problemas de hardware, ataques distribuídos de negação de serviço (DDoS), falta de memória ou falhas de aplicações. Assim, a ação necessária será executada automaticamente quando o evento ocorrer.

As soluções orientadas a eventos contam com plugins ou ferramentas de terceiros, como ServiceNow, Kafka, Prometheus, Sensu, Dynatrace e Appdynamics, para monitorar eventos em uma fonte. O webhooks podem ser usados para conectar essas fontes de eventos a uma plataforma de automação, de modo que, quando uma fonte detectar um evento, o webhook acione a resposta automatizada apropriada.

As equipes de TI podem adotar a automação orientada a eventos de forma incremental para reduzir o tempo médio de resolução (MTTR) e executar funções que ainda exigem intervenção humana (como a criação automática de um ticket). Elas também podem buscar gradualmente a correção totalmente automática para que a ação apropriada seja realizada quando ocorrer um problema específico.

Comece a incorporar inovação e resiliência às operações de TI com a automação orientada a eventos.

O Red Hat Ansible Automation Platform é uma plataforma de automação de ponta a ponta projetada para ajudar as equipes de TI a criar, gerenciar e escalar a automação em toda a empresa. É possível usar webhooks para integrar o Ansible Automation Platform a um repositório Git, com um serviço como GitHub ou GitLab, para dar suporte às práticas de IaC e GitOps. 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.

Os webhooks permitem que você ative a automação sem intervenção manual quando os eventos acontecerem no sistema de controle de código-fonte. 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 mudanças, simplificando o fluxo de trabalho do GitOps e otimizando as operações. Como o Ansible Automation Platform funciona com uma grande variedade de ferramentas de desenvolvimento e implantação, é possível adaptar o fluxo de trabalho do GitOps conforme suas ferramentas e processos preferidos.

Automação essencial com o Event-Driven Ansible 

Incluído no Ansible Automation Platform, o Event-Driven Ansible oferece a capacidade de gerenciamento de eventos necessária para automatizar tarefas demoradas e responder a condições dinâmicas em todos os domínios da TI. Ele pode processar eventos que contêm inteligência para avaliar as condições no ambiente de TI, determinar a resposta adequada ao evento e executar ações automatizadas para solucionar ou minimizar o evento.

O Event-Driven Ansible pode ser usado para automatizar tarefas de gerenciamento de serviços de TI, como aprimoramento de tickets, correções e gerenciamento de usuários, além de uma variedade de outros processos de TI. Ele conecta fontes de eventos às ações correspondentes por meio de regras. Os Ansible Rulebooks definem as fontes de evento e explicam a ação a ser tomada quando o evento ocorrer na forma de instruções condicionais do tipo "se isto acontecer, faça isto". Com base no rulebook criado, o Event-Driven Ansible reconhece o evento especificado, faz a correspondência entre ele e a ação adequada e executa a ação automaticamente.

Você pode usar webhooks genéricos totalmente compatíveis para conectar o Event-Driven Ansible a fontes de eventos, mas ele também oferece uma biblioteca de ecossistema de plugins de fonte projetados por parceiros para sua tecnologia específica. Esses plugins totalmente compatíveis permitem que você crie automação orientada a eventos sem precisar escrever código ou programar webhooks para cada novo evento. Você só precisa saber em qual evento se interessa e qual ação deseja que aconteça. Escreva as instruções em um Ansible Rulebook e execute automaticamente qualquer playbook do Ansible preexistente ou fluxo de trabalho de automação que você desejar.

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.

Conteúdo adicional

Treinamentos Red Hat

Treinamento gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Treinamento gratuito

Red Hat Ansible Automation for SAP