Skip to content

πŸ” 낙관적/비관적/λΆ„μ‚° 락을 ν™œμš©ν•œ 쿠폰 μ‹œμŠ€ν…œ

Notifications You must be signed in to change notification settings

himitery/spring-coupon-practice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌱 Spring Coupon Practice 🌱

μŠ€ν”„λ§λΆ€νŠΈλ‘œ κ΅¬ν˜„ν•˜λŠ” 쿠폰 μ‹œμŠ€ν…œ (λ™μ‹œμ„± 이슈λ₯Ό 곁듀인)


Note

낙관적 락(Optimistic Lock), 비관적 락(Pessimistic Lock), λΆ„μ‚° 락(Distributed Lock)을 ν™œμš©ν•˜μ—¬

쿠폰 μ‹œμŠ€ν…œμ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ™μ‹œμ„± 문제λ₯Ό ν•΄κ²°ν•œλ‹€.


βœ… 문제 λΆ„μ„ν•˜κΈ°

1. 문제 μš”κ΅¬μ‚¬ν•­

  1. 편의점과의 제휴둜 총 100μž₯의 쿠폰을 λ°œκΈ‰ν•œλ‹€.
  2. 쿠폰 μ½”λ“œλŠ” 10자리의 λžœλ€ν•œ μ˜λŒ€μ†Œλ¬Έμžμ™€ 숫자둜 이루어진 λ¬Έμžμ—΄μ΄λ‹€.
  3. μ‚¬μš©μžλŠ” μ„ μ°©μˆœμœΌλ‘œ 쿠폰을 λ°œκΈ‰λ°›μ„ 수 μžˆλ‹€.
  4. 이미 쿠폰을 λ°œκΈ‰λ°›μ€ μ‚¬μš©μžκ°€ λ‹€μ‹œ λ°œκΈ‰μ„ μ‹œλ„ν•˜λ©΄ 기쑴의 쿠폰 μ½”λ“œλ₯Ό λ°˜ν™˜ν•œλ‹€.
  5. 100μž₯의 쿠폰이 λͺ¨λ‘ μ†Œμ§„λ˜λ©΄, μƒˆλ‘œμš΄ 쿠폰 λ°œκΈ‰ μš”μ²­μ— HTTP 404 응닡을 λ°˜ν™˜ν•œλ‹€.
  6. 쿠폰 λ°œκΈ‰ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λΆ„μ‚° ν™˜κ²½μ—μ„œ μž‘λ™ν•œλ‹€.

2. λ°œμƒ κ°€λŠ₯ν•œ 문제 상황

πŸ›‘ λ™μ‹œμ„± 이슈

  • 200λͺ…μ˜ μ‚¬μš©μžκ°€ λ™μ‹œμ— μš”μ²­ν•˜λ©΄, 100개 μ΄μƒμ˜ 쿠폰이 λ°œκΈ‰λ  κ°€λŠ₯성이 μžˆλ‹€.
    • 쿠폰 λ°œκΈ‰ 과정은 λ‹€μŒκ³Ό κ°™λ‹€:
      1. 쿠폰의 남은 개수λ₯Ό μ‘°νšŒν•œλ‹€.
      2. 남은 κ°œμˆ˜κ°€ 1개 이상이면, 쿠폰을 λ°œκΈ‰ν•œλ‹€.
    • ν•˜μ§€λ§Œ 200λͺ…μ˜ μ‚¬μš©μžκ°€ λ™μ‹œμ— 쿠폰의 남은 개수λ₯Ό μ‘°νšŒν•˜λ©΄, λͺ¨λ“  μš”μ²­μ΄ 남은 개수λ₯Ό 100개둜 μΈμ‹ν•˜μ—¬ 초과 λ°œκΈ‰μ΄ λ°œμƒν•  수 μžˆλ‹€.

🚨 μ„±λŠ₯ 이슈

  • μ‚¬μš©μžκ°€ 쿠폰을 λ°œκΈ‰λ°›μ•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 맀번 λ°μ΄ν„°λ² μ΄μŠ€ 쑰회 쿼리λ₯Ό λ°œμƒμ‹œν‚€λ©΄, λ°μ΄ν„°λ² μ΄μŠ€μ— κ³ΌλΆ€ν•˜κ°€ λ°œμƒν•  수 μžˆλ‹€.

βœ… 단계별 ν•΄κ²° λ°©μ•ˆ

πŸ”Ή λ™μ‹œμ„± 이슈 ν•΄κ²°

  1. 낙관적 락(Optimistic Lock) 적용
  2. 비관적 락(Pessimistic Lock) 적용
  3. λΆ„μ‚° 락(Distributed Lock) 적용

πŸ”Ή μ„±λŠ₯ μ΅œμ ν™”

  • μ‚¬μš©μžμ˜ 쿠폰 λ°œκΈ‰ 정보λ₯Ό Redis에 μΊμ‹±ν•˜μ—¬, λ°μ΄ν„°λ² μ΄μŠ€μ˜ 뢀담을 쀄인닀.

✨ κΈ°λŒ€ 효과

  • λ™μ‹œμ„± 문제 ν•΄κ²°: 낙관적/비관적/λΆ„μ‚° 락을 μ μš©ν•˜μ—¬ 초과 λ°œκΈ‰μ„ λ°©μ§€ν•œλ‹€.
  • μ„±λŠ₯ μ΅œμ ν™”: Redis 캐싱 ν™œμš©μœΌλ‘œ λ°μ΄ν„°λ² μ΄μŠ€ λΆ€ν•˜λ₯Ό 쀄인닀.
  • ν™•μž₯μ„± κ³ λ €: λΆ„μ‚° ν™˜κ²½μ—μ„œλ„ μ•ˆμ •μ μœΌλ‘œ 쿠폰 λ°œκΈ‰μ΄ κ°€λŠ₯ν•˜λ„λ‘ μ„€κ³„ν•œλ‹€.

About

πŸ” 낙관적/비관적/λΆ„μ‚° 락을 ν™œμš©ν•œ 쿠폰 μ‹œμŠ€ν…œ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published