IBM Cloud Docs
Aplicación web moderna utilizando la pila MEAN

Aplicación web moderna utilizando la pila MEAN

Esta guía de aprendizaje puede incurrir en costes. Utilice Estimador de costes para generar una estimación del coste basada en el uso previsto.

Esta guía de aprendizaje le guía en el proceso de creación de una aplicación web utilizando la popular pila MEAN. Se compone de una infraestructura MongoDB, una infraestructura web Express, una infraestructura frontal A y un entorno de ejecución de Node.js. Aprenderá a ejecutar una aplicación de ejemplo MEAN localmente, crear y utilizar una base de datos como servicio DBasS ) gestionada, desplegar la aplicación en IBM Cloud y escalar los recursos de tiempo de ejecución y de base de datos.

Objetivos

  • Crea y ejecuta localmente una aplicación Node.js de ejemplo.
  • Cree una instancia de Databases for MongoDB gestionada.
  • Despliega la aplicación Node.js en la nube utilizando IBM Cloud® Code Engine.
  • Escale los recursos de memoria y CPU de ejecución.
  • Escale la memoria de base de datos y los recursos de disco.

de la arquitectura*Esquema de la arquitectura del

  1. El usuario accede a la aplicación utilizando un navegador web.
  2. La aplicación Node.js que se ejecuta en Code Engine accede a la base de datos Databases for MongoDB para captar datos.

Antes de empezar

Esta guía de aprendizaje requiere:

  • CLI de IBM Cloud: esta herramienta de CLI le permite interactuar con IBM Cloud.
    • code-engine/ce plugin (code-engine/ce) para acceso de CLI a recursos de Code Engine.
    • Opcional plugin de Container Registry (container-registry) para gestionar imágenes de contenedor.
  • git para clonar el repositorio de código fuente.
  • Opcional, si quieres probar a ejecutar la aplicación localmente, necesitarás instalar Node.js.

Encontrará instrucciones para descargar e instalar estas herramientas para su entorno operativo en la guía de Iniciación a las guías de aprendizaje.

Para evitar la instalación de estas herramientas puede utilizar la página Cloud Shell desde la consola IBM Cloud.

Esta guía de aprendizaje muestra el uso de la línea de mandatos para crear la base de datos, el proyecto y la aplicación IBM Cloud® Code Engine. Hay instrucciones en el repositorioGitHub complementario para suministrar con Terraform localmente en la estación de trabajo o incluso un suministro más sencillo con Schematics en solo unas pulsaciones.

Crear una instancia de la base de datos MongoDB en la nube

En esta sección, creará una instancia de Databases for MongoDB en la nube. Databases for MongoDB es un base de datos como servicio que es fácil de configurar y proporciona copias de seguridad y escalado incorporados. Puede encontrar muchos tipos diferentes de bases de datos en el catálogo de IBM Cloud. Para crear una instancia de Databases for MongoDB, siga los pasos siguientes.

  1. Si no está conectado, utilice ibmcloud login o ibmcloud login --sso para conectarse de forma interactiva. Elija como destino su región y grupo de recursos de IBM Cloud preferidos. En el ejemplo siguiente utilizaremos la región ca-tor (Toronto) y el grupo de recursos default.

    ibmcloud target -r ca-tor -g default
    

    Puede encontrar más mandatos de CLI en el tema Mandatos generales de IBM Cloud CLI (ibmcloud) de la documentación.

  2. Cree una instancia de Databases for MongoDB a través de la línea de mandatos o utilice la interfaz de usuario de la consola. El nombre del servicio debe ser mean-stack-mongodb ya que la aplicación utilizada en este tutorial está configurada para buscar el servicio por este nombre. Para <region>, puede elegir una región que esté más cerca de usted, sin embargo, utilizaremos ca-tor en esta guía de aprendizaje.

    ibmcloud resource service-instance-create mean-stack-mongodb databases-for-mongodb standard ca-tor
    
  3. Espere a que la instancia esté preparada. Puede comprobar el estado del suministro con el mandato siguiente:

    ibmcloud resource service-instance mean-stack-mongodb
    
  4. Una vez que haya verificado que el estado del servicio ha cambiado para "creado correctamente", puede continuar para crear una clave de servicio.

    ibmcloud resource service-key-create mean-stack-mongodb-key --instance-name mean-stack-mongodb
    

Ejecute la app MEAN localmente

En esta sección, clonará un código de ejemplo de MEAN y ejecutará la aplicación localmente para probar la conexión con la base de datos MongoDB que se ejecuta en IBM Cloud.

  1. Clona el código de ejemplo de MEAN.

    git clone https://github.com/IBM-Cloud/nodejs-MEAN-stack
    cd nodejs-MEAN-stack
    
  2. Copie el archivo .env.example en .env.

    cp .env.example .env
    
  3. En el archivo .env, añada su propio SESSION_SECRET. Para MONGODB_URL y CERTIFICATE_BASE64, ejecute el mandato siguiente:

    ibmcloud resource service-key mean-stack-mongodb-key --output json
    

    Puede encontrar el valor necesario para MONGODB_URL en credentials -> connection -> mongodb -> composed y el valor para CERTIFICATE_BASE64 en credentials -> connection -> mongodb -> certificate -> certificate_base64 en la salida JSON devuelta. Asegúrese de que los valores añadidos a .env no incluyan comillas ni espacios.

  4. Opcional: instale los paquetes necesarios.

    npm install
    
  5. Opcional - Ejecute la aplicación localmente. Acceda a la aplicación utilizando el URL proporcionado en la salida, cree un nuevo usuario e inicie sesión.

    node server.js
    

Utilizando el shell de nube, es posible abrir la aplicación pulsando el icono de ojo en la parte superior derecha y pulsando la vista previa en el puerto 8080.

Despliegue de la app en la nube

IBM Cloud® Code Engine es una plataforma sin servidor totalmente gestionada que ejecuta sus cargas de trabajo en contenedores, incluidas aplicaciones web, microservicios, funciones basadas en eventos o trabajos por lotes. En esta sección, creará un proyecto Code Engine y desplegará la aplicación Node.js contenerizada en el proyecto. En la sección anterior, el código fuente lee el .env que tienes localmente para obtener la URL y las credenciales del servicio MongoDB. Creará un secreto en el proyecto para contener estas mismas claves/valores que la aplicación leerá cuando se ejecute.

Ya hemos construido una imagen de contenedor para la aplicación y la hemos enviado al IBM Cloud Container Registry público. Utilizará esta imagen de contenedor preconstruida para desplegar la aplicación.

  1. Cree un proyecto en IBM Cloud Code Engine.

    ibmcloud code-engine project create --name mean-stack
    
  2. Cree un secreto en el proyecto que contiene las claves/valores del archivo .env que ha utilizado anteriormente para ejecutar la aplicación localmente, este secreto lo consumirá la aplicación que se ejecuta en la nube. Para obtener más información sobre los secretos, consulte Trabajar con secretos.

    ibmcloud code-engine secret create --name mean-stack-secrets --from-env-file .env
    
  3. Cree la aplicación basada en la imagen de contenedor público que se basa en el mismo código fuente descargado del repositorio de https://github.com/IBM-Cloud/nodejs-MEAN-stack. Si está interesado en los pasos utilizados para crear esta imagen, puede revisar create-container-image.md.

    ibmcloud code-engine application create --name mean-stack-application --image icr.io/solution-tutorials/tutorial-mean-stack --env-from-secret mean-stack-secrets
    
  4. Una vez que el código ha sido enviado, usted debe ser capaz de ver la aplicación en su navegador. Se ha generado un nombre de host que puede tener un aspecto parecido a: https://mean-stack.<CE_SUBDOMAIN>.ca-tor.codeengine.appdomain.cloud/. CE_SUBDOMAIN es una variable que se ha inyectado en su proyecto y su valor se ha determinado durante la creación del proyecto. Puede obtener el URL de la aplicación desde el panel de control o línea de mandatos de la consola. Una vez que accedas a la aplicación, debería tener este aspecto:

    Live App
    Live App

Escalado de los recursos de cálculo en Code Engine

Code Engine supervisa el número de solicitudes en el sistema y escala las instancias de la aplicación hacia arriba y abajo para poder satisfacer la carga de las solicitudes entrantes, incluidas las conexiones HTTP a la aplicación. Si el servicio necesita recursos de cálculo adicionales o desea reducir la cantidad de recursos de cálculo asignados, puede realizar estos cambios en la página de aplicación específica.

  1. Vaya a la página de proyectos Code Engine.

  2. Pulse el proyecto mean-stack creado anteriormente.

  3. En Resumen, pulse Aplicaciones.

  4. Haga clic en mean-stack-application, que se ha creado anteriormente.

  5. Pulse Configuración y luego Ejecución para ver la configuración actual.

    Recursos de escala
    Recursos de escala

  6. Pulse Editar y crear una nueva revisión para ajustar no sólo la CPU y memoria, el Número mínimo/máximo de instancias, así como la Simultaneidad.

  7. Pulse Guardar y crear para desencadenar los cambios. Indicará que la aplicación es Deploying y Ready cuando se completa.

Escalado de recursos de base de datos en Databases for MongoDB

Si el servicio necesita más almacenamiento, o si desea reducir la cantidad de almacenamiento asignado a su servicio, puede hacerlo mediante el escalado de recursos.

  1. Acceda a la instancia del servicio Databases for MongoDB desde la Lista de recursos en Bases de datos.
  2. Pulse el panel Recursos.
    Recursos de escala
    Recursos de escala
  3. Ajuste el graduador para aumentar o reducir el almacenamiento asignado al servicio de la base de datos Databases for MongoDB.
  4. Pulse Despliegue de escalado para activar el escalado y volver a la visión general del panel de control. Indicará que el cambio de escala está en curso.
  5. También puede configurar reglas de escalado automático para aumentar automáticamente los recursos de base de datos a medida que aumenta su uso.

Eliminación de recursos

Para eliminar un recurso, siga estos pasos:

  1. Con el siguiente comando, elimine el proyecto para borrar todos sus componentes (aplicaciones, trabajos, etc.).
    ibmcloud code-engine project delete --name mean-stack
    
  2. Suprimir la clave de servicio de Databases for MongoDB.
    ibmcloud resource service-key-delete mean-stack-mongodb-key
    
  3. Suprima el servicio de Databases for MongoDB.
    ibmcloud resource service-instance-delete mean-stack-mongodb
    

En función del recurso, es posible que no se suprima de inmediato sino que se retenga (durante 7 días de forma predeterminada). Puede reclamar el recurso suprimiéndolo de forma permanente o lo puede restaurar dentro del periodo de retención. Consulte este documento sobre cómo utilizar una reclamación de recurso.

Contenido relacionado