Serwer cloud dla Ruby on Rails w Europie
Ruby on Rails pozostaje jednym z najbardziej produktywnych frameworkow webowych do tworzenia aplikacji full-stack. Jego filozofia “konwencja nad konfiguracja” pozwala malym zespolom szybko dostarczac produkty. Ale Rails potrzebuje prawdziwego serwera - odpowiednio wymiarowanej, zawsze wlaczonej maszyny, ktora moze obslugiwac zadania, zadania w tle i kompilacje assetow. Dla zespolow obslugujacych uzytkownikow europejskich, ten serwer powinien byc w Europie.
Dlaczego hosting w UE jest wazny dla Ruby on Rails
Aplikacje Rails sa full-stack z natury. Serwuja HTML, obsluguja autentykacje, przetwarzaja platnosci, wysylaja e-maile i czesto zarzadzaja przesylaniem plikow. Kazda z tych operacji wiaze sie z danymi osobowymi uzytkownikow. Zgodnie z GDPR, dane te musza byc przetwarzane na infrastrukturze w UE, jesli obslugujecie mieszkancow UE.
Latencja sieci jest szczegolnie wazna dla Rails, poniewaz jego cykl zadania jest domyslnie synchroniczny. Hosting w Pradze lub Wilnie daje 5-20 ms do wiekszosci Europy Zachodniej i Centralnej, w porownaniu z 100-150 ms od serwera w USA.
Minimalne wymagania serwera
Rails jest bardziej zasobochlannym niz lekksze frameworki. Kompilacja assetow jest szczegolnie wymagajaca.
- RAM - Minimum 2 GB do uruchomienia Puma i aplikacji Rails. Kompilacja assetow moze byc pika do 1,5-2 GB, dlatego zalecane jest 4 GB do wdrozen produkcyjnych.
- CPU - Minimum 2 rdzenie. Wielowatkowy model Puma korzysta z rzeczywistego paralelizmu CPU.
- Dysk - Minimum 20 GB. SSD jest wymagany dla akceptowalnej wydajnosci bazy danych.
- Ruby - Wersja 3.2 lub nowsza. Ruby 3.3 oferuje znaczna poprawe wydajnosci.
- PostgreSQL - Wersja 15 lub nowsza.
Zalecana konfiguracja DCXV
Plany cloud VPS DCXV zaczynaja sie od EUR 15/miesiac. Dla produkcyjnych wdrozen z zadaniami w tle, plan 2 rdzenie / 4 GB RAM jest praktycznym punktem startowym.
Rails z Sidekiq uruchamia dwa procesy: Puma (serwer webowy) i Sidekiq (zadania w tle). Na 4 GB RAM mozna uruchomic Puma z 2-3 workerami, Sidekiq z 5-10 watkami i miec jeszcze miejsce dla PostgreSQL.
Dla wiekszych aplikacji dostepny jest dedykowany sprzet DCXV od EUR 49/miesiac. Wsparcie inzynierow 24/7 jest wlaczone w kazdy plan. Szczegoly na https://dcxv.com/data-center#cloud
Przewodnik konfiguracji
# Zainstaluj Ruby 3.3 przez rbenv i zaleznosci systemowe
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
# Zainstaluj Bundler i gemy
gem install bundler
cd /var/www/myapp && bundle install --deployment --without development test
# Skompiluj assety i uruchom migracje
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production bundle exec rails db:migrate
# Uruchom Puma i Sidekiq przez systemd
sudo systemctl enable puma sidekiq && sudo systemctl start puma sidekiq Oczekiwana wydajnosc
Aplikacja Rails na instancji DCXV 2 rdzenie / 4 GB w Pradze:
- Czas odpowiedzi - 50-150 ms dla typowych renderowan stron HTML z zapytaniami do bazy danych. Assety statyczne przez Nginx wracaja w ponizej 5 ms.
- Przepustowosc - 100-300 zadan na sekunde z Puma z 2 workerami i 5 watkami kazdy.
- Zadania w tle - Sidekiq z 10 watkami przetwarza 200-500 zadan na minute.
- Latencja sieci - Ponizej 20 ms do Niemiec, Austrii, Polski i Czech z Pragi.





