Plusieurs choses peuvent faire apparaitre ce besoin
Reflechissons au problème
Ajoutons des threads/process
 
          PB: Et si jamais y a une exception ?
Resilience aux erreurs => DB + Retry
 
          PB: Et si jamais on lance 400 jobs d'un coup ?
Pas trop de Jobs => Queue
 
          PB: Et si on a besoin de scale les jobs ?
Scale et trop de responsabilités => Job serveur
 
          PB: Démarrer un nouveau process c'est couteux…
Démarrage couteux => Pool de worker
 
          PB: Des dizaines de Worker qui poll la DB ça la stress…
Stress de la DB de prod => Redis <3
 
          PB: On vient de s'en créer plein \o/
Log wait, Des logs corrects, Config, …
Le faites pas vous même !
              class HardWorker
                include Sidekiq::Worker
                def perform(name, count)
                  # do something
                end
              end
              
              # Ailleur
              HardWorker.perform_async("test", 3)
	    
              class HardJob < ApplicationJob
                queue_as :default
   
                def perform(user)
                  # do something
                end
              end
              
              # Ailleur
              HardJob.perform_later(User.first)
	    So many things…