misc(sidekiq): Add sidekiq-pro
as an optional dependency
#4482
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
Today, we are using Sidekiq to handle our background jobs. While it works well for most of our needs, we are reaching some limitations with the open-source version, particularly around job reliability during high load.
Sidekiq uses
BRPOP
to fetch a job from the queue in Redis. This is very efficient and simple but it has one drawback: the job is now removed from Redis. If Sidekiq crashes while processing that job, it is lost forever.Description
This adds
sidekiq-pro
as an optional dependency which can be install when building the Docker image.This also updated the
Dockerfile
to:Accept a
BUNDLE_WITH
which can be used to conditionally enabled Sidekiq Pro when the value issidekiq-pro
.Mount the
BUNDLE_GEMS__CONTRIBSYS__COM
variable as a Docker secret as it's only required during the build and is a sensitive information.Rely on
BUNDLE_WITHOUT
env variable instead of the--without
command line option to be consistent and because it is deprecated:Note that we also added a
LAGO_SIDEKIQ_PRO_REQUIRED
env variable which will cause the app to not boot if Sidekiq Pro is not properly installed.