El propósito de este proyecto es aplicar los conceptos aprendidos en el curso mediante el desarrollo de una aplicación web básica que resuelva un problema contextual. La aplicación está enfocada en la gestión de datos académicos mediante una arquitectura que resuelva el problema planteado y que a largo plazo sea escalable.
El proyecto consiste en una plataforma para la gestión centralizada de programas académicos. La aplicación permitirá a los estudiantes inscribirse en cursos, consultar calificaciones y seguir su rendimiento académico; a los profesores, gestionar cursos y registrar notas; y al administrador del programa, supervisar usuarios, cursos y asignaturas. Además, incluirá herramientas de análisis visual para evaluar el rendimiento estudiantil y explorar patrones socioeconómicos y demográficos, con el fin de mejorar la toma de decisiones y la calidad educativa. Además, cuenta con un clúster de procesamiento de datos para generar información de interés.
La arquitectura está diseñada para ser desplegada en dos servidores Linux. Para que el proyecto funcione es necesario instalar las siguientes dependencias en estos servidores (despliegue cada dependencia para obtener la guía para instalarla):
Docker
Actualice su lista de paquetes existente
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
instale algunos paquetes de requisitos previos que permitan a apt usar paquetes a través de HTTPS:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Agregue el repositorio Docker a las fuentes APT:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Actualice de nuevo el paquete de base de datos
sudo apt update Instale Docker
sudo apt install docker-ce
sudo systemctl status docker Docker Compose
Instale Docker compose y establezca permisos para usar el comando docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-composeGit
Instale git
sudo apt update
sudo apt install git
El repositorio está estructurado de la siguiente manera:
proyecto_final_redes
├── clusterAplicacion
├── docker_swarm
│ ├── db
│ │ ├── asignaturasdb
│ │ ├── cursosdb
│ │ └── usuariosdb
│ ├── haproxy
│ ├── microservicios
│ │ ├── asignaturas
│ │ │ ├── node_modules
│ │ │ └── src
│ │ ├── cursos
│ │ │ ├── node_modules
│ │ │ └── src
│ │ └── usuarios
│ │ ├── node_modules
│ │ └── src
│ └── vista
└── PowerBI
├── rendimiento_beca
├── rendimiento_desplazado
├── rendimiento_estado_civil
├── rendimiento_genero
├── rendimiento_necesidadesEspeciales
├── rendimiento_pais
└── rendimiento_prestamo
Antes de comenzar la instalación, y configuración del entorno, es recomendable detener procesos en el puerto 80 y eliminar volúmenes e imágenes de Docker sin utilizar. Siga estos pasos:
- Detener servicios en el puerto 80:
sudo fuser -k 80/tcp
- Eliminar volúmenes no utilizados:
docker volume prune -f
- Eliminar imágenes no utilizadas:
docker image prune -a -f
Siga estos pasos para instalar el proyecto
- Clone este repositorio
git clone https://github.com/natam226/proyecto_final_redes
Antes de ejecutar el repositorio, asegúrese de actualizar las direcciones IP: Verifique que las direcciones IP configuradas en los archivos docker-compose.yml, haproxy.cfg, así como en las URLs definidas en los archivos de las vistas web y el controller del microservicio de cursos, estén actualizadas para reflejar la IP de su máquina. Si alguna de estas configuraciones no apunta a la dirección IP correcta, ajústelas antes de proceder con la ejecución.
- Navegue por el repositorio
cd proyecto_final_redes - Ingrese los nodos al Swarm
Para el segundo nodo utilice el comando que le suministra el anterior con la siguiente estructura:
docker swarm init --advertise-addr 192.168.100.2
docker swarm join --token <TOKEN> <IP_MANAGER>:2377
- Verifique los nodos
docker node ls
- En la carpeta ./docker_swarm despliegue el docker-compose:
docker stack deploy --compose-file docker-compose.yml academic_stack
- Verifique el funcionamiento de los servicios
docker stack services academic_stack
Nota: Si desea ver las estadísticas de HAProxy, ingrese al siguiente enlace: http://192.168.100.2:8081/haproxy?stats y acceda con las credenciales: usuario:
admin; contraseña:admin.
Ingrese al siguiente enlace http://192.168.100.2:8081 para acceder a la página de la aplicación.
Nota: Usar estos enlaces solo si su maquina tiene la misma direccion IP. En caso de que no, debe cambiar la IP en los enlaces anteriores por la direccion IP de su maquina.
Para ingresar como Estudiante, utilice las siguientes credenciales:
- Usuario:
aabrashkovu - Contraseña:
lI49GSLJ
Para ingresar como Profesor, utilice las siguientes credenciales:
- Usuario:
aalvy4w - Contraseña:
iI157KRhMjBvN
Para ingresar como Director, utilice las siguientes credenciales:
- Usuario:
director - Contraseña:
1234
De acuerdo al usuario que escoja, se le presentará información diferente, en caso de entrar como estudiante usted podrá:
- Crear su usuario.
- Iniciar sesión.
- Ver las asignaturas.
- Inscribirse a un curso.
- Ver los cursos matriculados.
- Ver los cursos matriculados en periodos académicos anteriores.
- Ver su información de usuario.
- Actualizar su información personal.
En caso de entrar como profesor, usted podrá:
- Crear su usuario.
- Iniciar sesión.
- Ver cursos a los que esta asignado y los estudiantes que están inscritos en estos.
- Ingresar notas en cursos.
- Ver su información de usuario.
- Actualizar su información personal.
En caso de entrar como administrador (director), usted podrá:
- Iniciar sesión.
- Ver y eliminar los estudiantes y profesores existentes.
- Crear asignaturas.
- Ver todas las asignaturas existentes.
- Ver asignaturas por ID.
- Modificar los cupos de las asignaturas.
- Ver todos los cursos existentes.
- Ver su información de usuario.
- Actualizar su información personal.
- Ver gráficas de la información relacionada con los estudiantes.
Nota: Se debe tener instalada la última versión de Spark, la cual puede ser descargada aquí
- Crear un directorio en /home/vagrant para almacenar los resultados:
mkdir clusterAplicacion
- Ingresar al directorio /sbin de Spark e iniciar un nodo master:
cd /home/vagrant/labSpark/sparkspark-3.5.3-bin-hadoop3/sbin./spark-master.sh
- En el mismo directorio iniciar un nodo worker:
./start-worker.sh spark://192.168.100.2:7077
- Lanzar la aplicación en el directorio /bin de Spark:
cd /home/vagrant/labSpark/sparkspark-3.5.3-bin-hadoop3/bin./spark-submit --master spark://192.168.100.2:7077 --conf spark.executor.memory=1g /root/proyecto_final_redes/clusterAplicacion/appRendimientoEstudiantes.py
- Se puede copiar el directorio con los resultados al directorio compartido para realizar operaciones con los archivos CSV:
cp -r /home/vagrant/clusterAplicacion /vagrant