Saltar al contenido principal

Challenge 02

Desafío: Despliegue de Aplicaciones con PM2

La empresa ZERO Technology ha lanzado un nuevo proyecto que requiere la implementación de múltiples aplicaciones en un servidor. El objetivo es desplegar tanto el frontend como varios servicios backend utilizando PM2 para gestionar los procesos. Este desafío está diseñado para evaluar tus habilidades en el despliegue de aplicaciones, la configuración del entorno y la automatización.

Objetivos:

  • Proponer y llevar a cabo una solución general a la problemática
  • Simular el caso real del ciclo de vida de una aplicación
  • La automatización es la clave

Servicios a Desplegar:

Frontend

  • Descripción: Aplicación web realizada en Express.
  • Puerto: 3000

Backend Products

  • Descripción: Servicio backend para productos realizado en Express.
  • Puerto: 3001

Backend Shopping-Cart

  • Descripción: Servicio backend para carrito de compras realizado en Express.
  • Puerto: 3002

Backend Merchandise

  • Descripción: Servicio backend para mercancías realizado en Express.
  • Puerto: 3003

Instrucciones del Desafío:

  1. Preparación del Servidor:

    • Asegúrate de tener acceso a un servidor Ubuntu (o la distribución de tu elección).
    • Actualiza el sistema y prepara el servidor para la instalación de las herramientas necesarias.
  2. Instalación de Dependencias:

    • Instala Node.js y npm si no están instalados
    • Version Node 18
    • Instala PM2 globalmente:
      sudo npm install -g pm2
  3. Configuración de Aplicaciones:

    • Clona el repositorio
     git clone -b ecommerce-ms https://github.com/roxsross/devops-static-web.git
    • Contenido de Repositorio:
     ├── frontend
    │ ├── index.html
    │ ├── package-lock.json
    │ ├── package.json
    │ └── server.js
    ├── merchandise
    │ ├── package-lock.json
    │ ├── package.json
    │ └── server.js
    ├── products
    │ ├── package-lock.json
    │ ├── package.json
    │ └── server.js
    └── shopping-cart
    ├── package-lock.json
    ├── package.json
    └── server.js
    • Navega al directorio de cada aplicación y realiza la instalación de dependencias:
      npm install
  4. Despliegue de Aplicaciones:

    • Utiliza PM2 para iniciar cada aplicación
    • Verifica que las aplicaciones estén corriendo:
      pm2 list
  5. Configuración del Servidor Web (opcional):

    • Si decides configurar un servidor web como Nginx para gestionar el tráfico, instala y configura Nginx para redirigir el tráfico a las aplicaciones:
      sudo apt install nginx
    • Configura los bloques de servidor en Nginx para redirigir el tráfico a los puertos de las aplicaciones.
  6. Automatización y Monitoreo:

    • Configura PM2 para reiniciar las aplicaciones automáticamente al reiniciar el servidor:
      pm2 startup
    • Guarda el estado actual de las aplicaciones para que se restauren al reiniciar el servidor:
      pm2 save
    • Considera configurar herramientas de monitoreo para verificar el estado y el rendimiento de las aplicaciones.
  7. Pruebas y Validación:

    • Verifica que todas las aplicaciones estén funcionando correctamente accediendo a los puertos especificados desde un navegador web.
    • Realiza pruebas de funcionalidad para asegurar que los servicios interactúan correctamente.

Resultados Esperados