Хмарний сервер для Ruby on Rails у Європі
Ruby on Rails залишається одним з найпродуктивніших веб-фреймворків для побудови повностекових застосунків. Його підхід “конвенція замість конфігурації” дозволяє невеликим командам швидко випускати продукти. Але Rails потребує справжнього сервера - правильно налаштованої, постійно ввімкненої машини, яка може обробляти запити, фонові завдання та компіляцію ресурсів. Для команд, що обслуговують європейських користувачів, цей сервер має бути в Європі.
Чому хостинг у ЄС важливий для Ruby on Rails
Rails-застосунки за своєю природою є повностековими. Вони обслуговують HTML, обробляють автентифікацію, платежі, надсилають листи та часто керують завантаженням файлів. Кожна з цих операцій включає персональні дані користувачів. Відповідно до GDPR, ці дані повинні оброблятися на інфраструктурі в межах ЄС, якщо ви обслуговуєте мешканців ЄС.
Мережева затримка особливо важлива для Rails, оскільки його цикл запитів є синхронним за замовчуванням. Хостинг у Празі або Вільнюсі дає вам 5-20 мс до більшості Західної та Центральної Європи порівняно з 100-150 мс від сервера у США.
Фонові завдання через Sidekiq також виграють від хостингу у ЄС. Якщо ваші завдання надсилають транзакційні листи або синхронізуються з партнерськими сервісами у ЄС, тримання всього в одному регіоні зменшує затримку для цих операцій.
Мінімальні вимоги до сервера
Rails більш ресурсоємний, ніж легші фреймворки. Компіляція ресурсів особливо вимоглива.
- RAM - мінімум 2 ГБ для запуску Puma та Rails-застосунку. Компіляція ресурсів може пікувати до 1,5-2 ГБ, тому для продакшну рекомендується 4 ГБ.
- CPU - мінімум 2 ядра. Багатопотокова модель Puma виграє від реального паралелізму CPU. 4 ядра ідеальні для застосунків з середнім трафіком.
- Диск - мінімум 20 ГБ. Потрібен SSD для прийнятної продуктивності бази даних.
- Ruby - версія 3.2 або новіша. Ruby 3.3 пропонує значні покращення продуктивності.
- PostgreSQL - версія 15 або новіша.
Рекомендована конфігурація DCXV
Хмарні плани DCXV починаються від EUR 15/місяць. Для реального продакшн-розгортання з фоновими завданнями практичною відправною точкою є план з 2 ядрами / 4 ГБ RAM.
Rails з Sidekiq запускає два процеси: Puma (веб-сервер) та Sidekiq (фонові завдання). На 4 ГБ RAM можна запустити Puma з 2-3 воркерами, Sidekiq з 5-10 потоками і ще залишити місце для PostgreSQL.
Для більших застосунків доступне виділене обладнання DCXV від EUR 49/місяць. Підтримка інженерів 24/7 включена в кожен план. Деталі на https://dcxv.com/data-center#cloud
Інструкція з налаштування
# Встановлення Ruby 3.3 через rbenv та залежності
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
# Встановлення Bundler та гемів
gem install bundler
cd /var/www/myapp && bundle install --deployment --without development test
# Компіляція ресурсів та міграція БД
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production bundle exec rails db:migrate
# Запуск Puma та Sidekiq через systemd
sudo systemctl enable puma sidekiq && sudo systemctl start puma sidekiq Очікувана продуктивність
Rails-застосунок на інстансі DCXV з 2 ядрами / 4 ГБ у Празі:
- Час відповіді - 50-150 мс для типових HTML-сторінок із запитами до БД. Статичні ресурси через Nginx повертаються менш ніж за 5 мс.
- Пропускна здатність - 100-300 запитів на секунду з Puma з 2 воркерами та 5 потоками кожен.
- Фонові завдання - Sidekiq з 10 потоками обробляє 200-500 завдань на хвилину.
- Мережева затримка - менше 20 мс до Німеччини, Австрії, Польщі та Чехії з Праги.





