Ir para o conteúdo

Durante alguns ciclos e desenvolvimento é necessário que um dado serviço seja exposto para ser consumido na internet. Um típico cenário para isso é o desenvolvimento de webhooks. Em um cenário de webhook talvez seja necessário que um serviço externo sensibilize o endpoint que está sendo desenvolvimento. Entre as soluções mais tradicionais estão a publicação da aplicação em alguma plataforma serverless como por exemplo ECS, Beanstalk ou Hiroku. Esse artigo apresenta uma alternativa rápida, que expõe o seu serviço local.

A facilidade do uso das clouds permite que em poucos minutos uma aplicação esteja disponível e publicada, porém demanda um esforço para que isso aconteça. Esse esforço envolve normalmente o provisionamento de ambientes e a sua publicação a cada alteração. Uma alternativa para exposição de serviços é rotear o acesso diretamente para a aplicação local. Essa estratégia elimina a necessidade de publicações para testes e /ou validações. Sem o uso de ferramentas esse processo tende a ser demorado, manual e pouco eficiente.

Ngrok – Ingress-as-a-Service

O Ngrok é uma ferramenta super esperta que, através da utilização de um agente local, permite redirecionar todo o tráfego de uma DNS temporário para uma porta local específica. Isso significa que toda a requisição feita para esse DNS temporário é redirecionada para a porta local do seu dispositivo.

Implementando o Webhook com Ngrok

Durante a integração como o webhook do Azure DevOps foi necessário expor uma URL válida para receber os eventos do Azure DevOps. Para agilizar o processo do laboratório inicial, utilizei um DNS temporário criado pelo Ngrok para que a aplicação rodando localmente fosse sensibilizada.

Para ser sensibilizado pelo webhook do Azure DevOps coloquei a aplicação para executar localmente na porta 5084.

info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5084

Uma vez que o Ngrok está instalado com sua chave de API configurada, basta executar o agente para criar o DNS temporário e iniciar o redirecionamento.

ngrok http 5084

Em alguns segundos o redirecionamento estará concluído.

No teste abaixo, observamos que a requisição de teste feita pelo painel de Service Hook do Azure DevOps é recebida diretamente na aplicação que está rodando localmente em modo debug.

Conclusão

Em cenários de laboratórios, testes ou integrações rápidas, a estratégia com o Ngrok é uma excelente alternativa para evitar o investimento de tempo e energia em itens de infraestrutura que estejam fora do escopo. O Ngrok está disponível para Windows, Mac e Linux e a sua licença free permite a criação de um redirecionamento.

Dica

A instalação do Ngrok está disponível nos principais gerenciadores de pacotes.

  • brew install ngrok/ngrok/ngrok
  • choco install ngrok
  • snap install ngrok

Outras publicações