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
- El usuario accede a la plataforma mediante un navegador web (PC o móvil).
- El navegador envía una solicitud HTTP/HTTPS al Servidor Django.
- El Servidor Django procesa la solicitud, ejecuta la lógica de negocio, y si es necesario, consulta datos en la Base de Datos MySQL.
- 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.