ποΈArquitectura del Sistema - ToLearn
Este documento describe la arquitectura tΓ©cnica de la plataforma ToLearn, sus componentes principales y cΓ³mo interactΓΊan entre sΓ.
π Tabla de Contenidos
π― VisiΓ³n General
ToLearn estΓ‘ construida como una aplicaciΓ³n web monolΓtica usando Django, con arquitectura MVC (Modelo-Vista-Controlador) ampliada con funcionalidades de tiempo real mediante WebSockets.
Stack TecnolΓ³gico
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FRONTEND β
β HTML5 + CSS3 + JavaScript + Bootstrap + CKEditor β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β APPLICATION LAYER β
β Django 5.2.4 + Django Channels β
β (HTTP/HTTPS + WebSocket + ASGI + WSGI) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATA LAYER β
β PostgreSQL + Redis + S3 Storage β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββποΈ Arquitectura de Alto Nivel
Diagrama de Arquitectura
Componentes Principales
Capa de PresentaciΓ³n (Frontend)
Plantillas HTML/CSS
JavaScript para interactividad
Bootstrap para diseΓ±o responsive
Capa de AplicaciΓ³n (Backend)
Django Framework
Django Channels para WebSockets
Aplicaciones modulares
Capa de Datos
PostgreSQL para datos estructurados
Redis para cache y WebSocket
S3 para archivos multimedia
π§© Componentes del Sistema
Estructura de Aplicaciones Django
1. Accounts (AutenticaciΓ³n)
Responsabilidades:
AutenticaciΓ³n de usuarios
IntegraciΓ³n OAuth con Google
GestiΓ³n de sesiones
Componentes Clave:
NoSignupSocialAccountAdapter: Previene registro automΓ‘tico con OAuthIntegraciΓ³n con
django-allauth
Flujo de AutenticaciΓ³n:
2. Homepage (Portal PΓΊblico)
Responsabilidades:
PΓ‘gina principal
PΓ‘ginas informativas
Login/Registro
Selector de idioma
Vistas Principales:
home(): PΓ‘gina principalsignin(): AutenticaciΓ³nsignup(): Registrologoutuser(): Cierre de sesiΓ³nset_language(): Cambio de idioma
3. Dashboard (Panel de Control)
Responsabilidades:
Panel principal del usuario
GestiΓ³n de evaluaciones
VisualizaciΓ³n de calificaciones
EnvΓo de tareas
Modelos Principales:
Flujo de EvaluaciΓ³n:
4. Courses (GestiΓ³n de Cursos)
Responsabilidades:
CreaciΓ³n y gestiΓ³n de cursos
OrganizaciΓ³n de lecciones
Control de acceso
Materiales adicionales
Modelos Principales:
Control de Acceso:
5. Webinar (Salas Virtuales)
Responsabilidades:
Videoconferencias en tiempo real
Chat en vivo
Pizarra colaborativa
Compartir archivos
Modelos Principales:
Arquitectura WebSocket:
Flujo WebSocket:
6. AdminPanel (AdministraciΓ³n)
Responsabilidades:
GestiΓ³n avanzada de usuarios
EstadΓsticas del sistema
GestiΓ³n de cursos y evaluaciones
ConfiguraciΓ³n global
Funcionalidades:
CRUD completo de todos los modelos
ImportaciΓ³n/exportaciΓ³n de datos
GeneraciΓ³n de reportes
GestiΓ³n de permisos
πΎ Modelo de Datos
Diagrama de Relaciones
Modelo de Usuario Extendido
Relaciones Importantes
User β Course: Muchos a Muchos
A travΓ©s de
StudentCourseAccessPermite rastrear fechas de inscripciΓ³n
User β ClassRoom: Muchos a Muchos
Un usuario puede estar en mΓΊltiples aulas
Un aula contiene mΓΊltiples estudiantes
Course β Lesson: Uno a Muchos
Un curso tiene mΓΊltiples lecciones
Lecciones ordenadas secuencialmente
Assignment β Submission: Uno a Muchos
Una evaluaciΓ³n tiene mΓΊltiples envΓos
Un envΓo por estudiante por evaluaciΓ³n
π Flujo de Datos
Flujo de Solicitud HTTP
Flujo de WebSocket
Flujo de Subida de Archivos
π Seguridad
Capas de Seguridad
Mecanismos de Seguridad
AutenticaciΓ³n
Django session-based authentication
OAuth 2.0 con Google
Password hashing con PBKDF2
AutorizaciΓ³n
Decoradores
@login_requiredPermisos basados en grupos (estudiante/profesor/admin)
VerificaciΓ³n de acceso a nivel de objeto
ProtecciΓ³n CSRF
Token CSRF en todos los formularios
VerificaciΓ³n automΓ‘tica por Django
Seguridad de Contenido
SanitizaciΓ³n HTML con bleach
XSS protection headers
Content Security Policy
Rate Limiting
LΓmite de intentos de login
Throttling de API (futuro)
ConfiguraciΓ³n de Seguridad en ProducciΓ³n
π Escalabilidad
Estrategias de Escalabilidad
1. Escalabilidad Horizontal
ImplementaciΓ³n:
MΓΊltiples instancias de Gunicorn/Daphne
Load balancer (Nginx, HAProxy, AWS ELB)
Base de datos centralizada
Redis cluster para cache distribuido
2. CachΓ© en MΓΊltiples Niveles
ConfiguraciΓ³n:
3. OptimizaciΓ³n de Base de Datos
Γndices:
Query Optimization:
4. SeparaciΓ³n de Servicios
Arquitectura de Microservicios (Futuro):
5. Almacenamiento Distribuido
S3 para archivos multimedia:
Reduce carga del servidor
CDN integrado
Alta disponibilidad
Escalabilidad automΓ‘tica
Ventajas:
MΓ©tricas de Rendimiento
Objetivos:
Tiempo de respuesta < 200ms (95ΒΊ percentil)
Disponibilidad > 99.9%
Capacidad: 1000+ usuarios concurrentes
Throughput: 100+ req/segundo
Monitoreo:
π Patrones de DiseΓ±o Utilizados
1. MVC (Model-View-Controller)
Model: Modelos de Django (ORM)
View: Views de Django (Controladores)
Template: Plantillas HTML (Vistas)
2. Repository Pattern
Modelos de Django actΓΊan como repositorios
AbstracciΓ³n de la capa de datos
3. Decorator Pattern
@login_required@staff_member_required@cache_page
4. Observer Pattern
Signals de Django
WebSocket pub/sub con Redis
5. Strategy Pattern
Storage backends (local vs S3)
Authentication backends
π Referencias
Γltima actualizaciΓ³n: 2024 VersiΓ³n del documento: 1.0
Last updated