GithubHelp home page GithubHelp logo

guillelpnz / packetservice Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xdavid1999/packetservice

0.0 1.0 0.0 1.1 MB

Repositorio para la realización del proyecto de Infraestructura virtual

License: GNU General Public License v3.0

JavaScript 96.87% Dockerfile 3.13%

packetservice's Introduction

PacketService

Enlaces a ubicaciones relevantes para el proyecto

  • Enlace a la configuración del contenedor, Dockerfile y justificación de la imagen base.
  • Enlace al contenedor en Dockerhub y documentación del proceso.
  • Enlace para acceder al contenedor en GitHub Container Registry. Con la ayuda de la guía oficial siguiendo los pasos detallados en el archivo para conseguirlo.
  • Para acceder a la nueva clase creada.
  • Para acceder a los nuevos métodos creados en la clase principal.
  • Para acceder a los nuevos test realizados al nuevo código (dentro del mismo fichero que anteriormente).
  • Para acceder al archivo de documentación de la optimización.

Uso del proyecto

El proyecto desarrollado cuenta con un task runner, Gulp, el cual automatiza algunas de las tareas más frecuentes. Entre ellas se han añadido instalar las dependencias necesarias y probar las funciones con los test unitarios desarrollados.

Ejecución de test

Orden para ejecutar los tests unitarios.

gulp test

Instalación de dependencias

Orden para instalar las dependencias.

gulp install

Default

Si ejecutamos gulp sin parámetros se nos mostrarán en la consola las tareas disponibles.

gulp

Motivación

¿Por qué este proyecto?

El problema que este microservicio trata de solventar lo motivan y describen principalmente las historias de usuario que se incluyen en algunos de los issues que se han creado. Hoy en día el transporte y la logística están entre las actividades comerciales más importantes ya que todos necesitamos de sus servicios para aprovisionarnos de distintos artículos. El aumento de las compras en las tiendas en la web ha motivado que sea aún mayor el tráfico de paquetes que circulan todos los días.

¿De qué trata el proyecto?

Breve Descripción

La aplicación que se pretende desarrollar permitirá a los usuarios de la misma tener un control de los paquetes que vayan a enviar/recibir en una agencia de transporte. A grandes rasgos podrían saber cual es su punto de partida, su destino, peso, procedencia, etc. Además de esto, desde la misma aplicación, los comerciales de distintas empresas de transporte podrían ofrecer sus servicios; permitiendo así que los usuarios puedan elegir una u otra agencia dependiendo del precio, el tiempo de entrega, o las opiniones que otros usuarios hayan tenido de las mismas.

Concreción de rasgos de la aplicación

Tras revisar las historias de usuarios que se nos han planteado podemos ver que el servicio que se desarrollará será una parte de un sistema mayor y ayudará a un usuario a poder gestionar además de consultar sus envíos. De este modo, con nuestro servicio podrá modificarse información relativa a paquetes pertenecientes a un usuario, borrarla, crear nuevos paquetes, etc. También se permitirá a los transportistas actualizar la ubicación de los envíos en curso para que los usuarios puedan saber donde están en todo momento. Además de esto, con el fin de que los usuarios puedan tener un amplio abanico de posibilidades para hacer sus envíos, podrán añadirse al sistema distintas agencias de transporte. Consecuentemente se podrán modificar, ver datos o darse de baja agencias del sistema.

Desarrollo del Proyecto

En este apartado se informará del progreso del proyecto hasta completarlo pudiendo ver que se hará en cada parte del desarrollo. Quedarán reflejados en el fichero Steps los pasos para la consecución del objetivo, la app. En él se detallan los avances que se hacen en cada milestone.

Herramientas

Breve descripción de algunas de las herramientas de las que se hará uso en la realización del proyecto.

  • Gestor de Contenedores: El principal propósito de los contenedores es poder desarrollar aplicaciones más portables. El único requisito para poder ejecutar en cualquier máquina las aplicaciones es tener instalado el software que los crea, independientemente del sistema operativo que la máquina que funcione como host, facilitando así también los despliegues. Como contenedor base haremos uso de Docker. Una de las grandes ventajas que podemos destacar es que es posible encapsular todo el entorno de trabajo, de manera que los desarrolladores pueden estar trabajando en su servidor local con la seguridad de que, al llegar el momento de poner la aplicación en producción, se va a ejecutar con la misma configuración sobre la que se han hecho todas las pruebas. Lo elegimos además por que su uso es muy común para el despliegue de servicios y por tanto su documentación y su comunidad son muy extensas.
  • Imagen Base del Contenedor: La imagen que utilizaremos será node-12.19.0-alpine3.10. Las decisiones que hemos tomado se basan en la explicación en el archivo en el que comparamos algunas imágenes base de entre las posibles. Además de explicar por qué elegimos el contenedor con alpine realizamos algunas comparaciones de velocidad de ejecución de los test.
  • Lenguaje: Utilizaremos Node.js como lenguaje para la realización de nuestro proyecto.
  • Framework: Se hará uso de Hapi para la gestión y organización del proyecto, por ser bastante conocido y estar bien documentado.
  • BD: Para la gestión de la información utilizaremos Mysql por haberlo usado en otras asignaturas, ser bastante versátil y fácil de usar.
  • Test Framework: Haremos nuestros tests con Mocha. Desconocía de su existencia antes de hacer los test pero documentándome en google he podido ver su potencial y he aprendido a usarlo.
  • Librería de Aserciones: Usaremos como librería de aserciones Chai. Debido a que nuestro framework de pruebas no incluye librerías de aserciones la usaremos junto a mocha. Desconocía también de esta herrramienta y tras ver que se usa en distintos casos junto a Mocha decidí usarla.
  • Herramienta de Construcción: Elegimos Gulp por su flexibilidad en JavaScript para automatizar flujos de trabajo lentos y repetitivos y componerlos en procesos de construcción eficientes. En principio se trató de usar Grunt pero tras buscar arduamente como integrarlo con Mocha sin éxito decidimos cambiar. Además su sintaxis a priori parece más sencilla ya que Grunt usa archivos de configuración de datos que son similares a JSON , mientras que Gulp usa JavaScript. El código Gulp suele ser mucho más corto que el código Grunt, según he podido encontrar documentándome. Parte de esto se debe a que debe declarar los archivos de origen y destino para cada tarea en Grunt.

Documentación:

packetservice's People

Contributors

guillelpnz avatar xdavid1999 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.