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.6 Ruby: 2.2 DB: Mysql PaaS: AWS Elastic Beans IOS Push gem: Houston