I have a rails application that is in fact a backend of a popular IOS
application which have a user base of 200k users who need to be
notified
time to time.
Daily 40-50k users will be notified using push notifications. These
push
notifications will berealtime and scheduled ones. eg: if a new users
signs up he will be notified within few seconds. eg: scheduled
notifications will run at 10 pm daily with limited users ranging 10k-30k
or
sometimes more upto 100k.
I also will be doing business reporting to generate list of users
fulfilling certain criteria and it requires firing mysql queries that
could
take upto 1-2 minutes of time.
My area of concern is should i have a seperate application with
seperate
mirror db to send push notifications to these users so my IOS users
doesnt
feel lag while using this application when push notifications are
triggered
or business reporting query is triggered.
Or should i use background jobs like Rails Active job, Sidekiq or
Sucker
Punch to perform push notifications and triggering business reporting
queries.
Is background jobs in rails so powerful that it can manage this
condition
and doesn’t let App users to feel lag in experience.
My application stack is:
Rails: 4.1.6Ruby: 2.2
DB: MysqlPaaS: AWS Elastic Beans
IOS Push gem: Houston