1. Seguridad del framework: CVE
Antes de elegir un framework es importante revisar sus vulnerabilidades reportadas en CVE (Common Vulnerabilities and Exposures).
- Verde → Pocas vulnerabilidades críticas, se considera seguro.
- Amarillo → Algunas vulnerabilidades moderadas, requiere parches.
- Rojo → Vulnerabilidades graves o no corregidas, conviene evitarlo.
Para verificar esto se puede buscar en cve.org, en Google, o servicios como Netcraft. Lo ideal es usar un framework con pocos registros en rojo.
2. Características deseables en un framework
a) Arquitectura MVC
El framework debe separar la aplicación en tres capas:
- Modelo: gestión de datos y reglas de negocio.
- Vista: interfaz de usuario.
- Controlador: coordina interacciones entre modelo y vista.
📌 Ejemplo: Al registrar un artículo en un sistema de inventario:
- Datos: nombre, precio, stock, descripción.
- El ID no lo ingresa el usuario: el framework lo gestiona automáticamente.
- Restricciones: precio máximo, validación de caracteres en el nombre, etc. Estas validaciones pueden venir del negocio (ej. cajero) y se programan en el framework.
b) ORM (Object-Relational Mapping)
-
El framework incluye un mapeador objeto-relacional para conectar el código con la base de datos.
-
No se definen índices manualmente, el framework gestiona claves primarias.
-
Flujo típico:
migración -> base de datos -> datos de prueba -> rollback (deshacer cambios) -
Todos los ORM comparten la misma lógica básica, por lo que aprender uno ayuda a entender los demás.
3. Buenas prácticas con frameworks
- Singleton: centralizar gestión de recursos (ej. conexión a la DB).
- Encriptar credenciales: nunca almacenar contraseñas en texto plano.
- RBAC (Role-Based Access Control): dar privilegios mínimos necesarios a cada usuario.
🔹 Para desarrollo:
- Usar SQLite porque es ligero y fácil de migrar a otra base de datos después.
- Permite ahorrar recursos y acelerar pruebas.
🔹 Para pruebas:
- Unit Tests (UT): validan módulos pequeños.
- Selenium: permite automatizar pruebas en navegadores como Chrome o Chromium.
4. Cliente-servidor y protocolos
-
REST: estándar para construir APIs.
- GET: recuperar información (ej. una URL con parámetros).
- POST: enviar datos en el cuerpo de la petición, no visibles en la URL.
- DELETE: eliminar un recurso (ej. registro en la DB).
⚠️ Importante:
- POST permite enviar grandes volúmenes de datos (dependiendo de configuración del servidor, como en nginx).
- La codificación de caracteres debe ser UTF-8 o UTF-16 para soportar múltiples idiomas.
5. Herramientas de apoyo
- Git: control de versiones del código y soporte para pruebas automatizadas.
- JSON + FastAPI: estructurar datos y definir endpoints de prueba.
- Profiling / Telemetría (ej. Grafana): analizar rendimiento, detectar cuellos de botella y mejorar eficiencia.
Glosario
- CVE (Common Vulnerabilities and Exposures): catálogo de vulnerabilidades de seguridad conocidas en software.
- MVC (Modelo-Vista-Controlador): patrón de diseño que organiza aplicaciones en capas.
- ORM (Object-Relational Mapping): herramienta que conecta objetos en código con tablas de bases de datos.
- Migración: conjunto de instrucciones para modificar la estructura de una base de datos (crear tablas, añadir columnas, etc.).
- Rollback: deshacer cambios en la base de datos para volver a un estado anterior.
- Singleton: patrón de diseño para que una clase solo tenga una instancia global.
- RBAC (Role-Based Access Control): control de acceso según roles de usuario.
- REST (Representational State Transfer): arquitectura para diseñar APIs con métodos HTTP estándar.
- Unit Test: prueba automatizada de una unidad pequeña de código.
- Selenium: framework de pruebas que automatiza navegadores web.
- UTF-8/UTF-16: estándares de codificación de caracteres que soportan múltiples lenguajes.