Prueba de MarkDown

Claro Colombia logo

Este proyecto de software ha sido cuidadosamente construido para apoyar la innovación tecnológica y la excelencia operativa en Claro Colombia, integrando soluciones robustas y escalables que cumplen con los más altos estándares de calidad.

Tabla de Contenidos

Descripción

Microservicio en NestJs que realiza un Crud sobre una base de datos en MongoDb

Arquitectura

Diagrama general de los componentes de arquitectura relacionados con el microservicio.

Diagrama de Arquitectura del microservicio

Tecnología de Implementación

El microservicio ha sido desarrollado con el framework NestJs basado en TypeScript, aplicando los conceptos de la Arquitectura Hexágonal y Código limpio (clean code) para conseguir un producto de software de alta calidad, escalable y mantenible.

💡 La documentación oficial del framework se pude encontrar aquí:

Requisitos

Lista de los requisitos previos que deben estar instalados en el sistema para ejecutar el microservicio.

📢 Nota:

MongoDB es opcional si ya tiene conectividad desde su sistema local hasta la base de datos aprovisionada en la infraestructura de servidores de Claro Colombia.

📢 Nota:

Una instalación en su sistema local de MongoDB también es válida.

📢 Nota

Los detalles los encontrará en la sección de Configuración.

Instalación

Desde la consola o terminal de su sistema local, clonar el repositorio en algun directorio.

$ git clone https://github.com/TrulyDigital/nestjs-mongodb-template-claro.git

Ingresar al proyecto.

$ cd nestjs-mongodb-template-claro

Instalar dependencias

$ npm install

Configuración

Descripción de los archivos de configuración o variables de entorno que necesita el microservicio para el correcto funcinamiento.

1. Contexto de ejecución

Sin importar si el microservicio se esta ejecutando en su sistema local o en el cluster de Opensfhit, el contexto de ejecución permite identificar si se esta realizando una conexión real a la base de datos MongoDB aprovisionada en la infraestructura (algún servidor) de Claro Colombia.

En este escenario, el contexto PROD indica si el microservicio en ejecución (local o en el cluster de Opensfhit) se esta conectando a la base de datos real aprovisionada en la infraestructura de Claro Colombia, en alguno de sus ambientes, Desarrollo, Calidad (QA) o Producción.

Y el contexto LOCAL indica si el microservicio en ejecución, que para este caso si y solo si debe estar en su sistema local, se esta conectando a la base de datos que igualmente esta aprovisionada, en su sistema local.

Esta última configuración esta diseñada para el entorno de desarrollo en su computadora.

💡 Crear el archivo de variables de entorno en la siguiente ruta.

./src/share/config/.env.context

💡 Configuración del contexto de ejecución.

  • Contexto PROD

Aplicar la siguiente configuración.

APP_CONTEXT='PROD'
  • Contexto LOCAL

Aplicar la siguiente configuración.

APP_CONTEXT='LOCAL'

2. Configuración de variables propias del Microservicio.

Todas las variables parametrizables del microservicio que se utilizan en la implementación del proyecto, como son los nombres de las diferentes operaciones, apuntamientos a las bases de datos, y demás valores configurables que se necesiten para su correcto funcionamiento.

💡 Si el contexto establecido en la sección Configuración es PROD.

  • Crear el archivo de variables de entorno en la siguiente ruta.
./src/share/config/.env.prod
  • Configuración de las variables de entorno.

Asignar el nombre de la operación que expone el microservicio de acuerdo al HLS y el string de conexión a la base de datos real aprovisionada en la infraestructura de servidores de Claro Colombia, en alguno de sus ambientes, desarrollo, calidad (QA) o producción.

APP_OPERATION_NAME_1=ConsultCars
APP_MONGO_URI='mongodb://string_de_conexión_servidor_real...'

💡 Si el contexto establecido en la sección Configuración es LOCAL.

  • Crear el archivo de variables de entorno en la siguiente ruta.
./src/share/config/.env.local
  • Configuración de las variables de entorno.

Asignar el nombre de la operación que expone el microservicio de acuerdo al HLS y el string de conexión a la base de datos real aprovisionada en su sistema local.

APP_OPERATION_NAME_1=ConsultCars
APP_MONGO_URI='mongodb://string_de_conexión_servidor_local...'

3. Configuración global

Variables de entorno globales que identifican el microservicio y son utilizadas adicionalmente para el ajuste de las librerias APM y SonarQube.

💡 Crear el archivo en la raiz del proyecto.

.env

💡 Aplicar la siguiente configuración.

APPLICATION_NAME='nestjs-mongodb-template-claro'
APM_ACTIVE='true'
APM_STACK_TRACE_LIMIT='500'
APM_ENVIRONMENT='CMPPROD'
APM_HOST='http://100.69.7.130:8200/'
APM_SECRET_TOKEN=''

Ejecución

Comandos para iniciar el microservicio en su sistema local.

# Modo desarrollo
$ npm run start

# Modo desarrollo observando cambios en tiempo real
$ npm run start:dev

# Modo producción
$ npm run start:prod

:warning: Nota:

Se necesita conectividad desde su sistema local al servidor real de base de datos (Contexto PROD).

:warning: Nota:

Se puede configurar en las variables de entorno el apuntamiento a un servidor local (Contexto LOCAL).

Documentación de la API

Link de la documentación Swagger.

:warning: Nota:

Para el Swagger de producción, el microservicio ya debe estar desplegado en el NameSpace de producción.

Pruebas Unitarias

El microservicio configura en memoria un Mock del servidor MongoDB, lo que permite ejecutar los test en modo fuera de línea (off-line), es decir, sin conexión real a ningún servidor de base de datos sea local o aprovisionado por Claro Colombia.

El siguiente comando además de la ejecución de las pruebas unitarias, realiza el cálculo del porcentaje de cobertura del código fuente para posteriormente ser analizado por SonarQube.

$ npm run test

Enviar el reporte de ejecución de prueas unitarias y cobertura del código fuente al servidor de SonarQube.

$ npm run sonar-claro

Despliegue Local

Construir la imágen docker con el nombre del microservicio tal como esta en el HLS.

$ docker build -t msserviceconsult .

Ejecutar el contenedor docker por el puerto HTTP/8080

$ docker run -d -p 8080:8080 msserviceconsult

Planes de Configuración

En la carpeta ./deploy se encuentran los YAML para el despliegue del microservicio en los diferentes NameSpace del cluster de Openshift.

❗ Licencia

Este software es propiedad de Claro Empresas Colombia y está destinado para uso interno únicamente. No está permitido copiar, distribuir, modificar o utilizar este software fuera de los propósitos autorizados por Claro Empresas.

Para cualquier duda o solicitud de uso, por favor contactar con el departamento legal de Claro Empresas.

Mostramos aqui