Priorytet działania w zależności od konta (płatne/darmowe)

Cześć,

jak zrobić, aby wszystkie możliwe działania płacących użytkowników miały wyższy priorytet od tych niepłacących? Począwszy od renderowania stron, operacji bazodanowych, websockety, tworzenie/usuwanie/zmiana obiektów itp. Pomyślałem o wrzuceniu wszystkiego w kolejki sidekiqa i ustawienie im priorytetów, ale w wypadku np. pobierania danych z bazy to chyba nie będzie najlepszym pomysłem…

Może coś na poziomie obsługi requestu przed appka railsowa - load balancer który przekieruje albo do słabszego / mocniejszego serwera? :slight_smile:

Ta opcja wymaga 2 serwerów i 1 load balancera :slight_smile: Może nie sprecyzowałem, ale szukam rozwiązania dla jednego serwera. Na razie zastanawiam się nad użyciem do wszystkich akcji kontrolerów kolejek w stylu:

:queues:

  • [paid, 4]
  • [free, 1]

Z tego, co zrozumiałem akcje użytkowników płacących będą miały 80% szans na odpalenie przed akcjami użytkowników kont darmowych.

To wszystko może stać na jednym serwerze:
-serwer http z load balancerem,
-2 serwery Rails, zasoby ogarnięte np dockerem.
To załatwi Ci też warstwy inne niż background processing.

Chyba, że sidekiq jest kluczowy, wtedy zaproponowane rozwiązanie jest ok, można też pomyśleć o jakimś throttle dla darmowych użytkowników.