Servidor en la nube para Ruby on Rails en Europa
Ruby on Rails sigue siendo uno de los frameworks web más productivos para crear aplicaciones de pila completa. Su filosofía de convención sobre configuración permite a los equipos pequeños entregar rápido. Pero Rails necesita un servidor real: una máquina correctamente dimensionada, siempre encendida, que pueda manejar solicitudes, trabajos en segundo plano y compilación de assets. Para los equipos que sirven a usuarios europeos, ese servidor debe estar en Europa.
Por que el hosting en la UE importa para Ruby on Rails
Las aplicaciones Rails son full-stack por naturaleza. Sirven HTML, manejan autenticación, procesan pagos, envían correos y frecuentemente gestionan cargas de archivos. Cada una de estas operaciones involucra datos personales de tus usuarios. Bajo el GDPR, esos datos deben procesarse en infraestructura dentro de la UE si sirves a residentes de la UE.
La latencia de red importa especialmente para Rails porque su ciclo de solicitudes es sincrono por defecto. Hospedar en Praga te da 5-20 ms hacia la mayor parte de Europa Occidental y Central, comparado con 100-150 ms desde un servidor en EE.UU.
Requisitos mínimos del servidor
Rails es más intensivo en recursos que los frameworks más ligeros. La compilación de assets es especialmente exigente.
- RAM - Mínimo 2 GB para ejecutar Puma y la app Rails. La compilación de assets puede dispararse a 1,5-2 GB, por lo que se recomienda firmemente 4 GB para despliegues en producción.
- CPU - Mínimo 2 núcleos. El modelo multi-hilo de Puma se beneficia del paralelismo real de CPU.
- Disco - Mínimo 20 GB. Se requiere SSD para un rendimiento de base de datos aceptable.
- Ruby - Versión 3.2 o posterior. Ruby 3.3 ofrece mejoras significativas de rendimiento.
- PostgreSQL - Versión 15 o posterior.
Configuración recomendada de DCXV
Los planes cloud VPS de DCXV comienzan desde EUR 15/mes. Para despliegues en producción con trabajos en segundo plano, el plan de 2 núcleos / 4 GB RAM es el punto de partida práctico.
Rails con Sidekiq ejecuta dos procesos: Puma (servidor web) y Sidekiq (trabajos en segundo plano). Con 4 GB de RAM, puedes ejecutar Puma con 2-3 workers, Sidekiq con 5-10 hilos y aún tener espacio para PostgreSQL.
Para aplicaciones más grandes, el hardware dedicado de DCXV esta disponible desde EUR 49/mes. El soporte de ingenieros 24/7 esta incluido en cada plan. Más información en https://dcxv.com/data-center#cloud
Guía de configuración
# Instalar Ruby 3.3 via rbenv y dependencias del sistema
sudo apt update && sudo apt install -y git curl libpq-dev postgresql postgresql-contrib redis-server nginx
git clone https://github.com/rbenv/rbenv.git ~/.rbenv && echo 'eval "$(~/.rbenv/bin/rbenv init -)"' >> ~/.bashrc
~/.rbenv/bin/rbenv install 3.3.0 && ~/.rbenv/bin/rbenv global 3.3.0
# Instalar Bundler y gems
gem install bundler
cd /var/www/myapp && bundle install --deployment --without development test
# Compilar assets y ejecutar migraciones
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production bundle exec rails db:migrate
# Iniciar Puma y Sidekiq con systemd
sudo systemctl enable puma sidekiq && sudo systemctl start puma sidekiq
Expectativas de rendimiento
Una app Rails en una instancia de 2 núcleos / 4 GB en Praga:
- Tiempo de respuesta - 50-150 ms para renders de páginas HTML típicas con consultas de base de datos. Los assets estáticos via Nginx retornan en menos de 5 ms.
- Rendimiento - 100-300 solicitudes por segundo con Puma con 2 workers y 5 hilos cada uno.
- Trabajos en segundo plano - Sidekiq con 10 hilos procesa 200-500 trabajos por minuto.
- Latencia de red - Menos de 20 ms hacia Alemania, Austria, Polonia y la República Checa desde Praga.
Son expectativas para hardware de esta clase, no mediciones de nuestro propio laboratorio. Tómalas como punto de partida para dimensionar y mide tu propia carga: los números reales dependen de tus datos, tus consultas y tu ajuste mucho más que del proveedor.
