Este project consta de varias parte una de ellas es la parte del cliente y otra del servidor o api, en la parte del cliente se ejecuta la app que es basicamente una app que permite calcular apartir de un numero digitado calcular el Fibonacci de ese numero y la parte del servidor que crea una base de datos llamada values y almacena los valores previamente digitados por teclado en el input para posteriormente ser utilizados para calcular el indice. La parte del server consta de varias partes tambien, estas son la del container de nginx, redis, postgres y api que son los containers de las base de datos y los containers del api donde se realizan las respectivas conexiones a las base de datos porque se utilizan 2 en este caso, la base de datos de redis es la que se encarga de recopilar los datos y la base de datos de postgres es la que almacena los valores introducidos previamente almacenados por redis. Y la parte del cliente es lo que se visualiza en pantalla al usuario.
Lo que uso el maestro para levantar el proyecto completo fueron diferentes lenguajes de programacion y tecnologias como librerias, base de datos, etc, estas son las siguientes.
-
Node.js® is an open-source, cross-platform JavaScript runtime environment, que se encuentra en la parte del back-end, normalmente el javascript solo se encontraba en el front-end, pero resulta que lo modificaron y a partir de este crearon node.js, que se implementa ahora en la parte del servidor, en el caso de este proyecto, ahi es donde se implementa.
-
Esta parte del project es bastante interesante e importante, porque es la que hace las respectivas conexiones de los puertos ademas de crear la base de datos y almacenar los datos en ella mediante redis, tambien asi crea la conexion entre el usuario y el servidor, para que este se mantenga conectado a ambos, no a 1 a la vez.
-
Es un servidor web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico. Sirve como puente, para conectar los demas servidores en solo un puerto. En el project escucha en el puerto 80 especificamente el 3050 y este se conecta al cliente/server en el puerto 3000 y la parte de server en el 5000 del api. Ademas, configura que la localizacion /api te mande directamente al contenedor del api, el cual se encuentra en el puerto 5000.
-
Worker hace posible ejecutar una operación de secuencia de comandos en un subproceso de fondo separado del subproceso de ejecución principal de una aplicación web. La ventaja de esto es que el procesamiento laborioso se puede realizar en un subproceso separado, lo que permite que el subproceso principal (generalmente la interfaz de usuario) se ejecute sin bloquearse o ralentizarse.
-
Es un motor de base de datos en memoria, basado en el almacenamiento en tablas de hashes pero que opcionalmente puede ser usada como una base de datos durable o persistente, en el project, redis se encarga de almacenar los datos digitados por el usuario para luego ser almacenados directamente a la base de datos de postgres.
Video de la prueba de funcionamiento
Este proyecto cuando tuve la oportunidad de analizarlo brevemente me di cuenta de que las cosas mas importantes se encuentran en la parte de nginx, server y worker, la parte del cliente es de solo diseño de ahí importante importante podríamos sacar el js que se llama fib.js que básicamente lo que hace es calcular el fibonacci de la serie de números que digitemos. Y los almacena como anteriormente he dicho en la base de datos de redis para posteriormente este archivo sacar los datos directamente desde redis y postgres, porque la data que pasa por redis termina almacenandose en postgres.
-
-
-
-
A ciertas personas le causó error el hecho de que en los docker-file.dev no se encontraba el comando RUN npm install nodemon, y al parecer a computadoras sin permisos de usuario autorizados no le instalaba el express, pero nodemon fue un error debido a que simplemente no se puso el comando, a mi no me dio ningun error porque yo ya tenia nodemon en mi computadora y todos los packages requieridos, tambien de express, pero esa seria la otra modificacion que yo le realicé.
-