Criar um serviço da Web
Esta página descreve como criar um serviço da Web na VM usando o framework da Web Gin escrito em Golang. Você pode criar o serviço da Web em qualquer outro framework que quiser usar.
- Para fazer o download do pacote Go na VM, execute o seguinte comando:
wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
- Instale o Go na VM. Para mais informações, consulte Instalar o Go.
- Para criar um novo diretório para o serviço da Web, execute o seguinte comando:
mkdir SERVICE_REPO cd SERVICE_REPO
Outras considerações
Ao criar um serviço da Web, considere as seguintes considerações:
- As entradas necessárias durante a criação da VM estão disponíveis como variáveis de ambiente e têm o seguinte prefixo:
CONNECTOR_ENV_
. - Ao configurar o serviço da Web, use as variáveis de ambiente para ler esses valores.
- Somente os valores necessários para configurar o serviço da Web precisam ser usados como entrada durante a criação da VM.
- A porta do serviço precisa ser usada como entrada da variável CONNECTOR_ENV_PORT.
- Use outras variáveis de ambiente para entradas opcionais.
- Você também pode receber entradas durante a criação da conexão. É possível definir esses campos ao criar o conector personalizado e transmiti-los como caminho, consulta ou cabeçalhos em cada chamada de API.
- Verifique se o servidor está sendo executado no localhost.
Geração de registros
Registre as informações necessárias e envie os registros para o Cloud Logging. Isso ajuda os consumidores do conector a rastrear e depurar falhas. Para publicar registros no Cloud Logging, use o seguinte cliente do Cloud Logging disponível em Go: https://pkg.go.dev/cloud.google.com/go/logging#NewClient
É necessário inicializar o registrador no main e adicionar um middleware no Gin para rastrear todas as solicitações recebidas. É necessário acompanhar o método, o caminho, o status e a latência de uma solicitação. Para filtrar os registros, use a gravidade adequada durante o registro. No serviço da Web, leia o nível de registro da variável de ambiente. O nível de registro é considerado uma entrada opcional durante a criação da VM. Por padrão, é possível usar os registros de informações. Confira os níveis de registro a seguir:
- DEBUG: registra todas as partes da solicitação, incluindo os rastros de solicitação/resposta HTTP.
- INFO: registra a inicialização, a desativação, as solicitações e outras informações do serviço.
- ERRO: registra falhas de solicitação, exceções de formatação e outros erros.
Encerramento sem dificuldades
Configure o servidor para encerrar e processar as solicitações em andamento. Para saber como reiniciar ou interromper o servidor, consulte Reinicializar ou interromper o servidor.
Simultaneidade
Os servidores Gin oferecem suporte inerente a solicitações simultâneas usando rotinas Go. Por padrão, um número indefinido de solicitações pode ser processado por rotinas Go. No entanto, em alguns casos, quando as solicitações exigem muitos recursos, use os pools de workers para restringir e armazenar em buffer as solicitações no servidor. Para mais informações, consulte Exemplo de pools de workers.
Testar e criar o binário
- Defina a porta e execute o servidor usando os seguintes comandos:
- Para verificar o servidor, execute o seguinte comando curl na VM:
curl -X POST -H "Content-Type: application/json" -H "X-Custom-Header: MyValue" -d '{"name": "Alice", "address": "123 Main St", "gender": "F"}' http://localhost:8081/postData/456
curl -v http://localhost:8081/getData -H "TestKey: MyValue"
- Crie o binário e use-o como a imagem da VM usando o seguinte comando:
go build -o SERVICE_NAME
- Mova o binário para a pasta raiz usando o seguinte comando:
sudo cp SERVICE_NAME /opt
- Execute o serviço novamente para verificar se o binário está funcionando conforme o esperado usando o seguinte comando:
sudo chmod +x SERVICE_NAME ./SERVICE_NAME
EXPORT CONNECTOR_ENV_PORT = 8081 go get . go run .
Esses comandos agrupam as bibliotecas necessárias e executam o servidor.
Colocar o aplicativo em um contêiner
- Instale o Docker. Para mais informações, consulte Instalar o Docker.
- Crie um arquivo Docker para executar binários.
FROM alpine:latest WORKDIR /opt COPY . . CMD ["./SERVICE_NAME"]
- Crie o contêiner do conector usando o seguinte comando:
sudo docker build -t connector-container .
- Execute o contêiner do Docker. Defina
--restart=unless-stopped
para reiniciar o serviço em caso de falha inesperada.
Tarefa no nível do contêiner
Todos os registros no stdout podem ser roteados para o Cloud Logging usando o driver de registro gcplogs durante a execução do contêiner do Docker. Isso ajuda a rastrear a inicialização ou falha inesperada ou o encerramento do serviço.
Para encaminhar os registros ao Cloud Logging, execute o seguinte comando:sudo docker run --name connector-service -e CONNECTOR_ENV_PORT=$CONNECTOR_ENV_PORT -p $CONNECTOR_ENV_PORT:$CONNECTOR_ENV_PORT --restart=unless-stopped ----log-driver=gcplogs connector-container
A seguir
- Saiba como criar um conector personalizado.