Coder Social home page Coder Social logo

tp-final-trafico-2023's Introduction


TP Final - Tráfico 2023

Mirá la documentación acá »

Tabla de contenidos
  1. Sobre el proyecto
  2. Para comenzar
  3. Uso
  4. Roadmap
  5. Contribuir
  6. Licencia
  7. Contacto
  8. Referencias

Sobre el proyecto

Objetivos:

Metodología:

  • Respecto al objetivo 1, se deberán implementar en Python los modelos propuestos por el paper, graficar los resultados obtenidos y explicarlos en detalle. Se analizará la eficiencia del modelo de escalado dinámico y se compararán los resultados con otros enfoques existentes.

  • En relación al objetivo 2, se llevarán a cabo las siguientes actividades:

  • Implementar un escenario utilizando el framework de Python llamado FastApi. Esto permitirá comprender el funcionamiento de esta tecnología y su integración con servicios en la nube basados en contenedores.

  • Desplegar la solución propuesta en el objetivo 1 en contenedores utilizando Docker. Se evaluará el desempeño de la solución en este entorno.

  • Desplegar en docker escenario con balanceador de carga (nginx, haproxy, traefik)

  • Desplegar la solución propuesta en el objetivo 2, junto con el objetivo 1, en un escenario clusterizado utilizando Minikube. Se analizará el comportamiento del sistema en un entorno de múltiples nodos y se evaluará la escalabilidad del modelo implementado.

  • Definir las métricas y trazabilidad del sistema propuesto. Se establecerán indicadores clave de desempeño y se configurarán herramientas de monitoreo para recopilar datos relevantes durante las pruebas.

  • Utilizar herramientas de prueba de carga como Locust y/o K6 para simular escenarios de alto tráfico y evaluar el rendimiento del sistema. Se medirán tiempos de respuesta, capacidad de escalado y estabilidad bajo carga.

  • Obtener, evaluar y presentar los resultados obtenidos en las pruebas realizadas. Se analizarán los datos recopilados y se compararán con los objetivos planteados inicialmente. Se presentarán conclusiones y recomendaciones basadas en los hallazgos obtenidos.

Back to Top

Componentes

Se listan a continuación las tecnologías utilizadas.

  • Docker
  • Python

Back to Top

Para comenzar

  1. Clone the repo
git clone https://github.com/danunziata/tp-final-trafico-2023
  1. instalar paquetes de python necesarios para trabajar en un entorno virtual
sudo apt install python3-pip -y
python3 -m pip install --upgrade pip
sudo apt install python3-venv -y
  1. Creamos el entorno local
python3 -m venv .venv
  1. Activamos el entorno:
source mkdocs_env/bin/activate

desactivar el entorno virtual

deactivate
  1. Instalamos el generador de páginas estáticas MkDocs y el tema mkdocs material:
pip install -r requirements.txt
  1. Iniciamos un servidor para que nos muestre como queda la web generada
mkdocs serve
  • Si queremos compilar el sitio y obtener los archivos html css y js:
mkdocs build

queda disponible la configuración en la carpeta site

Sistematizar los paquetes de python utilizados en el proyecto

El comando pip freeze es utilizado en entornos de desarrollo de Python para generar una lista de todos los paquetes instalados en un entorno virtual o en el entorno global del sistema. Esta lista incluye tanto los paquetes principales como sus versiones específicas.

El propósito principal de pip freeze es facilitar la reproducción exacta de un entorno de desarrollo en otro lugar. Al ejecutar pip freeze, se generará una lista en formato de texto plano que contiene cada paquete instalado junto con su versión. Esta lista puede ser guardada en un archivo de requisitos llamado "requirements.txt" para luego ser compartida con otros desarrolladores o utilizada para recrear el mismo entorno en otra máquina.

Guardar paquetes de python utiilizados:

# Abre una línea de comandos o terminal.
# Activa tu entorno virtual de Python, si estás utilizando uno.

pip freeze > requirements.txt

Instalar los paquetes en el entorno virtual:

# Abre una línea de comandos o terminal.
# Activa tu entorno virtual de Python, si estás utilizando uno.

pip install -r requirements.txt

Back to Top

Uso

Describir uso del repo

Back to Top

Roadmap

  • Analisis de herramientas

  • Definiciones de implementación

  • Implementacion del trabajo

  • Redacción final de documentación e informe

Back to Top

Contribuir

Flujo de trabajo

El proceso que seguiremos implica utilizar la rama main como la rama de producción del proyecto. Cualquier nueva funcionalidad o corrección de errores se realizará creando nuevas ramas.

Para incorporar una función en la rama main, simplemente se crea un "PR" (Pull Request), que deberá ser aprobado por algún colaborador, cualquier colaborador puede hacerlo, o bien, si no requiere revisión, puede ser aceptado por quien esté incluyendo la funcionalidad.

Es crucial que el nombre de las ramas creadas sea lo más descriptivo posible. Por ejemplo, si trabajamos en una nueva funcionalidad relacionada con la API, la rama se debe llamar feature-api. En el caso de tratarse de la corrección de un error en el código de la API, la llamaremos fix-api.

Además, se contarán con ramas específicas para la documentación con Mkdocs, denominadas docs, y para el README, que se llamará readme.

La duración de cada rama dependerá de la necesidad de trabajo. Por ejemplo, las ramas readme y docs podrían mantenerse en remoto sin eliminarse durante todo el trabajo. Luego, se pueden añadir nuevos commits a ellas y volver a crear un "PR". En contraste, al trabajar con partes de la base de datos o la API, las ramas deberán durar hasta la finalización de la funcionalidad, para luego eliminarse del repositorio remoto y continuar con una nueva rama para cualquier otra nueva característica.

Creación y publicación de ramas

Para crear una nueva rama desde tu entorno local:

git checkout -b <nombre-de-la-nueva-rama>

Para publicar la nueva rama en el repositorio remoto:

# en <nombre-de-la-nueva-rama>
git push --set-upstream origin <nombre-de-la-nueva-rama>

actualizar la rama nueva con los cambios aceptados en la rama main

# en <nombre-de-la-nueva-rama>
git pull origin main

Solicitud de PRs

Para solicitar un PR, recomendamos realizarlo directamente desde la interfaz de GitHub.

Crear una PR - Paso 1/2

Crear una PR - Paso 2/2

Finalmente, haz clic en "Create pull request" y espera la aprobación.

Commits convencionales

Los commits convencionales nos permiten mantener la organización al realizar los commits y facilitan la creación de releases de forma automatizada.

Se basan en el uso de palabras clave al inicio del mensaje de cada commit, de la siguiente manera:

  • feat(tema de la modificación): Breve explicación: Para cambios significativos o nuevas características.

  • chore(tema de la modificación): Breve explicación: Para cambios menores, como modificar una IP para una prueba local.

  • fix(tema de la modificación): Breve explicación: Para correcciones pequeñas, como agregar acentos en la documentación.

Ejemplo:

feat(vagrant): Añadiendo archivo de configuración de Vagrant

Además, es importante sectorizar por tema los commits. Por ejemplo, si tu commit modifica 3 archivos relacionados con la API y uno con la documentación, al realizar el commit de la API, feat(API), no agregaremos a la etapa de preparación el archivo de documentación, solo los 3 archivos de la API.

Eliminación de ramas del repositorio remoto y sincronización del repositorio local

Para eliminar las ramas obsoletas del repositorio remoto, se realizará a través de la interfaz de GitHub, en la sección Branches.

Eliminar rama - Paso 1/3

Luego, se accede a ver todas las ramas:

Eliminar rama - Paso 2/3

Finalmente, se hace clic para eliminar la rama:

Eliminar rama - Paso 3/3

Una vez eliminada la rama, si se desea, se puede sincronizar el entorno local siguiendo estos pasos:

  • Listar las ramas que pueden ser eliminadas del entorno local:

    git remote prune origin --dry-run
  • Limpiar las referencias locales:

    git remote prune origin
  • Verificar el estado de las ramas locales:

    git branch -a

    Se comprobará que la rama remota ha sido eliminada, pero la rama local aún permanece.

  • Eliminar la rama local:

    git branch -d <nombre-de-la-rama-a-borrar>

Con estos pasos, el entorno local estará "sincronizado" con el remoto.

Back to Top

Licencia

Este proyecto se distribuye bajo los términos de la Licencia Pública General de GNU, versión 3.0 (GNU General Public License, version 3.0). Consulta el archivo LICENSE para obtener detalles completos.

Resumen de la Licencia

La Licencia Pública General de GNU, versión 3.0 (GNU GPL-3.0), es una licencia de código abierto que garantiza la libertad de uso, modificación y distribución del software bajo los términos estipulados en la licencia. Requiere que cualquier software derivado se distribuya bajo los mismos términos de la GPL-3.0. Consulta el archivo LICENSE para más información sobre los términos y condiciones.

Aviso de Copyright

El aviso de copyright para este proyecto se encuentra detallado en el archivo LICENSE.

Back to Top

Contacto

Back to Top

Referencias

Back to Top

tp-final-trafico-2023's People

Contributors

andresbuten2002 avatar danunziata avatar damiangn avatar torlo23 avatar alejo9732 avatar lekevin5151 avatar zeiin772 avatar

Stargazers

ramirotizzian avatar  avatar  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.