Skip to content

Aplicación web basada en microservicios para la gestión académica de una institución. El sistema permite administrar usuarios, cursos y notas mediante APIs REST, desplegadas en un clúster distribuido con Docker Swarm y balanceadas con HAProxy. Incluye pruebas de carga con JMeter, procesamiento de datos con Apache Spark y visualización en Power BI

Notifications You must be signed in to change notification settings

valentinabc19/proyecto_final_redes

 
 

Repository files navigation

Proyecto de redes e infraestructura: Aplicación para gestión académica

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.

Integrantes del Proyecto

Natalia Moreno Montoya

Valentina Bueno Collazos

Estefania Hernandez Rojas

Valeria Franco Cordoba

Tabla de Contenidos

  1. Requisitos
  2. Estructura
  3. Limpieza
  4. Instalación
  5. Uso

Requisitos

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-compose
Git

Instale git

sudo apt update
sudo apt install git

Estructura

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

Limpieza

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:

  1. Detener servicios en el puerto 80:
     sudo fuser -k 80/tcp
  2. Eliminar volúmenes no utilizados:
     docker volume prune -f
  3. Eliminar imágenes no utilizadas:
    docker image prune -a -f
    

Instalación

Siga estos pasos para instalar el proyecto

  1. 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.

  1. Navegue por el repositorio
    cd proyecto_final_redes
  2. Ingrese los nodos al Swarm
     docker swarm init --advertise-addr 192.168.100.2
    Para el segundo nodo utilice el comando que le suministra el anterior con la siguiente estructura:
     docker swarm join --token <TOKEN> <IP_MANAGER>:2377
  3. Verifique los nodos
     docker node ls
  4. En la carpeta ./docker_swarm despliegue el docker-compose:
    docker stack deploy --compose-file docker-compose.yml academic_stack
  5. Verifique el funcionamiento de los servicios
    docker stack services academic_stack

Uso

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.

Clúster de procesamiento de datos

Nota: Se debe tener instalada la última versión de Spark, la cual puede ser descargada aquí

  1. Crear un directorio en /home/vagrant para almacenar los resultados:
      mkdir clusterAplicacion
  2. 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
  3. En el mismo directorio iniciar un nodo worker:
       ./start-worker.sh spark://192.168.100.2:7077
  4. 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
  5. Se puede copiar el directorio con los resultados al directorio compartido para realizar operaciones con los archivos CSV:
       cp -r /home/vagrant/clusterAplicacion /vagrant

About

Aplicación web basada en microservicios para la gestión académica de una institución. El sistema permite administrar usuarios, cursos y notas mediante APIs REST, desplegadas en un clúster distribuido con Docker Swarm y balanceadas con HAProxy. Incluye pruebas de carga con JMeter, procesamiento de datos con Apache Spark y visualización en Power BI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 73.8%
  • JavaScript 22.5%
  • Python 2.9%
  • Dockerfile 0.8%