zodiacfireworks / culqi-challenge

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Culqi Challenge: Tokenizer Service

Requerimientos

Para la ejecución del proyecto en un entorno local se recomienda contar con las siguientes herramientas:

El proyecto fue desarrollado con Node v18.17.1, yarn v1.22.19 empleando el framework NestJS y se encuentra dockerizado por lo que no es necesario instalar node ni yarn en el entorno local.

Instalación

  1. Dirigete a tu carpeta de trabajo y clona el repositorio
git clone git@github.com:zodiacfireworks/culqi-challenge.git
  1. Ingresa a la carpeta del proyecto
cd culqi-challenge
  1. Crea el archivo .env a partir del archivo .env.template
cp .env.template .env

Lee las instrucciones del archivo .env.template para configurar las variables de entorno de forma correcta.

  1. Construye la imagen de docker
docker compose build
  1. Levanta los contenedores de docker
docker compose up
  1. Dirigete a la url http://127.0.0.1:3000 para acceder a la documentación de la API

Swagger

Ejecución de pruebas

  1. Para ejecutar las pruebas unitaras se debe emplear el siguiente comando:
docker compose exec tokenizer-service yarn run test

Tests

  1. Para ejecutar las pruebas con cobertura se debe emplear el siguiente comando:
docker compose exec tokenizer-service yarn run test:cov

Tests con cobertura

  1. Para ejecutar las pruebas de integración se debe emplear el siguiente comando:
docker compose exec tokenizer-service yarn run test:e2e

Tests de intergación

Despliegue

Para el despliegue en producción es necesario contar con kubeclt y eksctl instalados en el entorno local.

Para desplegar en un entorno de EKS se deben de seguir los siguientes pasos.

  1. Debe de construir la imagen de docker y subirla a un repositorio de ECR
export DOCKER_IMAGE="${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/tokenizer-service:latest"

docker build -f Dockerfile -t "${DOCKER_IMAGE}" .
docker push "${DOCKER_IMAGE}"
  1. Se debe de configurar el archivo .env en la capreta de deployment.
cp .env.template deployment/.env

Para este caso en particular el archivo debe de modificarse para incluir la palabra export antes de cada variable.

  1. Ingresar a la carpeta de deployment y ejecutar el script deploy.sh
cd deployment
./deploy.sh

Esto desplegará un cluster de AKS en AWS y desplegará el servicio en el cluster.

Observaciones:

Para este despliegue, si bien se completa hay dos actividades pendientes de documentación:

  1. La creación automatica de AWS InMemory DB for Redis para el almacenamiento de los tokens.
  2. La resolución de errores de permisos que han surgio en el despliegue.
  3. Para habilitar la observabilidad es necesario contar con una cuenta de New Relic.

Observabilidad

About


Languages

Language:TypeScript 94.4%Language:Shell 2.2%Language:JavaScript 2.0%Language:Dockerfile 1.5%