Aplikacja na dwóch serwerach (rozdzielone funkcjonalności) ze współdzieloną bazą danych

Cześć,

Mam pewną aplikację, której główny ciężar opiera się o cykliczne wywoływanie rake tasków najróżniejszej maści. Ponieważ ilość zadań, które robią staje się coraz większa co powoduje coraz większe obciążenie serwera - pomyślałem, że część z nich mogłaby realizować osobna maszyna. Niestety na tę chwilę nie mogę po prostu zmienić serwera na mocniejszy - dla całej aplikacji.
Widzę to tak: na drugim serwerze “klonuję” aplikację zmieniając jej tylko database.yml bazy danych - część tasków uruchamiam tylko na nowej maszynie.

Ktoś przerabiał coś takiego? Czy są szanse, ze coś się będzie sypać? (zakładam, ze taski nie kolidują ze sobą).

PS. biorę też pod uwagę przerobienie kilku tasków na czysty ruby…

Nie znam Twojej aplikacji ale zastanawiam się czy nie możesz odpalać tych rake tasków w sidekiq?

Używając sidekiq wystarczy że dostawisz kolejny serwer na którym będzie działała kolejna instancja sidekiq co pozwoli wykonywać część zadań na jednej maszynie a część na drugiej.

Ok, poczytam o tym.

O ile pamiętam w Capistrano możesz zdefiniować hosty dla konkretnego stage np. production i ustawić że jeden host będzie miał role app a drugi rolę cron lub inaczej ją możesz nazwać.

Następnie definiujesz taska w capistrano by odpalił się dla konkretnej roli i w konkretnym momencie w trakcie deploy’u.

W tasku dla capistrano tym możesz np. wywołać użycie whenever by stworzył tablicę dla crontab z twoimi rake taskami.