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.

  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, 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

  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 a 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. Instale o Docker. Para mais informações, consulte Instalar o Docker.
  2. Crie um arquivo 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 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