Quem desenvolve para a web sabe que, durante o desenvolvimento, é comum usar um servidor HTTP local para poder testar os sites e aplicações web desenvolvidos. Sabe também que, por ser um servidor local, outras pessoas não tem acesso ao que você desenvolve localmente, e isso pode ser um problema caso você queira que outra pessoa teste rapidamente o que você desenvolveu ou queira apenas mostrar uma funcionalidade nova a um amigo.
Claro, em um setup adequado, o ambiente de produção na verdade seria dividido em três ambientes:
- Dev - Possuindo o código da branch mais recentemente atualizada;
- QA - Possuindo o código da branch que já possui um certo nível de estabilidade e está quase pronto para ser lançado;
- Produção - Possuindo o código mais estável e que está realmente em produção;
E , com um setup assim, bastaria fazer o deploy para o ambiente de dev e tudo certo, tudo ok. O problema é que mesmo um deploy as vezes pode ser lento demais, logo, a melhor opção seria mostrar o que está mesmo rodando em sua máquina. Mas, e se a pessoa estiver longe? ¯_(ツ)_/¯
É por isso que hoje vou falar sobre o Ngrok, um programa de fácil uso, que não exige cadastro, e que permite criar o que é conhecido por túneis, entre a internet e o seu computador.
Mas, o que é um túnel?
Simples, jovem gafanhoto, um túnel é um simples proxy, ou redirecionamento, de um outro computador para o seu. Vou te dar um exemplo: Imagine que você, na máquina A, tem um servidor escutando na porta 8080. Se você criar um túnel reverso para a máquina B na porta 9090, será possível que alguém, na máquina B, ao acessar http://127.0.0.1:9090 no navegador, veja o que na verdade está na sua máquina, e não na máquina B, pois todos os dados que foram para tal porta na verdade foram redirecionados para o seu computador e atendidos pelo seu servidor escutando na porta 8080.
E é isso que o ngrok faz? CONEXÃO ENTRE DUAS MÁQUINAS?
hmmm...Mais ou menos. O que o Ngrok faz, em termos exatos, é criar um túnel de algum servidor executando na sua máquina para os servidores do Ngrok. Assim, se você tem algum serviço escutando na porta 8080, e executa o Ngrok para criar um túnel para a porta 8080 do seu computador, o Ngrok te fornecerá um endereço no estilo http://<hash>.ngrok.io que, ao ser acessado, implicará em acesso ao servidor rodando na sua máquina.
O detalhe que fez o Ngrok ser o assunto de hoje é que, mesmo sendo de uso simples, o Ngrok possui algumas características bem interessantes que chamam a atenção:
- Inspetor de requisições: Você consegue literalmente ver o que o usuário do outro lado está acessando na sua máquina, incluindo cabeçalhos de requisição e resposta;
- Replay de requisições: Se alguma requisição causou alguma exceção na sua aplicação, é possível dar replay nela, de forma que o mesmo conteúdo seja enviado novamente ao seu servidor para verificar se o problema foi corrigido;
- Proteção com usuário e senha: Por ser público, a URL do Ngrok pode ser acessada por qualquer um. Para maior proteção, é possível protegê-la definindo um usuário e senha para acesso à URL.
- Suporte a websocket: Útil para aplicações em tempo real.
- Criação de túneis TCP: Em aplicações que não usam só HTTP, essa feature é útil para permitir o acesso de um servidor TCP qualquer na sua máquina por outras pessoas.
- Código aberto: Você pode instalar o servidor do Ngrok em algum VPS que você possua e ter um servidor só seu para criação de túneis para a sua máquina.
- Multiplataforma: Pode ser usado em qualquer sistema operacional facilmente pois não possui dependências;
Além disso, a simplicidade do software é absurda. Para você ter uma idéia, após a instalação, basta rodar:
E copiar a URL que o Ngrok te fornece, ali mesmo, no terminal, para mandar para seus amigos e conhecidos testarem, pois, como explicado acima, quem acessar esta URL verá diretamente o que está rodando no seu computador, no servidor da porta especificada. Simples, fácil, rápido e seguro.
Segue os links para o projeto:
- Site oficial: https://ngrok.com/
- Repositório do Github: https://github.com/inconshreveable/ngrok/
Até semana que vem!
Deixe um comentário