Tecnológico de Monterrey BEER Lab
Volver a Investigación · Investiga con el BEER Lab

Implementación

Implementa y opera tu experimento

Una guía práctica para convertir un proyecto ya revisado en un build probado, desplegarlo en la infraestructura del laboratorio, correr las sesiones y resguardar sus resultados.

Alcance

Del proyecto aprobado a la exportación final

La secuencia de abajo cubre solamente la implementación técnica y operativa. Úsala como referencia común entre el equipo investigador y el equipo del laboratorio durante programación, validación, sesiones, actualizaciones y retiro.

01 · Infraestructura

Conoce el entorno antes de programar

Cada experimento aprobado se ejecuta como un servicio independiente administrado por el laboratorio.

Dirección propia

El estudio recibe una URL HTTPS del tipo nombre.beer-lab.org y acceso administrativo de oTree.

Base de datos

El laboratorio configura PostgreSQL, credenciales del servicio y copias de seguridad nocturnas.

Operación administrada

El equipo del laboratorio despliega, actualiza y retira el servicio a partir de una versión identificable.

Supuestos técnicos

  • El runtime usa Python 3.11 sobre Linux. Los nombres de archivos distinguen mayúsculas y minúsculas.
  • El proceso de la aplicación recibe la conexión a PostgreSQL mediante variables de entorno.
  • El sistema de archivos del contenedor es efímero: no lo uses para conservar datos, archivos subidos o resultados.
  • Una instancia atiende un experimento y es adecuada para cargas de hasta algunos cientos de participantes simultáneos. Informa con anticipación cargas mayores o patrones inusuales.
No programes contra la infraestructura. El código no debe contener contraseñas, una URL de base de datos, rutas locales, dominios de Heroku ni direcciones localhost.

02 · Código

Prepara un proyecto reproducible

Parte de la plantilla pública y conserva la raíz del repositorio como raíz del proyecto oTree.

Estructura mínima

mi-experimento/
├── settings.py
├── requirements.txt
├── README.md
├── .gitignore
├── mi_app/
│   ├── __init__.py
│   └── ...
├── _static/       # opcional
└── _templates/    # opcional

No coloques un segundo proyecto oTree dentro del repositorio. El archivo settings.py debe estar en su raíz.

Configuración segura

from os import environ

ADMIN_PASSWORD = environ.get('ADMIN_PASSWORD')
SECRET_KEY = environ.get('SECRET_KEY')

# Conserva aquí SESSION_CONFIGS, SESSION_CONFIG_DEFAULTS y ROOMS.
# El laboratorio proporciona DATABASE_URL al desplegar.
  • No definas DATABASE_URL, DEBUG ni AUTH_LEVEL dentro de settings.py.
  • Para variables propias usa el prefijo OTREE_, léelas con environ.get() y documenta su propósito.
  • Define ROOMS cuando el flujo operativo use códigos o salas permanentes.

Dependencias exactas

otree==6.x.y
psycopg2-binary==2.9.10
# añade debajo las demás dependencias realmente utilizadas

Sustituye 6.x.y por la versión exacta con la que probaste el estudio. No incluyas Procfile, runtime.txt ni Dockerfiles: el servidor construye el runtime.

Archivos que no deben viajar

.venv/
__pycache__/
*.py[cod]
*.sqlite3
.env
.otreezip
.DS_Store
exports/
participant_data/

Excluye bases locales, exportaciones, datos de participantes, secretos, entornos virtuales, cachés y binarios grandes. Los videos u otros activos pesados deben acordarse antes del despliegue.

README técnico recomendado. Registra la versión de oTree y Python probadas, las configuraciones y Rooms disponibles, los nombres —no los valores— de las variables requeridas, los archivos que la aplicación espera en ejecución y la carga prevista.

03 · Pruebas

Reproduce el estudio desde cero

La entrega debe funcionar fuera de la computadora donde fue programada.

Instala y ejecuta

python -m venv .venv
# activa el entorno virtual en tu sistema
python -m pip install -r requirements.txt
otree devserver

Corre pruebas automatizadas

otree test

Incluye bots para las rutas principales y para cualquier rama crítica. Una prueba exitosa no sustituye el recorrido manual.

Prueba como se usará

  1. Crea cada SESSION_CONFIG y, si corresponde, entra mediante cada Room.
  2. Recorre tratamientos y contingencias con al menos dos navegadores o perfiles independientes.
  3. Verifica instrucciones, pagos, timeouts, desconexiones y reingreso.
  4. Prueba los dispositivos previstos, incluido teléfono si el estudio lo permite.
  5. Haz una instalación desde un clon o ZIP limpio usando solo el README.
  6. Simula producción con OTREE_PRODUCTION=1 y revisa que no dependa de datos locales.
Criterio de salida. Otra persona del equipo debe poder instalar, iniciar y completar el estudio sin conocimiento tácito ni archivos que no estén documentados.

04 · Paquete técnico

Prepara la versión para despliegue

Vincula una versión técnica concreta al expediente del proyecto ya aprobado en el paso 2.

Código fuente

  • Preferido: URL de un repositorio accesible al equipo del laboratorio y un tag o commit específico.
  • Alternativa: ZIP completo compartido por un canal institucional seguro. Incluye el historial de Git cuando sea necesario para identificar versiones.

Ficha técnica de despliegue

DatoQué informar
VersiónRepositorio y tag/commit, o nombre y fecha del ZIP.
SubdominioNombre neutral de 3 a 15 caracteres: minúsculas, números o guiones; debe comenzar con una letra.
ConfiguracionesSESSION_CONFIGS, Rooms y flujo que se usará en cada tipo de sesión.
OperaciónFechas, número de sesiones, participantes simultáneos previstos y ventana de piloto.
VariablesNombres de variables requeridas y su función. Envía los valores secretos por separado.
AccesoPersona autorizada para recibir la URL administrativa y la contraseña.
No vuelvas a enviar aquí la propuesta. El protocolo, la ética, el reclutamiento y los recursos ya se evaluaron en el paso 2. Esta entrega agrega exclusivamente la versión ejecutable y sus metadatos técnicos.

05 · Publicación

Valida el despliegue con el laboratorio

El laboratorio construye la versión identificada; el equipo investigador confirma que el resultado se comporta como el build aprobado.

  1. Build. El equipo del laboratorio instala las dependencias, configura PostgreSQL y carga las variables acordadas.
  2. Corrección. Si falla la construcción, el equipo investigador entrega una nueva versión; no se parchea código sin identificarlo.
  3. Acceso. La URL pública y la credencial administrativa se comparten por canales separados.
  4. Smoke test. El equipo investigador crea una sesión de prueba, completa los flujos y verifica la exportación.
  5. Liberación. El servicio queda habilitado para las fechas y la carga informadas.
Programa los cambios. Una actualización suele causar alrededor de 15 segundos de indisponibilidad. Nunca despliegues durante una sesión activa y deja margen para probar antes del siguiente grupo.

06 · Operación

Corre las sesiones y exporta al terminar

Usa las herramientas administrativas de oTree como controles operativos, no como sustituto del protocolo de sesión.

Antes

Entra por /login, confirma versión, configuración, Room, enlaces, capacidad y personal responsable.

Durante

Observa el avance en Monitor, registra incidentes y evita actualizar el servicio mientras haya participantes conectados.

Después

Exporta datos, valida el número de registros y guarda una copia en el repositorio institucional aprobado.

Exportación mínima después de cada sesión

  • all_apps_wide: archivo longitudinal integrado de todas las aplicaciones;
  • datos por aplicación: exportaciones necesarias para la estructura del estudio;
  • PageTimes: tiempos de página cuando sean relevantes para calidad o diagnóstico.
Las copias nocturnas son recuperación operativa, no archivo de investigación. El equipo investigador debe exportar después de cada sesión y conservar los datos conforme al plan aprobado.

07 · Ciclo de vida

Controla cambios, versiones y retiro

Cada despliegue debe corresponder a una versión recuperable y a una decisión operativa explícita.

Tipo de cambioAcción
Texto, estilos o lógica sin cambiar modelosEntrega una nueva versión, documenta el cambio y repite las pruebas afectadas. La base normalmente puede conservarse.
Campos o modelos de datosCoordina una ventana. oTree puede requerir reiniciar la base; exporta todo antes y valida la nueva estructura.
Cambio material del estudioVuelve al expediente del paso 2 antes de implementar; puede requerir revisión adicional.
Fin de recolecciónRealiza la exportación final, comprueba los archivos y confirma al laboratorio cuándo retirar el servicio.

Conserva para cada release: tag o commit, fecha, responsable, resumen de cambios, resultado de pruebas y decisión sobre la base de datos.

08 · Diagnóstico

Resuelve los problemas más frecuentes

La mayoría de las fallas de despliegue proviene de dependencias incompletas, diferencias entre Windows y Linux o archivos locales no declarados.

SíntomaRevisión recomendada
Falla al instalarConfirma que cada dependencia esté en requirements.txt, con una versión compatible y disponible para Python 3.11.
TemplateNotFoundCompara exactamente mayúsculas y minúsculas en rutas, templates, imágenes y archivos estáticos.
CSS o imágenes no aparecenVerifica rutas de static y que los archivos estén incluidos en la versión entregada.
Un enlace apunta a localhostElimina hosts codificados y construye URLs relativas o a partir de la solicitud.
No permite iniciar sesiónConfirma que ADMIN_PASSWORD provenga del entorno y que no se haya sobrescrito AUTH_LEVEL.
“Database is out of date”Detén sesiones, exporta datos y coordina el reinicio de la base si cambió el modelo.
Archivos desaparecen al actualizarNo escribas resultados al disco del servicio; usa la base y exportaciones controladas.

Checklist de implementación

¿Tu proyecto ya pasó la revisión y está listo para construir?

Usa esta página como checklist técnico. Si cambia el diseño, la población, el protocolo o cualquier condición aprobada, actualiza primero el expediente del proyecto antes de desplegar.

Volver a Investigación · Investiga con el BEER Lab