I created a gem, Active Elastic Job, as a solution for background jobs of Rails applications running on Elastic Beanstalk.
It makes use of Elastic Beanstalk worker environments, which are intended to be used for background tasks of Elastic Beanstalk applications.
Advantages are:
- You can use the same code base for executing background jobs, no need to branch off a dedicated version of your application to run in worker environments,
- make use of Elastic Beanstalk autoscale capabilities,
- no need to set up external EC2 instances or services to run a
a queueing backend like
resque
or sidekiq
,
- no need to customize Elastic Beanstalk containers.
- keep simplicity of Elastic Beanstalk's predefined infrastructure.
However, this gem is only compatible with Rails >= 4.2 applications.