Criar um serviço da Web

Nesta página, descrevemos 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.

  1. 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
      
  2. Instale o Go na VM. Para mais informações, consulte Instalar o Go.
  3. 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, você precisa estar ciente das 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.
  • Apenas os valores necessários para configurar o serviço da Web precisam ser inseridos durante a criação da VM.
  • A porta do serviço precisa ser inserida na 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 é executado no localhost.

Logging

Registre as informações necessárias e envie os registros para o Cloud Logging. Isso ajuda os consumidores de conectores 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 logger no principal e adicionar um middleware no Gin para rastrear todas as solicitações recebidas. Você precisa rastrear o método, o caminho, o status e a latência de uma solicitação. Para filtrar os registros, use a gravidade apropriada 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, os registros de informações podem ser usados. Confira os níveis de registro:

  • DEBUG: registra todas as partes da solicitação, incluindo os rastros de solicitação/resposta HTTP.
  • INFO: registra a inicialização e o encerramento do serviço, solicitações e outras informações.
  • ERROR: registra falhas de solicitação, exceções de formatação e outros erros.

Encerramento completo

Configure o servidor para encerrar sem dificuldades e processar as solicitações em andamento. Para informações sobre como reiniciar ou interromper o servidor de forma informada, consulte Reinicialização ou interrupção informada.

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 são consideradas com uso intenso de recursos, use 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

  1. Defina a porta e execute o servidor usando os seguintes comandos:
  2. EXPORT CONNECTOR_ENV_PORT = 8081
    go get .
    go run .

    Esses comandos agrupam as bibliotecas necessárias e executam o servidor.

  3. 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"
  4. Crie o binário e use-o como imagem da VM usando o seguinte comando:
    go build -o SERVICE_NAME
  5. Mova o binário para a pasta raiz usando o seguinte comando:
    sudo cp SERVICE_NAME /opt
  6. 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

Colocar o aplicativo em um contêiner

  1. Instalar o Docker. Para mais informações, consulte Instalar o Docker.
  2. Crie um arquivo do Docker para executar binários.
    FROM alpine:latest
    WORKDIR /opt
    COPY . .
    CMD ["./SERVICE_NAME"]
  3. Crie o contêiner do conector usando o seguinte comando:
    sudo docker build -t connector-container .
  4. 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 encaminhados para o Cloud Logging usando o driver de registro gcplogs ao executar o contêiner do Docker. Isso ajuda a rastrear a inicialização ou falha ou encerramento inesperado do serviço.

Para encaminhar os registros para o 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