Sidekiqλ μ΄λ»κ² λμνλ?
Redis κΈ°λ° λ°±κ·ΈλΌμ΄λ μ‘ ν μμ€ν
Sidekiqλ Rubyμ λνμ μΈ λ°±κ·ΈλΌμ΄λ μ‘ νλ‘μΈμμ λλ€. μΉ μμ² μ€ μκ°μ΄ μ€λ 걸리λ μμ μ Redis νμ μ§λ ¬νλ μ‘μΌλ‘ λ£μΌλ©΄(perform_async), λ³λμ Sidekiq μ컀 νλ‘μΈμ€κ° λ©ν°μ€λ λλ‘ νμμ μ‘μ κΊΌλ΄ μ²λ¦¬ν©λλ€. μΉ νλ‘μΈμ€λ μ¦μ μλ΅μ λ°νν μ μκ³ , μ€μ μμ μ λ°±κ·ΈλΌμ΄λμμ μ΄λ€μ§λλ€. μ€ν¨ν μ‘μ μλ μ¬μλλλ©°, Dead μνλ‘ λΉ μ§ μ‘μ μΉ UIμμ λͺ¨λν°λ§ κ°λ₯ν©λλ€.
ꡬ쑰 λ€μ΄μ΄κ·Έλ¨
- μΉ νλ‘μΈμ€μ μ컀 νλ‘μΈμ€λ λ³λ νλ‘μΈμ€ (κ°μ μ½λλ² μ΄μ€)
- Redisκ° ν μν — μ‘μ JSONμΌλ‘ μ§λ ¬ν
- BRPOP: νκ° λΉμ΄μμΌλ©΄ λΈλ‘νΉ λκΈ° (ν΄λ§ μλ)
- μ컀λ λ©ν°μ€λ λλ‘ λμμ μ¬λ¬ μ‘ μ²λ¦¬
λμ νλ¦
μΉ μμ²μμ MyWorker.perform_async(args) νΈμΆ
μ‘ μ λ³΄κ° JSONμΌλ‘ μ§λ ¬νλμ΄ Redis νμ LPUSH
Sidekiq μ컀 νλ‘μΈμ€κ° Redisμμ BRPOPμΌλ‘ μ‘ κΊΌλ
μμ»€κ° perform(args) λ©μλ μ€ν (λ³λ μ€λ λ)
μ±κ³΅ μ μ‘ μ κ±°, μ€ν¨ μ retry νλ‘ μ΄λ (exponential backoff)
μ΅λ μ¬μλ μ΄κ³Ό μ Dead νλ‘ μ΄λ (μλ νμΈ νμ)
μ₯μ
- ✓ μΉ μλ΅ μλ κ°μ (λ¬΄κ±°μ΄ μμ λΆλ¦¬)
- ✓ μλ μ¬μλ (exponential backoff)
- ✓ λ©ν°μ€λ λλ‘ λμ μ²λ¦¬λ
- ✓ Sidekiq Web UIλ‘ λͺ¨λν°λ§
λ¨μ
- ✗ Redis μμ‘΄ (Redis λ€μ΄ = μ‘ μ²λ¦¬ μ€λ¨)
- ✗ μ‘ μ§λ ¬ν μ μ½ (볡μ‘ν κ°μ²΄ μ λ¬ λΆκ°)
- ✗ λ©ν°μ€λ λ μμ μ± μ£Όμ
- ✗ μ€λ³΅ μ€ν κ°λ₯μ± (λ©±λ±μ± νμ)