Créer un service Web

Cette page explique comment créer un service Web dans la VM à l'aide du framework Web Gin, écrit en Golang. Vous pouvez choisir de créer le service Web dans n'importe quel autre framework que vous souhaitez utiliser.

  1. Pour télécharger le package Go dans la VM, exécutez la commande suivante dans la VM:
    wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
      
  2. Installez Go dans la VM. Pour en savoir plus, consultez Installer Go.
  3. Pour créer un répertoire pour le service Web, exécutez la commande suivante:
    mkdir SERVICE_REPO
      cd SERVICE_REPO
      

Informations complémentaires

Lorsque vous créez un service Web, vous devez tenir compte des points suivants:

  • Les entrées requises lors de la création de la VM sont disponibles en tant que variables d'environnement et portent le préfixe suivant: CONNECTOR_ENV_.
  • Lorsque vous configurez le service Web, utilisez les variables d'environnement pour lire ces valeurs.
  • Seules les valeurs requises pour configurer le service Web doivent être saisies lors de la création de la VM.
  • Le port du service doit être saisi à partir de la variable CONNECTOR_ENV_PORT.
  • Utilisez d'autres variables d'environnement pour les entrées facultatives.
  • Vous pouvez également obtenir des entrées lors de la création de la connexion. Vous pouvez définir ces champs lorsque vous créez le connecteur personnalisé et les transmettre en tant que chemin d'accès, requête ou en-têtes dans chaque appel d'API.
  • Assurez-vous que le serveur s'exécute sur localhost.

Journalisation

Consignez les informations requises et transmettez les journaux à Cloud Logging. Cela permet aux consommateurs de connecteurs de suivre et de déboguer les échecs. Pour publier des journaux dans Cloud Logging, vous pouvez utiliser le client Cloud Logging suivant disponible en Go: https://pkg.go.dev/cloud.google.com/go/logging#NewClient

Vous devez initialiser le journalisateur dans le fichier principal et ajouter un middleware dans Gin pour suivre toutes les requêtes entrantes. Vous devez suivre la méthode, le chemin d'accès, l'état et la latence d'une requête. Pour filtrer les journaux, utilisez la gravité appropriée lors de la journalisation. Dans le service Web, lisez le niveau de journalisation à partir de la variable d'environnement. Le niveau de journalisation est considéré comme une entrée facultative lors de la création de la VM. Par défaut, les journaux d'informations peuvent être utilisés. Voici les niveaux de journalisation:

  • DEBUG: enregistre chaque partie de la requête, y compris les traces de requête/réponse HTTP.
  • INFO: journalise le démarrage et l'arrêt du service, les requêtes et d'autres informations.
  • ERROR: consigne l'échec de la requête, les exceptions de mise en forme et d'autres erreurs.

Arrêt progressif

Configurez le serveur pour qu'il s'arrête correctement et gère les requêtes en cours. Pour savoir comment redémarrer ou arrêter le serveur en douceur, consultez la section Redémarrer ou arrêter le serveur en douceur.

Simultanéité

Les serveurs Gin acceptent de manière inhérente les requêtes simultanées à l'aide de routines Go. Par défaut, un nombre indéfini de requêtes est autorisé à être traité par les routines Go. Toutefois, dans certains cas, lorsque les requêtes sont censées être gourmandes en ressources, utilisez des pools de nœuds de calcul pour les limiter et les mettre en mémoire tampon sur le serveur. Pour en savoir plus, consultez Exemple de pool de nœuds de calcul.

Tester et créer le binaire

  1. Définissez le port et exécutez le serveur à l'aide des commandes suivantes:
  2. EXPORT CONNECTOR_ENV_PORT = 8081
    go get .
    go run .

    Ces commandes regroupent les bibliothèques requises et exécutent le serveur.

  3. Pour vérifier le serveur, exécutez la commande curl suivante sur la 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. Créez le binaire et utilisez-le comme image de la VM à l'aide de la commande suivante:
    go build -o SERVICE_NAME
  5. Déplacez le binaire dans le dossier racine à l'aide de la commande suivante:
    sudo cp SERVICE_NAME /opt
  6. Exécutez à nouveau le service pour vérifier que le binaire fonctionne comme prévu à l'aide de la commande suivante:
    sudo chmod +x SERVICE_NAME
    ./SERVICE_NAME

Conteneuriser l'application

  1. Installez Docker. Pour en savoir plus, consultez Installer Docker.
  2. Créez un fichier Docker pour exécuter des binaires.
    FROM alpine:latest
    WORKDIR /opt
    COPY . .
    CMD ["./SERVICE_NAME"]
  3. Créez le conteneur du connecteur à l'aide de la commande suivante:
    sudo docker build -t connector-container .
  4. Exécutez le conteneur Docker. Définissez --restart=unless-stopped pour redémarrer le service en cas d'échec inattendu.

Tâche au niveau du conteneur

Tous les journaux dans stdout peuvent être acheminés vers Cloud Logging à l'aide du pilote de journal gcplogs lorsque vous exécutez le conteneur Docker. Cela permet de suivre le démarrage, l'échec ou l'arrêt inattendu du service.

Pour acheminer les journaux vers Cloud Logging, exécutez la commande suivante:
  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

Étape suivante