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…
Ta opcja wymaga 2 serwerów i 1 load balancera 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.