Comment déployer l'application GraphQL à l'aide de nœud.JS sur le serveur EC2

Comment déployer l'application GraphQL à l'aide de nœud.JS sur le serveur EC2
GraphQL, également connu sous le nom de langage de requête graphique, établi et entretenu par Facebook, est un langage de requête utilisé pour les API. Il est construit à l'aide de langages de programmation JavaScript, Scala, Java et Ruby. Son objectif de base est de demander les données du serveur au client.GraphQL agrége les données de différentes sources. L'agrégation est le processus de filtrage des données du côté serveur, puis d'envoi des données filtrées au client. Sans agrégation, nous envoyons toutes les données au client, puis les données sont filtrées à côté du client. Cela rend le système lent, et nous pouvons améliorer l'efficacité d'une API en utilisant GraphQL. Ici, nous apprendrons à déployer une application GraphQL simple à l'aide du nœud.JS sur un serveur EC2.

Installation des packages requis

La première étape pour déployer votre application GraphQL consiste à préparer votre serveur en installant les packages requis. Connectez-vous au serveur à l'aide de SSH.

ubuntu @ ubuntu: ~ $ ssh ubuntu @ ipadress -i keypair.pem

NOTE: Assurez-vous que le groupe de sécurité de l'instance est configuré pour permettre la connexion à partir du port 22 et que le fichier de clé privée a 400 autorisation.

Mettre à jour les référentiels Ubuntu.

ubuntu @ ubuntu: ~ $ sudo apt-get update -y

Maintenant, installez le nœud.JS et NPM sur votre serveur Ubuntu.

ubuntu @ ubuntu: ~ $ sudo apt-get install nodejs -y
ubuntu @ ubuntu: ~ $ sudo apt-get install npm -y

Vérifiez l'installation en vérifiant la version du nœud.JS et NPM.

ubuntu @ ubuntu: ~ $ node -v
ubuntu @ ubuntu: ~ $ npm -v

Déplacer l'application GraphQL vers EC2 Server

L'instance EC2 est prête à déployer des applications GraphQL dans le nœud.js. Maintenant, nous allons déplacer notre code vers l'instance EC2. Deux façons courantes de copier le code sur le serveur sont répertoriées ci-dessous et seront discutées ici.

  • Copier le code à l'aide de la commande SCP
  • Cloone Code d'application de GitHub, GitLab ou Bitbucket

Copier l'application à l'aide de la commande SCP

Afin de copier votre application sur le serveur EC2 à l'aide de la commande SCP, tout d'abord, supprimez le répertoire 'node_modules' de votre application GraphQL. Ce répertoire dispose de tous les packages NPM requis pour exécuter l'application. Nous installerons ces packages plus tard avant de démarrer l'application GraphQL. Compressez maintenant le répertoire du projet dans un fichier zip. Après avoir créé le fichier zip, nous déplacerons le fichier Zip du projet vers le serveur. Linux et Windows ont différentes méthodes pour créer un fichier zip.

les fenêtres

Dans Windows, cliquez avec le bouton droit sur le répertoire racine de l'application et accédez à l'option «Envoyer à». Il ouvrira un sous-menu. Cliquez sur le «dossier compressé (zippé)» pour créer un fichier zip de l'application GraphQL.

Linux ou Mac

Dans Linux ou Mac OS, nous utiliserons la commande 'zip' pour créer un fichier zip du projet.

ubuntu @ ubuntu: ~ $ zip -r graphql.zip graphql

La commande ci-dessus générera le graphql.Fichier zip du répertoire GraphQL.

Télécharger l'application sur le serveur

Nous avons maintenant un fichier zip de notre application, et nous pouvons télécharger le fichier ZIP sur le serveur en utilisant la commande SCP.

ubuntu @ ubuntu: ~ $ scp -i keypair.pem graphql.zip ubuntu @ iPaddress: ~ /

La commande ci-dessus déplacera le fichier ZIP du projet vers le répertoire personnel du serveur distant sur la connexion SSH. Maintenant sur le serveur distant, dézip le fichier Zip du projet.

ubuntu @ ubuntu: ~ $ unzip graphQL.zipper

Clone Application de GitHub, Bitbucket ou GitLab

La deuxième méthode pour copier le code d'application sur le serveur utilise git. Installez Git à partir de la ligne de commande sur le serveur EC2.

ubuntu @ ubuntu: ~ $ sudo apt install git

Vérifiez la version git pour vérifier l'installation.

Ubuntu @ Ubuntu: ~ $ git --version

S'il ne donne pas la version de Git, alors Git n'est pas installé. Maintenant cloner l'application du github, du gitlab ou du bitbucket. Ici, nous allons cloner le code d'application du github.

ubuntu @ ubuntu: ~ $ git clone ttps: // github.com / content / the-example-app.nodejs

Démarrage de l'application GraphQL

Nous avons maintenant notre application GraphQL sur le serveur distant. Accédez au répertoire racine de l'application GraphQL et installez les packages NPM requis pour exécuter l'application GraphQL.

ubuntu @ ubuntu: ~ $ cd graphql
ubuntu @ ubuntu: ~ $ sudo npm install

Cette commande analysera le package.Fichier JSON dans le projet et installer tous les packages NPM requis. Après avoir installé les packages requis, nous allons maintenant démarrer l'application GraphQL.

ubuntu @ ubuntu: ~ $ application nœud.js

Application en cours d'exécution comme démon

Lorsque nous exécutons l'application en utilisant la méthode standard comme décrit ci-dessus, il s'exécute au premier plan, et l'application s'arrête lorsque vous fermez la fenêtre du terminal. Nous pouvons exécuter l'application en tant que processus d'arrière-plan en ajoutant le signe AmperSand (&) à la commande.

ubuntu @ ubuntu: ~ $ application nœud.js &

Le problème avec cette méthode est que lorsque nous modifions notre code d'application, les modifications appliquées ne refléteront pas automatiquement. Nous devrons redémarrer l'application chaque fois que nous modifions le code pour appliquer les modifications. Afin d'exécuter l'application en arrière-plan et pour appliquer les modifications automatiquement, nous utiliserons un package NPM nommé PM2. Installez PM2 sur le serveur.

ubuntu @ ubuntu: ~ $ sudo npm install -g pm2

Démarrez l'application GraphQL à l'aide de PM2.

ubuntu @ ubuntu: ~ $ pm2 start application.JS --name "GraphQL" --watch

L'indicateur «-name» nommera le processus d'arrière-plan, et nous pouvons démarrer et arrêter l'application en utilisant le nom. L'indicateur «-watch» continuera à vérifier le code de demande pour appliquer les modifications immédiatement. Vous pouvez en savoir plus sur PM2 en visitant le lien suivant

https: // pm2.Keymétrie.io /

Requête API GraphQL du navigateur

Nous pouvons configurer notre application GraphQL pour fabriquer manuellement les requêtes GraphQL à partir du navigateur. Pour cela, nous devons créer un point de terminaison HTTP séparé sur lequel nous allons monter le serveur API GraphQL. Et ce point de terminaison HTTP sera utilisé pour faire des requêtes manuelles. Voici le code pour créer le point de terminaison du serveur API GraphQL.

const Express = require ('express');
const graphQlHttp = require ('express-graphql');
const buildschema = require ('graphQl');
const GraphQlschema = Buildschema ('
Type Query
Message: chaîne
'
));
const func =
Message: () =>

return 'vous utilisez GraphQL API Server';

;
const Server = express ();
serveur.use ('/ graphQl', graphQlHttp (
schéma: graphqlschema,
RootValue: Func,
Graphiql: vrai
));
serveur.écouter (3000);

Maintenant, après avoir exécuté le serveur, nous pouvons accéder au serveur API GraphQL sur la route suivante.

http: // localhost: 3000 / graphQL

Interrogation API GraphQL à l'aide de CLI

Dans la section précédente, nous avons fait des requêtes GraphQL à partir du navigateur à l'aide de GraphiQL. Maintenant, nous allons faire des requêtes GraphQL en utilisant l'interface de ligne de commande dans Ubuntu. À partir de la ligne de commande, pour faire une demande de poste HTTP, nous utiliserons le module Curl.

ubuntu @ ubuntu: ~ $ curl -x post -h "contenu-type: application / json" -d '"query": "message"' http: // localhost: 3000 / graphql

Interroger API GraphQL par programmation

Afin de créer des requêtes GraphQL par programme, nous utiliserons le module «nœud-fetch» ​​dans le nœud.js. Nœud ouvert.js dans le terminal.

Ubuntu @ Ubuntu: ~ $ noeud

Maintenant, faites la demande HTTP Post au serveur à l'aide du module 'nœud-fetch'.

GraphQL est un langage de requête efficace, et il peut réduire le temps de réponse d'une requête réalisée à la base de données. Les appels d'API standard pour récupérer les données de la base de données impliquent de nombreuses données inutilisantes dans la réponse, et donc le temps de réponse augmente, ce qui diminue l'efficacité. La requête réalisée aux bases de données à l'aide de GraphQL ne renvoie que les données utiles et diminue donc le temps de réponse. Dans cet article, nous avons déployé notre application GraphQL sur une instance EC2.