νΌλλ‘ λμκ°κΈ°
Dev.toBackend
μλ¬Έ μ½κΈ°
Redis κΈ°λ° Mutex Lock λμ μ ν΅ν Cron Collision λ° μ€λ³΅ μ€ν λ°©μ§
Stop Crashing Your Server: Prevent Laravel Cron Collisions π
AI μμ½
Context
B2B SaaS νκ²½μμ λ°μ΄ν° μ¦κ°μ λ°λ₯Έ μμ μ€ν μκ° μ¦κ°λ‘ κΈ°μ‘΄ μ€μΌμ€λ§μ νκ³ λ°μ. μμ μλ£ μ λ€μ μμ μ΄ μμλλ Cron Collision νμμΌλ‘ μΈν CPU μ μ μ¨ μμΉ λ° Database Lock μ λ°λ‘ μμ€ν μ 체μ κ°μ©μ± μ ν.
Technical Solution
- Redis κΈ°λ° Mutex Lockμ νμ©ν
withoutOverlapping()μ μ©μΌλ‘ μ΄μ μμ μλ£ μ μ€λ³΅ μ€νμ μμ² μ°¨λ¨νλ ꡬ쑰 μ€κ³ - μν νμ₯ νκ²½μμ λ€μ μλ²μ μ€λ³΅ μ€νμ λ°©μ§νκΈ° μν΄
onOneServer()λ₯Ό ν΅ν λ¨μΌ μ€ν μλ² λ³΄μ₯ λ‘μ§ κ΅¬ν routes/console.phpλ΄ Schedule facade μ€μ μ ν΅ν μ€μ μ§μ€μ μ€μΌμ€ κ΄λ¦¬ μ²΄κ³ κ΅¬μΆthenPing()μ°λμ ν΅ν΄ μμ μλ£ μνλ₯Ό μΈλΆ λͺ¨λν°λ§ λꡬμ μ μ‘νμ¬ Silent Failureλ₯Ό λ°©μ§νλ κ°μμ± ν보- 무λΆλ³ν μμ μ€ν λμ Redis Lock μνλ₯Ό νμΈνμ¬ CPU Spike λ° Database κ²½ν©μ μ μ΄νλ 리μμ€ μ΅μ ν μ λ΅ μ±ν
μ€μ² ν¬μΈνΈ
1. μμ μ€ν μκ°μ΄ μ€μΌμ€λ§ μ£ΌκΈ°λ³΄λ€ κΈΈμ΄μ§ κ°λ₯μ±μ΄ μλμ§ κ²ν
2. λ€μ€ μλ² νκ²½(Horizontal Scaling)μμ λμΌ μμ μ΄ μ€λ³΅ μ€νλλμ§ νμΈ
3. Redis κΈ°λ°μ Mutex Lock μ μ© μ¬λΆ κ²ν
4. μΈλΆ Health Check λꡬλ₯Ό ν΅ν μμ μλ£ μλ¦Ό μ€μ μ¬λΆ νμΈ