Implemente su backend Node.js de forma gratuita

La implementación del backend de su aplicación la hace accesible a los usuarios previstos. Sin embargo, el viaje desde el host local a la nube puede ser difícil sin los conocimientos y las herramientas adecuados.

En este artículo, aprenderá cómo implementar su backend Node.js en varias plataformas, cada una con un nivel gratuito o créditos gratuitos que le permiten explorar su plataforma primero sin las molestias del pago.

1. Back4app Containers

Back4app es una plataforma en la nube tipo plataforma como servicio (PaaS) que le permite crear y alojar aplicaciones web de varias pilas a través de una interfaz de usuario intuitiva, una herramienta CLI dedicada y un agente de inteligencia artificial.

La plataforma ofrece varios servicios, incluida una plataforma de contenedores como servicio (CaaS) conocida como Back4app Containers.

Back4app Containers es un servicio CaaS ofrecido por Back4app que le permite administrar e implementar su aplicación web utilizando contenedores Docker.

Back4app Containers ofrece monitoreo de aplicaciones en tiempo real con métricas cruciales como CPU, RAM, ancho de banda y registros de aplicaciones para ayudarlo a identificar cuellos de botella y optimizar el rendimiento de su aplicación.

También ofrece implementaciones automáticas, que no tienen tiempo de inactividad durante las actualizaciones.

Esto se logra al garantizar que los nuevos contenedores estén listos para funcionar cuando implementa una nueva confirmación o cambia la configuración de su contenedor, sin interrupciones del servicio durante las implementaciones.

La implementación con Back4app Containers es un proceso sencillo que implica conectar el repositorio de GitHub de su aplicación (Dockerfile incluido) a la aplicación Github de Back4app, agregar sus variables ambientales y hacer clic en el botón de implementación.

¿Cómo implementar su backend Node.js en contenedores Back4app?

Para implementar su aplicación Node.js en contenedores Back4app, necesita

Una vez que haya iniciado sesión en su cuenta de Back4app y haya instalado la aplicación de GitHub en su cuenta de GitHub, otorgue a la aplicación Back4app acceso al repositorio que desea implementar.

Asegúrese de que su repositorio contenga un Dockerfile; a continuación, se muestra un Dockerfile de muestra que puede usar para su aplicación Node.js:

# Specify base image
FROM node:18-alpine

# Specify working directory
WORKDIR /app

# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy source code
COPY . .

# Expose port 8080
EXPOSE 8080

# Run the app
CMD ["npm", "start"]

A continuación, cree una nueva aplicación Back4app haciendo clic en el botón “NUEVA APLICACIÓN” en la esquina superior derecha de la pantalla.

Luego, seleccione la opción Contenedores como servicio, como se muestra en la imagen a continuación.

Create New App on Back4app

Seleccione la aplicación que desea implementar de la lista de aplicaciones a las que le otorgó acceso a la aplicación GitHub Back4app.

Select GitHub repository

Complete las variables ambientales asociadas a su aplicación y haga clic en el botón Crear aplicación.

Fill Environment Variables Back4app

Al hacer clic en el botón Crear aplicación, se iniciará el proceso de implementación y se le mostrarán registros de implementación en tiempo real para ayudarlo a monitorear el proceso de implementación.

Si se produce un error durante el proceso de implementación, puede permitir que el agente de IA de Back4app analice los errores de los registros y ofrezca posibles soluciones. También puede consultar la guía de resolución de problemas de Back4app.

Una vez que su aplicación se implemente, podrá acceder a ella con la URL activa en la esquina superior izquierda de su panel.

Back4app containers deployment

El nivel gratuito del contenedor Back4app le ofrece 0,25 CPU, 256 MB de RAM y 100 GB de transferencia, lo que es ideal para desarrollar y aprender. Para aplicaciones de producción, sería ideal actualizar a uno de los planes pagos disponibles.

2. Render

Render es una plataforma en la nube que proporciona una solución de plataforma como servicio (PaaS) para implementar aplicaciones web de varias pilas de desarrollo, incluido Node.js.

Con Render, sus servicios se amplían o reducen en función del uso promedio de CPU y/o memoria, lo que elimina la necesidad de predecir o aprovisionar en exceso servicios para atender un alto tráfico.

Render también admite implementaciones sin tiempo de inactividad, lo que garantiza que su aplicación nunca deje de funcionar, incluso cuando su compilación falla.

Esto se logra realizando controles de estado cada vez que se implementa una nueva versión de la aplicación y solo reemplaza la versión anterior si la nueva versión pasa el control de estado.

Render también incluye muchas características, algunas de las cuales incluyen entornos de vista previa, una API REST dedicada, discos persistentes, redes privadas y muchas más.

Implementar su aplicación en Render implica conectar su cuenta de GitHub/GitLab a la plataforma y configurar los detalles de implementación, incluidas las variables ambientales para su aplicación.

Cómo implementar su backend Node.js en Render

Para implementar su aplicación en Render, necesita una cuenta activa; puede registrarse de forma gratuita si no tiene una.

Inicie sesión en su cuenta y navegue hasta su panel de control. En su panel de control, haga clic en “Servicios web”.

create new web service

A continuación, se le pedirá que conecte su cuenta de GitHub/GitLab a Render o que proporcione un repositorio Git público.

Connect GitHub/GitLab on Render

Después de conectar su cuenta de GitHub y seleccionar el repositorio que desea implementar, será dirigido a un formulario de configuración, donde se le pedirá que ingrese detalles como el nombre de su aplicación, comando de compilación, variables ambientales, etc.

configure render

Complete los detalles necesarios y haga clic en el botón “Crear servicio web”. Esto iniciará el proceso de implementación y lo llevará a una pantalla donde podrá monitorear el estado de implementación y los registros de la aplicación en tiempo real.

Render Deployment Logs

Si ocurre algún error durante la implementación, puede analizarlo desde los registros de implementación y solucionarlo para lograr una implementación exitosa.

El plan gratuito de Render ofrece 512 MB de RAM y 0,1 de CPU para sus servicios web. Si su aplicación requiere más recursos, puede considerar sus planes pagos.

3. Fly

Fly es una plataforma en la nube que proporciona una red global de distribución de aplicaciones.

Le permite implementar y ejecutar aplicaciones cerca de sus usuarios en todo el mundo aprovechando una red distribuida de servidores, lo que reduce significativamente la latencia y mejora el rendimiento de su servidor.

Fly ofrece micro-VMs Linux completas conocidas como “Fly Machines”. Las máquinas Fly tienen un tiempo de arranque relativamente rápido de alrededor de 300 ms.

También puede pausar sus máquinas cuando están inactivas, lo que garantiza que solo pagas por los servicios que consumes.

Implementar su aplicación en Fly implica ejecutar algunos comandos con su herramienta CLI dedicada.

¿Cómo implementar su backend Node.js ?

Para implementar su aplicación Node.js en Fly, necesitará:

  • Una cuenta Fly, puede registrarte gratis si no tiene una.
  • La herramienta de línea de comandos flyctl instalada en su máquina local.

Si no tiene la herramienta CLI flyctl instalada en su sistema, puede instalarla usando el siguiente comando:

#macOS/Linux
curl -L https://fly.io/install.sh | sh

#windows
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"

A continuación, inicie sesión en su cuenta Fly ejecutando el siguiente comando:

fly auth login

Al ejecutar el comando anterior, se abrirá su navegador predeterminado y se le solicitará que inicie sesión en su cuenta Fly.

Después de iniciar sesión correctamente, navegue hasta el directorio de la aplicación que desea implementar y ejecute el siguiente comando:

fly launch

Cuando ejecute el comando anterior, Fly detectará automáticamente que está intentando implementar una aplicación Node.js y configurará su implementación.

Fly CLI tool

La herramienta CLI mostrará la configuración de la aplicación para que la apruebe antes de implementarla.

Si está satisfecho con las configuraciones, puede continuar respondiendo “Y” a la solicitud, o bien puede responder “N”.

Responder abrirá su navegador y lo llevará a una página donde podrá configurar su aplicación más allá de la configuración predeterminada proporcionada por Fly, como se muestra en la imagen a continuación.

Fly configuration

Sin embargo, a diferencia de otras opciones que se tratan en este artículo, Fly requiere que agregue la información de su tarjeta antes de implementar su aplicación. Aun así, no se le cobrará hasta que supere los $5 en recursos.

4. Amazon Web Services (AWS)

Amazon Web Services (AWS) es un proveedor de infraestructura como servicio (IaaS) que ofrece componentes fundamentales de infraestructura informática a través de Internet.

AWS le permite crear y administrar entornos virtualizados sin invertir ni mantener hardware físico.

AWS tiene la mayor funcionalidad entre otros proveedores de servicios en la nube, desde tecnología de infraestructura como informática y bases de datos hasta tecnología emergente como IA y ML.

También es el entorno de computación en la nube más seguro disponible, respaldado por un profundo conjunto de herramientas de seguridad en la nube, con más de 300 servicios y funciones de seguridad, cumplimiento y gobernanza, así como soporte para 143 estándares de seguridad y certificaciones de cumplimiento.

Además, AWS es una plataforma madura con un historial comprobado (17 años) de confiabilidad, seguridad y rendimiento.

Sin embargo, implementar su aplicación en AWS es más complejo que en otras plataformas como Back4app y Render.

Puede lograr esto de varias maneras; sin embargo, este tutorial cubrirá la más popular, Amazon Elastic Compute Cloud (Amazon EC2).

¿Cómo implementar su backend Node.js en AWS?

EC2 es un servicio web proporcionado por Amazon que permite alquilar servidores virtuales, conocidos como instancias, en la nube.

Para crear una instancia EC2, necesita una cuenta de AWS; puede registrarse de forma gratuita si no tiene una.

Después de iniciar sesión en su cuenta de Amazon, cree una instancia EC2 (puede omitir el último paso en el artículo vinculado anteriormente, que requiere que se conecte a su instancia EC2 mediante SSH).

Puede verificar su instancia recién creada en su panel de EC2 en “instancias”.

AWS EC2 Instance

A continuación, conéctese a su instancia EC2 mediante la consola de instancias EC2. Después de seguir los pasos de las instrucciones vinculadas anteriormente, se debería abrir una terminal web en su navegador.

AWS EC2 Console

A continuación, cambie al usuario root ejecutando el siguiente comando:

sudo su -

Al ejecutar el comando anterior, se cambiará el contexto del usuario al usuario root con privilegios elevados.

Este comando, que incluye “sudo” para capacidades de superusuario, “su” para cambio de usuario y el guion (“-”), garantiza que se carguen las variables de entorno y configuraciones del usuario root.

A continuación, instale el Administrador de versiones de nodo (NVM) ejecutando el siguiente comando:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

A continuación, active NVM en la sesión de terminal actual ejecutando el siguiente comando:

. ~/.nvm/nvm.sh

Luego, instale Node.js usando NVM ejecutando el siguiente comando:

nvm install node

A continuación, instale Git ejecutando el siguiente comando:

sudo yum update
sudo yum install git

Puede confirmar que Node.js y Git se instalaron correctamente en su instancia EC2 ejecutando el siguiente comando:

node -v && git -v

Si la instalación fue exitosa, debería ver los números de versión impresos en su consola, como se muestra en la imagen a continuación.

Git and Node.js successful installation

A continuación, conecte su clave SSH de GitHub a su instancia EC2. Una vez que haya configurado y agregado correctamente su clave SSH, ejecute el siguiente comando para clonar su repositorio en su instancia EC2:

git clone <YOUR_APPLICATION_URL>

El comando anterior clonará su aplicación en su instancia EC2.

AWS: add github ssh

Ingrese al directorio de su aplicación en su EC2 y ejecute el siguiente comando para instalar todas las dependencias de su proyecto.

npm install

A continuación, agregue sus variables de entorno ejecutando el siguiente comando:

nano .env

El comando anterior creará y abrirá un archivo .env vacío, copiará sus variables ambientales, las pegará en el archivo y presionará control + X, luego para guardar y cerrar el archivo.

Por último, ejecute el script de inicio de su aplicación, que normalmente debería ser el siguiente comando:

npm start

Al ejecutar el comando anterior, se debería iniciar la aplicación. Puede acceder a la aplicación implementada mediante su dirección DNS pública, que puede encontrar en el panel de control de su instancia.

El nivel gratuito para instancias EC2 en AWS proporciona 750 horas mensuales para instancias t2.micro o t3.micro que ejecutan Linux, RHEL o SLES, según la región.

De manera similar, para las instancias de Windows, ofrece 750 horas por mes para instancias t2.micro o t3.micro según la región.

Además, independientemente del tipo de instancia, incluye 750 horas por mes para una dirección IPv4 pública.

Sin embargo, el nivel gratuito solo está disponible para nuevos clientes de AWS durante los 12 meses posteriores a la fecha de registro en AWS.

5. DigitalOcean

DigitalOcean es una plataforma de infraestructura como servicio (IaaS) que ofrece acceso a las máquinas virtuales subyacentes que respaldan sus aplicaciones, lo que le permite configurar su espacio en disco, asignar memoria y configurar su red.

DigitalOcean ofrece varios productos de computación en la nube, como droplets, que son máquinas virtuales Linux. Además de droplets, ofrecen un servicio de Kubernetes administrado y funciones sin servidor.

DigitalOcean también proporciona seguridad de red con firewalls en la nube, balanceadores de carga, una nube privada virtual, IP flotantes, DNS, IPv6 y protección DDoS.

Implementar su aplicación Node.js en DigitalOcean es un proceso relativamente simple en comparación con otras opciones de IaaS.

Implica crear un Droplet, configurarlo, configurar su máquina virtual Linux y un proxy inverso para adaptarlo a sus necesidades.

¿Cómo implementar su backend Node.js en un droplet de DigitalOcean?

Necesita una cuenta DigitalOcean para implementar su aplicación Node.js en la plataforma; puede registrarse de forma gratuita si no tiene una.

A continuación, inicie sesión y cree un nuevo proyecto (o utilice un proyecto existente).

Create new project DigitalOcean

En el panel de su proyecto, haga clic en el menú desplegable “Crear” en la esquina superior derecha de su pantalla y seleccione “Droplets” para crear un nuevo droplet.

Create new droplet

A continuación, seleccione la región de implementación más cercana a usted para su droplet.

A continuación, seleccione el sistema operativo “Ubuntu” como su imagen y “Básico” como su tipo de droplet.

A continuación, seleccione sus opciones de CPU preferidas.

Luego, seleccione “contraseña” como método de autenticación. También puede elegir SSH como método de autenticación.

Por último, seleccione “1” como número de droplet y asígnele un nombre de host.

Después de completar los datos necesarios, haga clic en el botón “Crear Droplet”. Esto lo redireccionará a su panel de control.

En el panel de control, seleccione el droplet que acaba de crear e inicie su consola de droplets, como se muestra en la imagen a continuación.

Launch droplet console

Al iniciar la consola de droplets se abrirá una terminal web de Ubuntu en su navegador, como se muestra en la imagen a continuación.

DigitalOcean Droplet Console

A continuación, instale el script de instalación de Node.js ejecutando el siguiente comando:

curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

Luego, instale Node.js ejecutando el siguiente comando:

apt-get install nodejs -y

A continuación, clone su repositorio de GitHub usando el siguiente comando:

git clone <YOUR_GITHUB_REPOSITORY_LINK>

Instale las dependencias de su proyecto ejecutando el siguiente comando:

npm install

A continuación, agregue sus variables de entorno ejecutando el siguiente comando:

nano .env

El comando anterior creará y abrirá un archivo .env vacío, copiará sus variables ambientales, las pegará en el archivo y presionará control + X, luego para guardar y cerrar el archivo.

A continuación, instale PM2 para mantener su servidor funcionando en segundo plano:

sudo npm i pm2 -g

Luego, inicie su servidor con PM2 ejecutando el siguiente comando:

pm2 start main.js

A continuación, ejecute el siguiente comando para garantizar que su servidor se reinicie cada vez que se reinicie la aplicación:

pm2 startup ubuntu

Ahora su aplicación se está ejecutando y escuchando su droplet (localhost). Para que esté disponible públicamente, deberá configurar Nginx como un proxy inverso.

Ejecute el siguiente comando para instalar Nginx:

sudo apt install nginx

Antes de usar Nginx, debe ajustar el ufw (Uncomplicated Firewall) de Ubuntu para proteger su aplicación y garantizar que solo el tráfico autorizado pueda llegar a su servidor web.Ejecute el siguiente comando para habilitar ufw:

ufw enable

Luego, ejecute el siguiente comando para permitir SSH, HTTP y HTTPS:

ufw allow ssh && ufw allow http && ufw allow https

El comando anterior habilita el firewall (UFW) en su servidor Ubuntu para permitir conexiones entrantes en los puertos 22 (para SSH), 80 (para HTTP) y 443 (para HTTPS).

A continuación, ejecute el siguiente comando para abrir el archivo de configuración predeterminado de Nginx:

sudo nano /etc/nginx/sites-available/default

Dentro del archivo de configuración, busque el objeto de ubicación y reemplácelo con el bloque de código a continuación:

location / {
    try_files $uri $uri/ =404;
    proxy_pass http://localhost:5050;#Replace with the port your app is running on
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

Nota: Para proxy_pass, puede reemplazar el valor con cualquier puerto en el que se ejecute su aplicación.

Cierre y guarde el archivo (control X, Y, ENTER). Al editar el archivo de configuración con el bloque de código anterior, se configura el proxy inverso de modo que, cuando realice solicitudes al puerto 80 (para HTTP), la aplicación que se ejecuta en el puerto 5050 (o su puerto predeterminado) manejará las solicitudes.

A continuación, ejecute el siguiente comando para probar si su archivo de configuración de Nginx está configurado correctamente.

sudo nginx -t

Si su archivo de configuración se configuró correctamente, debería obtener la respuesta en la imagen a continuación.

Nginx Test

Por último, reinicie Nginx ejecutando el siguiente comando para asegurarse de que los cambios en el archivo de configuración surtan efecto:

sudo service nginx restart

Ahora puede realizar solicitudes a su aplicación usando la dirección IPv4 pública de su droplet.

El nivel gratuito de DigitalOcean ofrece $200 en créditos para que los nuevos usuarios accedan a todos sus servicios disponibles.

Comparación de opciones de implementación

En este artículo se analizaron cinco opciones de implementación para su aplicación Node.js. A continuación, se incluye una tabla comparativa de todas las plataformas incluidas.

PlataformaCategoríaHerramientas de desarrolloRecursos de nivel gratuitoInformación de pago
Back4app ContainersPaaSDocker, GitHub App, Back4app AI Agent.– 0,25 CPU 
– 256 MB de RAM – 100 GB de transferencia
No requerido
RenderPaaSGitHub/GitLab App, Public Repository Link– 512 MB de RAM 
– 0,1 CPU
No requerido
FlyPaaSFly CLI toolRecursos por valor de $5/usoRequerido
Amazon Web Services (AWS)IaaSAWS EC2 Instance– 750 horas por mes de instancias t2.micro o t3.micro de Linux, RHEL o SLES. 
– 750 horas por mes de instancia t2.micro o t3.micro de Windows, según la región. – 750 horas por mes de dirección IPv4 pública.
Requerido
DigitalOceanIaaSDigital Ocean Droplet$200 créditos gratis para nuevos usuarios.Requerido

En general, las plataformas PaaS como Back4app, Render y Fly son las más adecuadas para aplicaciones que requieren escalabilidad, flexibilidad y ciclos rápidos de desarrollo e implementación.

Por otro lado, las plataformas IaaS como DigitalOcean y AWS son las más adecuadas para aplicaciones que requieren un mayor control sobre la infraestructura subyacente, configuraciones personalizadas y escalabilidad sin la necesidad de administrar hardware físico.

Conclusión

En este artículo, exploró y aprendió cómo implementar una aplicación Node.js utilizando contenedores Back4app, Render, Fly, AWS y DigitalOcean.

Cada una de las opciones analizadas tiene sus ventajas y desventajas. En el caso de las plataformas PaaS, el proceso de implementación es más sencillo.

Sin embargo, se pierde la mayor parte del control de la infraestructura subyacente. En las plataformas IaaS, el proceso de implementación es complicado; sin embargo, se tiene el control total de la infraestructura subyacente sin necesidad de contar con servidores físicos.

Cualquiera sea la opción que elija, necesitará comprar y conectar un nombre de dominio personalizado para que sea realmente accesible para sus usuarios.

Si le gustó este artículo, aprenda también Cómo crear una aplicación web con una base de datos PostgresSQL.


Leave a reply

Your email address will not be published.