Ejecutar Scripts en la Nube
🧭 Navegación:
- Anterior: Introducción a Despliegue Básico
- Siguiente: Programar Tareas Automáticas
🌩️ La nube: Tu almacén virtual
Imagina que tu computadora es como tu almacén principal, donde desarrollas y pruebas tus productos (scripts). Pero ahora necesitas un “almacén satélite” que funcione de forma autónoma, incluso cuando cierras tu almacén principal por la noche.
La nube es ese almacén satélite: un espacio virtual donde tus scripts pueden vivir y ejecutarse independientemente de tu computadora personal.
🤔 ¿Por qué ejecutar scripts en la nube?
Hay muchas razones para mover tus scripts a la nube:
- Disponibilidad 24/7: Tus scripts funcionan incluso cuando tu computadora está apagada
- Recursos dedicados: No consumen recursos de tu máquina personal
- Conectividad constante: Mejor acceso a internet y menos interrupciones
- Escalabilidad: Puedes aumentar recursos según tus necesidades
- Acceso remoto: Puedes monitorear y actualizar desde cualquier lugar
🛠️ Opciones para desplegar en la nube
Existen varias opciones para ejecutar scripts en la nube, con diferentes niveles de complejidad y costo:
1. Servidores Virtuales Privados (VPS)
Un VPS es como alquilar un pequeño servidor en la nube. Es la opción más flexible y te da control total.
Proveedores populares:
- DigitalOcean: Droplets desde $5/mes
- Linode: Servidores desde $5/mes
- AWS EC2: Instancias con capa gratuita disponible
- Google Cloud Compute Engine: Instancias con crédito gratuito inicial
- Microsoft Azure: Máquinas virtuales con crédito gratuito inicial
Ventajas:
- Control total sobre el servidor
- Puedes instalar cualquier software
- Buena relación costo-beneficio para scripts que se ejecutan constantemente
Desventajas:
- Requiere conocimientos básicos de administración de servidores
- Tú eres responsable de la seguridad y mantenimiento
2. Plataformas como Servicio (PaaS)
Las PaaS son plataformas que manejan la infraestructura por ti, permitiéndote enfocarte solo en tu código.
Opciones populares:
- PythonAnywhere: Específico para Python, con plan gratuito disponible
- Heroku: Plataforma general, con plan gratuito limitado
- Google App Engine: Servicio de Google Cloud con capa gratuita
Ventajas:
- Más fácil de usar, menos configuración
- No requiere conocimientos de administración de servidores
- Muchas ofrecen planes gratuitos para proyectos pequeños
Desventajas:
- Menos flexibilidad que un VPS
- Pueden ser más costosas para uso intensivo
- Algunas tienen limitaciones en ejecuciones en segundo plano
3. Servicios Serverless
Los servicios serverless ejecutan tu código solo cuando es necesario, sin mantener un servidor activo constantemente.
Opciones populares:
- AWS Lambda: Funciones con capa gratuita generosa
- Google Cloud Functions: Funciones con capa gratuita
- Azure Functions: Funciones con capa gratuita
Ventajas:
- Pagas solo por el tiempo de ejecución real
- Escalado automático
- Sin mantenimiento de servidor
Desventajas:
- Limitaciones de tiempo de ejecución (generalmente máximo 15 minutos)
- No ideal para scripts que necesitan ejecutarse constantemente
- Curva de aprendizaje para configuración inicial
🚀 Tutorial: Desplegando un script en un VPS
Para este tutorial, usaremos un VPS como ejemplo, ya que ofrece el mejor balance entre flexibilidad, costo y facilidad de uso para scripts de automatización.
Paso 1: Preparar tu script para el despliegue
Antes de desplegar tu script, necesitas asegurarte de que esté listo para funcionar en un entorno de servidor:
- Usa rutas absolutas o relativas al directorio del script:
# En lugar de esto:
with open("datos.txt", "r") as f:
# código...
# Usa esto:
import os
# Obtener el directorio donde está el script
script_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(script_dir, "datos.txt")
with open(file_path, "r") as f:
# código...
- Maneja las dependencias adecuadamente:
Crea un archivo requirements.txt
que liste todas las bibliotecas que tu script necesita:
requests 2.28.1
beautifulsoup4 4.11.1
pandas 1.5.0
- Añade logging para depuración remota:
import logging
# Configurar logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler("script_log.txt"),
logging.StreamHandler()
]
)
# Usar logging en lugar de print
logging.info("Script iniciado")
try:
# Tu código aquí
logging.info("Operación completada")
except Exception as e:
logging.error(f"Error: {str(e)}")
- Asegúrate de que tu script sea independiente:
Evita dependencias de interfaces gráficas o recursos que solo existen en tu computadora local.
Paso 2: Obtener un servidor virtual (VPS)
Para este ejemplo, usaremos DigitalOcean, pero los pasos son similares en otros proveedores:
- Crea una cuenta en DigitalOcean (u otro proveedor de VPS)
- Crea un Droplet (servidor virtual):
- Selecciona Ubuntu como sistema operativo
- Elige el plan más básico ($5/mes es suficiente para empezar)
- Selecciona una región cercana a ti
- Añade tu clave SSH o configura una contraseña
- Crea el Droplet
Paso 3: Conectarte a tu servidor
Una vez que tu servidor esté listo, necesitas conectarte a él:
En Linux/macOS:
Abre una terminal y usa SSH:
ssh root@tu_ip_del_servidor
En Windows:
Usa PuTTY o el cliente SSH integrado en Windows 10/11:
ssh root@tu_ip_del_servidor
Paso 4: Configurar el entorno en el servidor
Una vez conectado, configura el entorno para ejecutar tu script:
- Actualiza el sistema:
apt update && apt upgrade -y
- Instala Python y herramientas necesarias:
apt install python3 python3-pip python3-venv -y
- Crea un directorio para tu proyecto:
mkdir -p /opt/myscripts
cd /opt/myscripts
Paso 5: Transferir tu script al servidor
Hay varias formas de transferir archivos a tu servidor:
Usando SCP (desde tu computadora local):
# En Linux/macOS/Windows con OpenSSH
scp tu_script.py requirements.txt root@tu_ip_del_servidor:/opt/myscripts/
Usando SFTP:
sftp root@tu_ip_del_servidor
cd /opt/myscripts
put tu_script.py
put requirements.txt
exit
Usando un editor en el servidor:
# En el servidor
nano /opt/myscripts/tu_script.py
# Pega tu código, guarda con Ctrl+O, sal con Ctrl+X
Paso 6: Configurar un entorno virtual
Es una buena práctica usar entornos virtuales para aislar las dependencias:
cd /opt/myscripts
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Paso 7: Ejecutar tu script manualmente
Primero, verifica que tu script funcione correctamente:
python tu_script.py
Si todo funciona bien, verás la salida esperada o los logs indicando que el script se ejecutó correctamente.
Paso 8: Configurar la ejecución automática
Para que tu script se ejecute automáticamente, puedes usar cron (lo veremos en detalle en la siguiente sección):
crontab -e
Añade una línea para ejecutar tu script periódicamente:
# Ejecutar el script todos los días a las 3 AM
0 3 * * * cd /opt/myscripts && source venv/bin/activate && python tu_script.py
🔒 Consideraciones de seguridad
Al desplegar scripts en la nube, la seguridad es crucial:
- Actualiza regularmente tu servidor con parches de seguridad
- Usa un usuario no-root para ejecutar tus scripts
- Configura un firewall para limitar el acceso
- No almacenes credenciales directamente en tu código
- Usa variables de entorno o archivos de configuración seguros
- Habilita autenticación de dos factores para acceder a tu servidor
💰 Optimización de costos
Para mantener los costos bajo control:
- Comienza pequeño: Usa el plan más básico y escala según sea necesario
- Monitorea el uso: Verifica si estás pagando por recursos que no utilizas
- Considera opciones serverless para scripts que se ejecutan con poca frecuencia
- Aprovecha las capas gratuitas que ofrecen muchos proveedores
- Comparte recursos: Ejecuta múltiples scripts en el mismo servidor
🔍 Comprueba tu comprensión
- ¿Cuál es la principal ventaja de ejecutar scripts en la nube en lugar de en tu computadora local?
- ¿Por qué es importante usar rutas absolutas en scripts que se ejecutarán en servidores?
- ¿Cuál es la diferencia principal entre un VPS y un servicio serverless?
- ¿Por qué es recomendable usar entornos virtuales en el servidor?
- ¿Qué información NO deberías incluir directamente en el código de tu script?
🛠️ Ejercicio práctico
Toma uno de los scripts de automatización que creamos en el capítulo anterior (por ejemplo, el organizador de archivos) y prepáralo para despliegue siguiendo estos pasos:
- Modifica el script para usar rutas absolutas
- Añade logging adecuado
- Crea un archivo requirements.txt
- Documenta los pasos necesarios para desplegarlo
Si tienes acceso a un VPS o una cuenta gratuita en algún proveedor de nube, intenta desplegar el script siguiendo los pasos de este tutorial.
En la siguiente sección, aprenderemos a programar tareas automáticas para que nuestros scripts se ejecuten periódicamente sin intervención manual.