workshop-mean-serverless

Repositório responsável pela realização do workshop de MEAN & Serverless

Stars
116

Workshop - MEAN & Serverless

Repositorio responsable de los workshops MEAN y Serverless.

¿Qué voy a aprender? 📙

¡Durante este workshop aprenderá cómo migrar de manera simple, rápida y dinámica una aplicación MEAN a una arquitectura Serverless usando Azure Functions!

Los datos del Empleado consisten en:

Classe: Funcionario (Empleado)

  • idFuncionario: (number - guid generado por el MongoDb)
  • nomeFuncionario: string
  • cargo: string
  • numeroIdentificador: number

Recursos Utilizados 🚀

Azure for Students ⭐️

Si es estudiante en cualquier colegio o universidad, puede crear su cuenta de Azure for Students Azure for Students. Esta cuenta le dará el beneficio de tener un crédito de $ 100 para usar los servicios de forma gratuita, sin tener una tarjeta de crédito. Para activar esta cuenta, haga clic: AQUÍ

Requisitos Necesarios 📌

Para la realización de los workshops, es necesario tener nociones de: HTML, CSS y JavaScript. Y también nociones de Azure Functions. Abajo hay cursos gratuitos sobre:

Ejecutando la Aplicación Localmente ❗️

Ejecutando la Aplicación en el Front-End

  1. Instalar paquetes con comando: (dentro de la carpeta front)
> npm install
  1. Luego ejecute el siguiente comando para ejecutar la aplicación. (dentro de la carpeta front):
> ng serve -o

Luego simplemente abra el navegador en localhost: 4200

Ejecutando la Aplicación en el Back-End

Antes de comenzar los pasos a continuación, es muy importante que ahora ejecute MongoDb localmente.

  1. Instalar paquetes con comando: (dentro de la carpeta api)
> npm install
  1. Luego ejecute el siguiente comando para ejecutar la aplicación. (dentro de la carpeta api):
> nodemon

Luego simplemente abra el Postman en localhost: 8000 y pruebe las requisiciones

Y vòilá! ❤️ ❤️

Consumir las API's en Azure Functions(Mongo x CosmosDb) ⚡️

Para facilitar el desarrollo y la agilidad del proyecto, ya creé dos API que consumen este proyecto en Front End. Para esto, siga los enlaces de apis:

API a través de MongoDb - Azure Functions

Esta API persiste localmente en MongoDb a través de Azure Functions.

Para ejecutar, solo siga estos pasos:

  1. Descargue el proyecto a continuación:
  1. Instale las dependencias requeridas con el comando:
> npm i
  1. Crea un archivo llamado: local.settings.json e incluya el bloque de código:
{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "AzureWebJobsStorage": "{AzureWebJobsStorage}"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  }
}
  1. Ejecute el comando:
> func host start

Y enumerará todos los endpoints creados y necesarios para persistir junto con nuestro Front-End.

  1. Ahora abre el proyecto front y vaya: src -> app -> funcionario.service.ts

  2. Al ingresar el archivo funcionario.service.ts, solo cambia la uri a: http://localhost:7071/api

  3. Ejecute el proyecto angular con el comando:

> ng server -o

Y vòilá! Sólo empezar a persistir!!

API a través de CosmosDb - Azure Functions

  1. Descargue el proyecto:
  1. Instale las dependencias requeridas con el comando:
> npm i
  1. Crea un archivo llamado: local.settings.json e incluya el bloque de código:
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "CosmosDbUrl": "<cosmos-db-url>",
    "CosmosDBUser": "crud-serverless-wavy",
    "CosmosDBPassword": "<cosmos-db-password>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  }
}
  1. Ejecute el comando:
> func host start

Y enumerará todos los endpoints creados y necesarios para persistir junto con nuestro Front-End.

  1. Ahora abre el proyecto front y vaya: src -> app -> funcionario.service.ts

  2. Al ingresar el archivo funcionario.service.ts, solo cambia la uri a: http://localhost:7071/api

  3. Ejecute el proyecto angular con el comando:

> ng server -o

Y vòilá! Sólo empezar a persistir!!

Me gustaría migrar los datos persistentes localmente a Cosmos Db ... ¿Cómo lo hago?

El proceso de migración de datos persistentes localmente de MongoDb a CosmosDb es bastante simple. Sin embargo, le recomiendo que para facilitar el proceso, descargue el MongodB Compass GUI y tener una cuenta del Conta - Azure. Teniendo estas dos cuentas, podemos continuar.

  1. Paso: abra el portal de Azure y cree un grupo de recursos. Si ya tienes un grupo de recursos, ¡genial!
> meanServerlessResourceGroup
  1. Paso: ahora creemos la base de datos Azure CosmosDb. Para hacerlo, abra su bash en Azure Portal y ejecute los siguientes comandos:
> crud--serverless-<inclua-seu-nome>

> az cosmosdb create --name crud--serverless-<inclua-seu-nome> --resource group meanServerlessResourceGroup --kind MongoDB
  1. Abra el recurso recién creado y capture las cadenas de conexión (clave principal) creadas en el paso anterior.

  2. Paso: ahora importemos los datos localmente de MongoDb a CosmosDb. Simplemente abra MongoDb Compass y haga clic en exportar archivo y guárdelo en la ubicación donde lo desee.

  3. Paso: Ahora ejecutemos el siguiente comando. Este comando será responsable de migrar el archivo creado en el paso anterior para cargarlo en CosmosDb.

> mongoimport.exe --host crud--serverless-<inclua-seu-nome>.documents.azure.com:10255 -u crud--serverless-<inclua-seu-nome> -p <primary-key-criada-cosmosdb> --ssl --sslAllowInvalidCertificates --db crud--serverless-<inclua-seu-nome> --collection funcionarios --file funcionarios.json

Y listo! Cuando se abre el Portal de Azure y acceder al recurso Azure CosmosDb, verá que sus datos locales, se han migrado con éxito en Azure CosmosDb!

Implementando la aplicación en Azure ☁️

Para implementar la aplicación en la nube debemos seguir los pasos: (todos los pasos deben usar el Azure CLI)

Pero antes, debemos ejecutar el comando adentro de la carpeta front:

> ng build

Vas a generar una otra carpeta llamada dist. Y es justo ella que iremos necesitar para implementar en la nube! ;)

  1. Hacer la configuración de un usuario de implementación con el comando (todos los comandos deben ejecutarse usando Azure cli)
> az webapp up -n <nombre-de-la-app>

Y listo! Podemos abrir nuestra aplicación! :)

Enlaces y Recursos Importantes ⭐️

Durante el workshop, hablé sobre muchas documentaciones importantes, enlaces y recursos que pueden ayudarlo a conocer más sobre Azure Functions y Azure.

Tengo dudas ... ¿Qué hago? ❓

Si tiene preguntas sobre los códigos de proyecto relacionados con los workshops, no dude en abrir un ISSUE AQUI. ¡Tan pronto como sea posible, responderé cualquier pregunta que pueda tener!