Consultez les connecteurs compatibles avec Application Integration.

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.

  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 Install Go (Installer Go).
  3. Pour créer un répertoire pour le service Web, exécutez la commande suivante :
    mkdir SERVICE_REPO
      cd SERVICE_REPO
      

Remarques supplémentaires

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

  • Les entrées dont vous avez besoin lors de la création de la VM sont disponibles en tant que variables d'environnement et portent le préfixe 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 utilisées en tant qu'entrées lors de la création de la VM.
  • Le port du service doit être utilisé en tant qu'entrée à 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 transférez les journaux à Cloud Logging. Cela permet aux utilisateurs de connecteurs de suivre et de déboguer les échecs. Pour publier des journaux dans Cloud Logging, vous pouvez utiliser le client Cloud Logging disponible dans Go : https://pkg.go.dev/cloud.google.com/go/logging#NewClient.

Vous devez initialiser l'enregistreur dans "main" 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 le niveau de gravité approprié 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 de niveau INFO peuvent être utilisés. Voici les niveaux de journalisation :

  • DEBUG : consigne chaque partie de la requête, y compris les traces de requête/réponse HTTP.
  • INFO : consigne 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 progressivement et gère les requêtes en cours. Pour savoir comment redémarrer ou arrêter le serveur en douceur, consultez Graceful restart or stop (Redémarrage ou arrêt 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, les routines Go peuvent traiter un nombre indéfini de requêtes. Toutefois, dans certains cas, lorsque les requêtes sont censées nécessiter beaucoup de ressources, utilisez des pools de nœuds de calcul pour limiter et mettre en mémoire tampon les requêtes sur le serveur. Pour en savoir plus, consultez l'exemple de pools 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 VM à l'aide de la commande suivante :
    go build -o SERVICE_NAME
  5. Déplacez le binaire vers 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 Install Docker (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 de connecteurs à 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 in stdout peuvent être acheminés vers Cloud Logging à l'aide du pilote de journal gcplogs lors de l'exécution du conteneur Docker. Cela permet de suivre le démarrage, l'échec inattendu ou l'arrêt inopiné 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