Облачный сервер для Ruby on Rails в Европе
Ruby on Rails остаётся одним из самых продуктивных веб-фреймворков для создания полноценных приложений. Его подход "соглашения вместо конфигурации" позволяет небольшим командам выпускать быстро. Но Rails требует настоящего сервера: правильно подобранной, постоянно работающей машины, которая справляется с запросами, фоновыми задачами и компиляцией ассетов. Командам, работающим для европейских пользователей, этот сервер стоит держать в Европе.
Почему хостинг в ЕС важен для Ruby on Rails
Приложения Rails по своей природе полнофункциональные. Они отдают HTML, обрабатывают аутентификацию, проводят платежи, отправляют письма и часто управляют загрузкой файлов. Каждая из этих операций затрагивает персональные данные ваших пользователей. По GDPR такие данные должны обрабатываться на инфраструктуре внутри ЕС, если вы обслуживаете его резидентов.
Сетевая задержка важна для Rails особенно потому, что его цикл обработки запроса по умолчанию синхронный. Приложение Rails рендерит HTML на сервере, поэтому пользователь ощущает каждую миллисекунду времени прохождения сигнала. Хостинг в Праге даёт 5-20 мс до большей части Западной и Центральной Европы против 100-150 мс с сервера в США.
Фоновые задачи через Sidekiq тоже выигрывают от размещения в ЕС. Если задачи отправляют транзакционные письма, обрабатывают вебхуки или синхронизируются со сторонними сервисами в ЕС, нахождение всего в одном регионе снижает задержку и для этих операций.
Минимальные требования к серверу
Rails требовательнее лёгких фреймворков. Особенно требовательна компиляция ассетов через Propshaft или Sprockets.
- RAM - минимум 2 ГБ для работы Puma и приложения Rails. Только компиляция ассетов через
rails assets:precompileможет подскочить до 1,5-2 ГБ, поэтому для продакшена, где ассеты собираются на сервере, настоятельно рекомендуется 4 ГБ. - CPU - минимум 2 ядра. Многопоточная модель Puma выигрывает от реального параллелизма процессора. Для приложений со средним трафиком идеальны 4 ядра.
- Диск - минимум 20 ГБ. Данные PostgreSQL, загруженные файлы (при локальном хранении), логи и кеш гемов Ruby накапливаются. Для приемлемой производительности базы нужен SSD.
- Ruby - версия 3.2 или новее. Ruby 3.3 даёт заметный прирост производительности по сравнению с 3.1.
- Bundler - версия 2.4 или новее для надёжного управления зависимостями гемов.
- PostgreSQL - версия 15 или новее. Active Record в Rails лучше всего работает с PostgreSQL в продакшене.
Рекомендуемая конфигурация DCXV
Тарифы облачных VPS DCXV начинаются от EUR 15 в месяц. Для небольшого приложения Rails с лёгким трафиком начальный тариф закрывает минимум. Для реального продакшена с фоновыми задачами и базой практичная отправная точка - тариф 2 ядра / 4 ГБ RAM.
Rails с Sidekiq держит два процесса: Puma (веб-сервер) и Sidekiq (фоновые задачи). Каждому нужен запас. На 4 ГБ RAM можно запустить Puma с 2-3 воркерами, Sidekiq с 5-10 потоками и оставить место для PostgreSQL, если он работает на том же сервере.
Для более крупных приложений или тех, что готовятся к росту, выделенное оборудование DCXV от EUR 49 в месяц даёт изолированные процессор и память без конкуренции с соседями. Дата-центры в Чехии и Португалии обслуживают Центральную Европу с отличной связностью. Круглосуточная поддержка инженеров включена в каждый тариф. Напишите на sales@dcxv.com или посмотрите конфигурации на https://dcxv.com/data-center#cloud
Руководство по настройке
Развёртывание приложения Rails на Ubuntu 22.04 с Puma, PostgreSQL и Sidekiq.
# Установка 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 через systemd (создайте /etc/systemd/system/puma.service)
sudo systemctl enable puma && sudo systemctl start puma
# Запуск Sidekiq через systemd (создайте /etc/systemd/system/sidekiq.service)
sudo systemctl enable sidekiq && sudo systemctl start sidekiq
Ожидаемая производительность
Приложение Rails на инстансе 2 ядра / 4 ГБ в Праге, с Puma и PostgreSQL на одной машине:
- Время отклика - 50-150 мс для типичного рендера HTML-страницы с запросами к базе. Статические ассеты через Nginx возвращаются менее чем за 5 мс.
- Пропускная способность - 100-300 запросов в секунду для страниц с обращением к базе при Puma с 2 воркерами по 5 потоков каждый.
- Фоновые задачи - Sidekiq с 10 потоками обрабатывает 200-500 задач в минуту в зависимости от их сложности.
- Сетевая задержка - менее 20 мс до Германии, Австрии, Польши и Чехии из Праги.
- Компиляция ассетов - средний проект Rails собирает ассеты за 60-120 секунд на 2 ядрах.
Rails в продакшене не назовёшь легковесным, но он хорошо изучен и надёжен. При правильной конфигурации сервера в дата-центре ЕС вы получаете стабильную производительность и тот уровень соответствия, которого ждут ваши европейские пользователи.
Это ожидания для оборудования такого класса, а не измерения в нашей собственной лаборатории. Считайте их отправной точкой для расчёта размера и измеряйте свою нагрузку: реальные цифры зависят от ваших данных, запросов и настройки гораздо сильнее, чем от провайдера.
