Despliegue - UESSalexmendoza/Diseno-Software GitHub Wiki

🚀 Despliegue de la Plataforma de Trueque de Libros

Este proyecto ha sido diseñado para funcionar en un entorno basado en Django y MySQL, respetando una arquitectura cliente-servidor moderna.


🎯 Propósito del Diagrama de Despliegue

El diagrama de despliegue describe cómo se distribuyen físicamente los componentes del sistema, los servidores involucrados y los canales de comunicación entre ellos.
Ayuda a visualizar la infraestructura de ejecución de la plataforma, asegurando una correcta operación y futura escalabilidad.


🏗️ Elementos del Despliegue

Nodo Descripción
Cliente Web Dispositivo del usuario (PC, laptop o móvil) con navegador web que accede a la plataforma.
Servidor de Aplicaciones Servidor donde corre el framework Django que maneja la lógica de negocio.
Servidor de Base de Datos Motor de base de datos MySQL donde se almacena toda la información persistente del sistema.

📚 Artefactos Desplegados

Artefacto Nodo Asociado Descripción
Código Django Servidor de Aplicaciones Lógica del backend, apps Django (usuarios, libros, catalogos, contacto, perfiles).
Base de Datos trueque_libros Servidor de Base de Datos Estructura de tablas que contiene usuarios, libros, mensajes, catálogos, etc.

🔗 Comunicación entre Nodos

Desde Hacia Protocolo Descripción
Cliente Web Servidor de Aplicaciones HTTP / HTTPS Solicitudes de navegación, autenticación y publicación de libros.
Servidor de Aplicaciones Servidor de Base de Datos MySQL Protocol (TCP/IP) Consultas y actualizaciones de datos a través del ORM de Django.

🌐 Flujo General del Sistema

  1. El usuario accede a la plataforma mediante un navegador web (PC o móvil).
  2. El navegador envía una solicitud HTTP/HTTPS al Servidor Django.
  3. El Servidor Django procesa la solicitud, ejecuta la lógica de negocio, y si es necesario, consulta datos en la Base de Datos MySQL.
  4. El servidor responde generando páginas dinámicas que son devueltas al navegador del usuario.

📋 Representación Resumida

+----------------+             HTTP/HTTPS           +------------------------+
|  Cliente Web   |  ------------------------------>  |  Servidor Django        |
| (PC / Móvil)   |                                   | (Framework de Aplicación)|
+----------------+                                   |  - Apps Django           |
                                                    +-----------+--------------+
                                                                |
                                                                | MySQL Protocol
                                                                v
                                                  +-----------------------------+
                                                  |   Servidor Base de Datos     |
                                                  |         (MySQL)              |
                                                  +-----------------------------+

📊 Estado de Implementación de Componentes

Módulo / Componente Descripción Estado
usuarios Registro, inicio y cierre de sesión de usuarios. ✅ Completado
libros Publicación, edición, eliminación y visualización de libros. ✅ Completado
catalogos Administración de categorías, estados y tipos de contacto. ✅ Completado
contacto Mensajes internos entre usuarios para solicitar intercambio. ✅ Completado
perfiles Definición de roles (Administrador, Estudiante). ✅ Completado
moderacion Validación de publicaciones antes de ser visibles. 🚧 Planeado (futuro)
reportes Generación de métricas básicas del sistema. 🚧 Planeado (futuro)

⚙️ Requerimientos de Infraestructura

Componente Requerimiento mínimo sugerido
Cliente Web Navegador actualizado (Chrome, Firefox, Edge).
Servidor de Aplicaciones CPU: 2 núcleos / RAM: 4 GB / Sistema Operativo: Linux o Windows Server / Python 3.10+ / Django 4+.
Servidor de Base de Datos CPU: 2 núcleos / RAM: 4 GB / Motor: MySQL 8.0+ instalado y configurado.
Almacenamiento 20 GB libres para base de datos, archivos de aplicación y registros.
Red Acceso a Internet con HTTPS habilitado para producción; conexión segura entre servidores.

🗓️ Próximas actividades previstas

  • Implementación de flujo de moderación de publicaciones (Asignar permisos de aprobación).
  • Diseño y despliegue de módulo de reportes básicos (cantidad de libros publicados, categorías más activas).
  • Refactorización del sistema para habilitar configuraciones avanzadas de seguridad en producción.

📊 Estado de Implementación de Componentes

Módulo / Componente Descripción Estado
usuarios Registro, inicio y cierre de sesión de usuarios. ✅ Completado
libros Publicación, edición, eliminación y visualización de libros. ✅ Completado
catalogos Administración de categorías, estados y tipos de contacto. ✅ Completado
contacto Mensajes internos entre usuarios para solicitar intercambio. ✅ Completado
perfiles Definición de roles (Administrador, Estudiante). ✅ Completado
moderacion Validación de publicaciones antes de ser visibles. 🚧 Planeado (futuro)
reportes Generación de métricas básicas del sistema. 🚧 Planeado (futuro)

📦 Plan de Despliegue (Deployment Plan)

Fase 1: Desarrollo local

  • Configuración de un entorno virtual (venv) en la máquina de desarrollo.
  • Instalación de dependencias utilizando pip a partir del archivo requirements.txt.
  • Ejecución del servidor de aplicaciones Django en modo desarrollo mediante el comando python manage.py runserver.
  • Uso de una base de datos local (MySQL en localhost) para pruebas funcionales iniciales.

Fase 2: Ambiente de pruebas

  • Instalación de Django y MySQL en un servidor de staging o prueba (preferentemente con sistema operativo Linux).
  • Configuración del servidor para permitir el acceso interno del equipo de desarrollo.
  • Despliegue de la aplicación en el servidor utilizando configuraciones básicas de producción (python manage.py collectstatic, python manage.py migrate).
  • Realización de pruebas de integración de módulos principales (usuarios, libros, catálogos, contacto).
  • Verificación de la conectividad segura con la base de datos MySQL en entorno de pruebas.

Fase 3: Producción

  • Configuración de un servidor de producción con NGINX como proxy inverso y Gunicorn como servidor de aplicaciones WSGI para Django (alternativamente Apache + mod_wsgi).
  • Habilitación de comunicaciones seguras mediante la implementación de certificados SSL (Let's Encrypt o similar) para uso de HTTPS.
  • Configuración de la base de datos MySQL en un servidor dedicado o instancia protegida dentro de una red privada o VPN.
  • Ajuste de configuraciones críticas en Django:
    • Desactivar modo de depuración (DEBUG = False).
    • Configurar las variables de entorno y gestionar de forma segura los secretos de la aplicación (SECRET_KEY, credenciales de base de datos, etc.).
    • Definición de políticas de seguridad de cabeceras HTTP (Content Security Policy, X-Frame-Options, etc.).
  • Despliegue definitivo de la aplicación para acceso de usuarios finales.

🗓️ Próximas actividades previstas

  • Implementación de flujo de moderación de publicaciones (Asignar permisos de aprobación).
  • Diseño y despliegue de módulo de reportes básicos (cantidad de libros publicados, categorías más activas).
  • Refactorización del sistema para habilitar configuraciones avanzadas de seguridad en producción.