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
- Dirigete a tu carpeta de trabajo y clona el repositorio
git clone git@github.com:zodiacfireworks/culqi-challenge.git
- Ingresa a la carpeta del proyecto
cd culqi-challenge
- 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.
- Construye la imagen de docker
docker compose build
- Levanta los contenedores de docker
docker compose up
- Dirigete a la url http://127.0.0.1:3000 para acceder a la documentación de la API
Ejecución de pruebas
- Para ejecutar las pruebas unitaras se debe emplear el siguiente comando:
docker compose exec tokenizer-service yarn run test
- Para ejecutar las pruebas con cobertura se debe emplear el siguiente comando:
docker compose exec tokenizer-service yarn run test:cov
- Para ejecutar las pruebas de integración se debe emplear el siguiente comando:
docker compose exec tokenizer-service yarn run test:e2e
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.
- 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}"
- Se debe de configurar el archivo
.env
en la capreta dedeployment
.
cp .env.template deployment/.env
Para este caso en particular el archivo debe de modificarse para incluir la palabra export
antes de cada variable.
- Ingresar a la carpeta de
deployment
y ejecutar el scriptdeploy.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:
- La creación automatica de AWS InMemory DB for Redis para el almacenamiento de los tokens.
- La resolución de errores de permisos que han surgio en el despliegue.
- Para habilitar la observabilidad es necesario contar con una cuenta de New Relic.