Cómo implementar la aplicación GraphQL usando nodo.JS en el servidor EC2

Cómo implementar la aplicación GraphQL usando nodo.JS en el servidor EC2
GraphQL, también conocido como lenguaje de consulta Graph, establecido y mantenido por Facebook, es un lenguaje de consulta utilizado para API. Está construido con lenguajes de programación JavaScript, Scala, Java y Ruby. Su propósito básico es solicitar los datos del servidor al cliente.GraphQL agrega los datos de diferentes fuentes. La agregación es el proceso de filtrar datos en el lado del servidor y luego enviar los datos filtrados al cliente. Sin agregación, enviamos todos los datos al cliente y luego los datos se filtran al lado del cliente. Esto hace que el sistema sea lento, y podemos mejorar la eficiencia de una API mediante el uso de GraphQL. Aquí aprenderemos a implementar una aplicación GraphQL simple usando el nodo.JS en un servidor EC2.

Instalación de paquetes requeridos

El primer paso para implementar su aplicación GraphQL es preparar su servidor instalando los paquetes requeridos. Inicie sesión en el servidor usando SSH.

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

NOTA: Asegúrese de que el grupo de seguridad de la instancia esté configurado para permitir la conexión desde el puerto 22 y el archivo de clave privada tiene 400 permiso.

Actualizar repositorios de Ubuntu.

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

Ahora instalar nodo.JS y NPM en su servidor Ubuntu.

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

Verifique la instalación revisando la versión de Node.JS y NPM.

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

Mueva la aplicación GraphQL al servidor EC2

La instancia de EC2 está lista para implementar aplicaciones GraphQL en nodo.js. Ahora moveremos nuestro código a la instancia de EC2. Dos formas comunes de copiar el código al servidor se enumeran a continuación y se discutirán aquí.

  • Copiar código usando el comando SCP
  • Código de aplicación clon de GitHub, GitLab o Bitbucket

Copiar la aplicación usando el comando SCP

Para copiar su aplicación al servidor EC2 utilizando el comando SCP, en primer lugar, elimine el directorio 'node_modules' de su aplicación GraphQL. Este directorio tiene todos los paquetes NPM necesarios para ejecutar la aplicación. Instalaremos estos paquetes más tarde antes de comenzar la aplicación GraphQL. Ahora comprime el directorio del proyecto en un archivo zip. Después de crear el archivo zip, moveremos el archivo zip del proyecto al servidor. Linux y Windows tienen diferentes métodos para crear un archivo zip.

Windows

En Windows, haga clic con el botón derecho en el Directorio Root de la aplicación y vaya a la opción 'Enviar a'. Abrirá un submenú. Haga clic en la carpeta 'comprimida (con crema)' para crear un archivo zip de la aplicación GraphQL.

Linux o Mac

En Linux o Mac OS, utilizaremos el comando 'zip' para crear un archivo zip del proyecto.

ubuntu@ubuntu: ~ $ zip -r graphQl.Zip GraphQL

El comando anterior generará el GraphQL.Archivo ZIP del directorio GraphQL.

Cargar la aplicación al servidor

Ahora tenemos un archivo zip de nuestra aplicación, y podemos cargar el archivo zip al servidor utilizando el comando SCP.

ubuntu@ubuntu: ~ $ scp -i keypair.PEM GraphQL.zip ubuntu@ipaddress: ~/

El comando anterior moverá el archivo zip del proyecto al directorio de inicio del servidor remoto a través de la conexión SSH. Ahora en el servidor remoto, descomprima el archivo zip del proyecto.

ubuntu@ubuntu: ~ $ unzip graphQl.cremallera

Aplicación clon de Github, Bitbucket o Gitlab

El segundo método para copiar el código de aplicación al servidor es usar git. Instale GIT desde la línea de comando en el servidor EC2.

ubuntu@ubuntu: ~ $ sudo apt install git

Verifique la versión GIT para verificar la instalación.

ubuntu@ubuntu: ~ $ git --version

Si no da la versión de Git, entonces Git no está instalado. Ahora clone la aplicación de GitHub, Gitlab o Bitbucket. Aquí clonaremos el código de aplicación desde el github.

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

Iniciar la aplicación GraphQL

Ahora tenemos nuestra aplicación GraphQL en el servidor remoto. Vaya al directorio raíz de la aplicación GraphQL e instale los paquetes NPM requeridos para ejecutar la aplicación GraphQL.

Ubuntu@ubuntu: ~ $ CD Graphql
ubuntu@ubuntu: ~ $ sudo npm instalación

Este comando analizará el paquete.Archivo JSON en el proyecto e instale todos los paquetes NPM requeridos. Después de instalar los paquetes requeridos, ahora iniciaremos la aplicación GraphQL.

Ubuntu@ubuntu: ~ $ node aplicación.js

Ejecutar la aplicación como demonio

Cuando ejecutamos la aplicación utilizando el método estándar como se describe anteriormente, se ejecuta en primer plano y la aplicación se detiene cuando cierra la ventana del terminal. Podemos ejecutar la aplicación como un proceso de fondo agregando el signo ampersand (&) al comando.

Ubuntu@ubuntu: ~ $ node aplicación.JS y

El problema con este método es que cuando modificamos nuestro código de aplicación, los cambios aplicados no se reflejarán automáticamente. Tendremos que reiniciar la aplicación cada vez que modifiquemos el código para aplicar los cambios. Para ejecutar la aplicación en segundo plano y aplicar cambios automáticamente, utilizaremos un paquete NPM llamado PM2. Instale PM2 en el servidor.

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

Inicie la aplicación GraphQL con PM2.

Ubuntu@ubuntu: ~ $ PM2 Iniciar aplicación.JS - -Nombre "GraphQL" - -Watch

El indicador '-name' nombrará el proceso de fondo, y podemos iniciar y detener la aplicación usando el nombre. El indicador '-watch' continuará verificando el código de la aplicación para aplicar los cambios inmediatamente. Puede obtener más información sobre PM2 visitando el siguiente enlace

https: // pm2.llaves metricas.IO/

Consulta API GraphQL desde el navegador

Podemos configurar nuestra aplicación GraphQL para hacer consultas GraphQL desde el navegador manualmente. Para esto, tenemos que crear un punto final HTTP separado en el que montaremos el servidor de API GraphQL. Y este punto final HTTP se utilizará para hacer consultas manuales. El siguiente es el código para crear el punto final del servidor de API GraphQL.

const express = require ('express');
const GraphQlhttp = require ('Express-Graphql');
const buildSchema = require ('Graphql');
const graphqlschema = buildschema ('
Tipo de consulta
Mensaje: cadena
'
);
const func =
Mensaje: () =>

return 'está utilizando el servidor API GraphQL';

;
const servidor = express ();
servidor.Use ('/Graphql', GraphQlhttp (
Schema: Graphqlschema,
RootValue: FUNC,
Graphiql: verdadero
));
servidor.escuchar (3000);

Ahora, después de ejecutar el servidor, podemos acceder al servidor de API GraphQL en la siguiente ruta.

http: // localhost: 3000/graphql

Consulta de la API GraphQL usando CLI

En la sección anterior, hicimos consultas GraphQL desde el navegador usando Graphiql. Ahora vamos a hacer consultas GraphQL usando la interfaz de línea de comandos en Ubuntu. Desde la línea de comando, para hacer una solicitud de publicación HTTP, usaremos el módulo CURL.

ubuntu@ubuntu: ~ $ curl -x post -h "contenido -type: aplicación/json" -d '"consulta": "mensaje"' http: // localhost: 3000/graphql

Consulta API GraphQL mediante programación

Para hacer una consulta GraphQL mediante programación, usaremos el módulo 'nodo-fetch' en el nodo.js. Nodo abierto.JS en la terminal.

ubuntu@ubuntu: ~ $ node

Ahora haga la solicitud de publicación HTTP al servidor utilizando el módulo 'nodo-fetch'.

GraphQL es un lenguaje de consulta eficiente, y puede disminuir el tiempo de respuesta de una consulta realizada en la base de datos. Las llamadas estándar de API para obtener datos de la base de datos implican muchos datos inútiles en la respuesta y, por lo tanto, aumenta el tiempo de respuesta, lo que disminuye la eficiencia. La consulta realizada en las bases de datos utilizando GraphQL devuelve solo los datos útiles y, por lo tanto, disminuye el tiempo de respuesta. En este artículo, hemos implementado nuestra aplicación GraphQL en una instancia de EC2.