λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ–₯️ μ΄μ»€λ¨ΈμŠ€ν”„λ‘œμ νŠΈ/✏️ TIL

[TIL] λ‹€μ‹œ μ‹œμž‘ν•΄λ³΄λŠ” ν”„λ‘œμ νŠΈ TIL 16일차..

by carrot0911 2025. 5. 7.

🌞 μ˜€λŠ˜μ€ μ–΄λ–€ ν•˜λ£¨μ˜€μ§€..

μ˜€λŠ˜μ€ μ˜€μ „ λ‚΄λ‚΄ νŒ€μ›λ“€μ΄ μ˜¬λ €μ€€ PR ν™•μΈν•˜κ³  리뷰 λ‹€λŠλΌ μ‹œκ°„μ„ λ‹€ 보낸 것 κ°™λ‹€.
ν•˜λ‚˜ν•˜λ‚˜ 꼼꼼히 보닀 λ³΄λ‹ˆ μ‹œκ°„μ΄ 많이 μ§€λ‚¬λŠ”λ°, μ½”λ“œ 리뷰에 λŒ€ν•œ μš”λ Ήμ΄ 아직은 λΆ€μ‘±ν•œ 것 κ°™μ•„μ„œ μ‹œκ°„μ΄ 많이 μ†Œμš”λ˜λŠ” 것 κ°™λ‹€.
κ·Έλž˜λ„ ν•˜λ‹€ λ³΄λ‹ˆκΉŒ 점점 속도가 λΆ™λŠ” λŠλ‚Œμ΄λΌμ„œ κ³„μ†ν•΄μ„œ ν•˜λ‹€ 보면 μ΅μˆ™ν•΄μ Έμ„œ μ „λ³΄λ‹€λŠ” 짧은 μ‹œκ°„ μ•ˆμ— μ½”λ“œ 리뷰λ₯Ό 끝낼 수 μžˆμ„ κ±°λž€ 생각이 λ“€μ—ˆλ‹€.

μ˜€ν›„μ—λŠ” μ„ μ°©μˆœ 할인 쿠폰 λ°œκΈ‰ λ™μ‹œμ„± λ¬Έμ„œν™”λ₯Ό μ§„ν–‰ν–ˆλ‹€.
μš°μ„  μ•„λ¬΄λŸ° μž‘μ—…λ„ ν•˜μ§€ μ•Šμ€ 기본적인 쿠폰 λ°œκΈ‰ λ‘œμ§μ„ JMeterμ—μ„œ μ‹€ν–‰ν•΄μ„œ λ°λ“œλ½μ΄ λ°œμƒν•˜λŠ” ν˜„μƒμ„ 눈으둜 ν™•μΈν–ˆλ‹€. λ°λ“œλ½μ„ 작기 μœ„ν•΄μ„œ 비관적 락을 μ μš©ν•˜μ—¬ DBμ—μ„œ 락을 κ±Έμ–΄ 정합성이 μœ μ§€λ˜κ²Œλ” ν•  수 μžˆμ—ˆλ‹€. λ™μ‹œ μŠ€λ ˆλ“œ 수λ₯Ό 점차적으둜 μ¦κ°€μ‹œν‚€λ©΄μ„œ 속도λ₯Ό ν™•μΈν–ˆκ³ , λ°°ν¬ν–ˆμ„ λ•Œμ˜ λΆ„μ‚° ν™˜κ²½μ„ κ³ λ €ν•˜μ—¬ Redisson 락도 κ΅¬ν˜„ν•˜μ—¬ 속도λ₯Ό ν™•μΈν–ˆλ‹€.
κ·Έ κ²°κ³Ό, 비관적 락이 Redisson 락보닀 속도가 훨씬 λΉ λ₯΄κ²Œ μΈ‘μ •λ˜μ—ˆλ‹€. μ™œ κ·ΈλŸ°κ°€ μƒκ°ν•΄λ³΄λ‹ˆ ν˜„μž¬ ν™˜κ²½μ€ 단일 μ„œλ²„μ—μ„œ μ‹€ν–‰ μ€‘μ΄μ–΄μ„œ RedisκΉŒμ§€ λ‹€λ…€μ˜€λŠ” μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•˜μ—¬ 비관적 락이 더 λΉ λ₯Έ κ²ƒμœΌλ‘œ 생각할 수 μžˆμ—ˆλ‹€.
ν•˜μ§€λ§Œ λ°°ν¬κΉŒμ§€ κ³ λ €ν•œλ‹€λ©΄ 비관적 λ½λ§ŒμœΌλ‘œλŠ” λ™μ‹œμ„±μ„ μ œμ–΄ν•  수 μ—†λŠ” μƒν™©μ΄μ—ˆλ‹€. κ·Έλž˜μ„œ μΆ”κ°€μ μœΌλ‘œ μ–΄λ–€ λ°©λ²•μœΌλ‘œ λ™μ‹œμ„±μ„ μ œμ–΄ν•  수 μžˆλŠ”μ§€ μ°Ύμ•„λ³΄μ•˜κ³ , λΆ„μ‚° ν™˜κ²½μ—μ„œλŠ” 비관적 락 + λ©”μ‹œμ§€ 큐λ₯Ό ν™œμš©ν•  수 μžˆλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€. μ„ μ°©μˆœ 할인 쿠폰 λ°œκΈ‰μ€ μ‹€μ‹œκ°„μ„±μ΄ μ€‘μš”ν•˜μ˜€μ§€λ§Œ 비관적 락 + λ©”μ‹œμ§€ νλŠ” μ‹€μ‹œκ°„μ„±μ΄ 보μž₯되기 νž˜λ“€μ–΄ μ΅œμ’…μ μœΌλ‘œ Redisson 락을 ν™œμš©ν•˜λŠ” κ²ƒμœΌλ‘œ κ²°μ •ν•˜μ˜€λ‹€.

κ·Έ λ’€μ—λŠ” 인증/인가 λΆ€λΆ„μ—μ„œ UNAUTHORIZED, FORBIDDEN κ΄€λ ¨ μ˜ˆμ™Έ 처리의 λ°˜ν™˜ 값이 HTML둜 λ°˜ν™˜λ˜μ–΄ 값을 μ•Œμ•„λ³Ό 수 μ—†μ–΄μ„œ λ°˜ν™˜κ°’μ„ μˆ˜μ •ν•˜λŠ” μž‘μ—…μ„ μ§„ν–‰ν–ˆλ‹€.
각각 상황에 맞게 값이 μ˜¬λ°”λ₯΄κ²Œ λ°˜ν™˜λ  수 μžˆλ„λ‘ μˆ˜μ •ν–ˆκ³ , ν…ŒμŠ€νŠΈν•œ κ²°κ³Ό λ¬΄μ—‡μœΌλ‘œ μΈν•œ μ—λŸ¬μΈμ§€ 확인할 수 μžˆμ—ˆλ‹€.

 

πŸ’‘ μƒˆλ‘­κ²Œ μ•Œκ²Œ 된 λ‚΄μš©μ€ 뭐가 μžˆλ”λΌ..?!

λ©”μ‹œμ§€ 큐 + 비관적 락

βœ… μž₯점: 높은 μ²˜λ¦¬λŸ‰, μž¬μ‹œλ„ κ°€λŠ₯, μž₯μ•  볡원λ ₯ 우수
❌ 단점: 비동기 처리둜 μΈν•œ μ‹€μ‹œκ°„μ„± λΆ€μ‘±, 큐 ꡬ성 및 λ³΅μž‘λ„ 증가

Redisson λΆ„μ‚° 락

βœ… μž₯점:
Redis 기반 λΆ„μ‚° 락으둜 μ„œλ²„ κ°„ μ •ν•©μ„± μœ μ§€
μš”μ²­ μ‹œμ μ— μ¦‰μ‹œ 락 νšλ“ → λ°”λ‘œ 응닡 κ°€λŠ₯ (μ‹€μ‹œκ°„μ„± 우수)
락 λ²”μœ„(key)λ₯Ό 자유둭게 μ •μ˜ν•  수 μžˆμ–΄ μœ μ—°ν•œ μ œμ–΄ κ°€λŠ₯
❌ 단점: Redis I/O μ˜€λ²„ν—€λ“œ, TTL μ„€μ • 및 락 κ²½ν•© μ‹œ μ„±λŠ₯ μ €ν•˜ κ°€λŠ₯μ„±

 

πŸ—“οΈ 내일은 뭐 ν•˜μ§€?!

βœ”οΈ memberId λ°›μ•„μ˜€λŠ” 방법 μˆ˜μ •
βœ”οΈ API λͺ…μ„Έμ„œ μΆ”κ°€ μž‘μ„± 및 μˆ˜μ •
βœ”οΈ JWT에 λ¦¬ν”„λ ˆμ‰¬ 토큰 μΆ”κ°€
βœ”οΈ μš΄λ™
βœ”οΈ TIL μž‘μ„±