Crea un servizio web

Questa pagina descrive come creare un servizio web nella VM utilizzando il framework web Gin scritto in Golang. Puoi scegliere di creare il servizio web in qualsiasi altro framework che vuoi utilizzare.

  1. Per scaricare il pacchetto Go nella VM, esegui questo comando nella VM:
    wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
      
  2. Installa Go nella VM. Per informazioni, vedi Installare Go.
  3. Per creare una nuova directory per il servizio web, esegui questo comando:
    mkdir SERVICE_REPO
      cd SERVICE_REPO
      

Ulteriori considerazioni

Quando crei un servizio web, devi tenere presente le seguenti considerazioni:

  • Gli input necessari durante la creazione della VM sono disponibili come variabili di ambiente e hanno il seguente prefisso: CONNECTOR_ENV_.
  • Quando configuri il servizio web, utilizza le variabili di ambiente per leggere questi valori.
  • Durante la creazione della VM devono essere presi in considerazione solo i valori necessari per configurare il servizio web.
  • La porta del servizio deve essere presa come input dalla variabile CONNECTOR_ENV_PORT.
  • Utilizza altre variabili di ambiente per gli input facoltativi.
  • Puoi anche ricevere input durante la creazione della connessione. Puoi definire questi campi quando crei il connettore personalizzato e passarli come percorso, query o intestazioni in ogni chiamata API.
  • Assicurati che il server sia in esecuzione su localhost.

Logging

Registra le informazioni richieste e invia i log a Cloud Logging. In questo modo, i consumatori del connettore possono monitorare ed eseguire il debug degli errori. Per pubblicare i log in Cloud Logging, puoi utilizzare il seguente client Cloud Logging disponibile in Go: https://pkg.go.dev/cloud.google.com/go/logging#NewClient

Devi inizializzare il logger in main e aggiungere un middleware in Gin per monitorare tutte le richieste in entrata. Devi monitorare il metodo, il percorso, lo stato e la latenza di una richiesta. Per filtrare i log, utilizza la gravità appropriata durante la registrazione. Nel servizio web, leggi il livello di log dalla variabile di ambiente. Il livello di log viene considerato come input facoltativo durante la creazione della VM. Per impostazione predefinita, è possibile utilizzare i log informativi. Di seguito sono riportati i livelli di log:

  • DEBUG: registra ogni parte della richiesta, incluse le tracce di richiesta/risposta HTTP.
  • INFO: avvio del servizio di log, arresto del servizio, richieste e altre informazioni.
  • ERROR: registra l'errore della richiesta, le eccezioni di formattazione e altri errori.

Arresto controllato

Configura il server per l'arresto normale e gestisci le richieste in corso. Per informazioni su come riavviare o arrestare normalmente il server, vedi Riavvio o arresto normale.

Contemporaneità

I server Gin supportano intrinsecamente le richieste simultanee utilizzando le routine Go. Per impostazione predefinita, le goroutine possono elaborare un numero indefinito di richieste. Tuttavia, in alcuni casi, quando le richieste dovrebbero richiedere molte risorse, utilizza i pool di worker per limitare e memorizzare nel buffer le richieste sul server. Per saperne di più, vedi Esempio di pool di worker.

Testa e crea il binario

  1. Imposta la porta ed esegui il server utilizzando i seguenti comandi:
  2. EXPORT CONNECTOR_ENV_PORT = 8081
    go get .
    go run .

    Questi comandi raggruppano le librerie richieste ed eseguono il server.

  3. Per verificare il server, esegui il seguente comando curl sulla 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. Crea il file binario e utilizzalo come immagine VM utilizzando il seguente comando:
    go build -o SERVICE_NAME
  5. Sposta il file binario nella cartella principale utilizzando il seguente comando:
    sudo cp SERVICE_NAME /opt
  6. Esegui di nuovo il servizio per verificare che il binario funzioni come previsto utilizzando questo comando:
    sudo chmod +x SERVICE_NAME
    ./SERVICE_NAME

Containerizza l'applicazione

  1. Installa Docker. Per informazioni, vedi Installare Docker.
  2. Crea un file Docker per eseguire i file binari.
    FROM alpine:latest
    WORKDIR /opt
    COPY . .
    CMD ["./SERVICE_NAME"]
  3. Crea il container del connettore utilizzando il seguente comando:
    sudo docker build -t connector-container .
  4. Esegui il container Docker. Imposta --restart=unless-stopped per riavviare il servizio in caso di errore imprevisto.

Attività a livello di contenitore

Tutti i log in stdout possono essere indirizzati a Cloud Logging utilizzando il driver di log gcplogs durante l'esecuzione del container Docker. Ciò consente di monitorare l'avvio o l'arresto anomalo o inatteso del servizio.

Per indirizzare i log a Cloud Logging, esegui questo 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

Passaggi successivi