Dev-Kyuu
article thumbnail

์‹ค์ „์— ๋“ค์–ด์˜ค๋ฉด์„œ ์ฒ˜์Œ์œผ๋กœ ๊ฒช์–ด๋ณด๊ณ  ๋งŽ์ด ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์ธ ๋™์‹œ์„ฑ ์ œ์–ด ๐Ÿค”

์–ด๋–จ๋•Œ ๋™์‹œ์„ฑ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ์ œ์–ดํ•ด์•ผํ• ๊นŒ?!์— ๋Œ€ํ•ด ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์ด ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.


๋™์‹œ์„ฑ ์ œ์–ด ์™œ ํ•„์š”ํ•œ๋ฐ? ๐Ÿ’

 

ํ•€ํ…Œ์ด๋ธ”์€ ์˜ˆ์•ฝ๊ณผ ์Šคํ† ์–ด ์ •๋ณด ์กฐํšŒ ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, 

์ด์ค‘์—์„œ ๋Œ€๊ธฐ์ž ๋“ฑ๋ก๊ณผ ์Šคํ† ์–ด ์ •๋ณด ๊ฐฑ์‹  ๋ถ€๋ถ„์—์„œ ๋™์‹œ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 

๋™์‹œ์„ฑ ์˜ค๋ฅ˜๋Š” ์–ด๋– ํ•œ ๊ณต์œ  ์ž์›์— ๋™์‹œ์— ์ž‘์—…์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ(insert, update, delete ๋“ฑ) ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋’ค์ฃฝ๋ฐ•์ฃฝ์ด ๋˜๋ฉด์„œ

์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋Š”๊ฒƒ์ด์˜€๋Š”๋ฐ ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜๋“ค์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์–ด์•ผํ–ˆ๋‹ค.

 


๊ทธ๋Ÿผ ๊ณต์œ ์ž์›์„ ์“ฐ๋Š”๊ณณ์—๋Š” ๋‹ค Lock์„ ๊ฑธ๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋‹ˆ์•ผ? ๐Ÿ™…๐Ÿป

 

๋™์‹œ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์— ๋ชจ๋‘ Lock์„ ๊ฑธ์–ด์„œ ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•œ๋‹ค๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ ๊ฒƒ์ด๊ณ , Lock์— ๋Œ€ํ•œ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ• ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๊ผญ ํ•„์š”ํ•œ ๋ถ€๋ถ„์—๋งŒ Lock์„ ๊ฑธ๋„๋ก ํ•ด์•ผํ•˜๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ์•Œ๋งž๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ ์šฉํ•ด์•ผํ•œ๋‹ค.


๊ธฐ์ˆ ์  ์„ ํƒ  โœ…

๐Ÿ”ป ๋น„๊ด€์ ๋ฝ
: ํŠธ๋žœ์žญ์…˜์˜ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์ž์›์— ์ ‘๊ทผ์‹œ ๋ฝ์„ ๊ฑธ๊ณ , ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•จ

 

1. Shared Lock

  • ์ ‘๊ทผํ•œ ํŠธ๋žœ์žญ์…˜์ด ์ž‘์—…์ค‘์ผ ๋•Œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ๋Š” ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , Exclusive Lock ์ ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

2. Exclusive Lock

  • ์ ‘๊ทผํ•œ ํŠธ๋žœ์žญ์…˜์ด ์ž‘์—…์ค‘์ผ ๋•Œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ๊ฐ€ ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  Shared/Exclusive Lock ์ ์šฉ์ด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅ
public interface BoardRepository extends JpaRepository<Board, Long> {

    @Lock(LockModeType.PESSIMISTIC_WRITE)
    @Query("select b from Board b where b.id = :id")
    Board findByIdForUpdate(Long id);
}

*/ LockMode ์ข…๋ฅ˜

LockModeType.PESSIMISTIC_WRITE
- ์ผ๋ฐ˜์ ์ธ ์˜ต์…˜. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์“ฐ๊ธฐ ๋ฝ
- ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ๊ธฐ๋„ ์“ฐ๊ธฐ๋„ ๋ชปํ•จ. (Exclusive lock)

LockModeType.PESSIMISTIC_READ
๋ฐ˜๋ณต ์ฝ๊ธฐ๋งŒํ•˜๊ณ  ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ์šฉ๋„๋กœ ๋ฝ์„ ๊ฑธ ๋•Œ ์‚ฌ์šฉ
๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ๊ธฐ๋Š” ๊ฐ€๋Šฅํ•จ. (Shared Lock)

LockModeType.PESSINISTIC_FORCE_INCREMENT
Version ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋น„๊ด€์  ๋ฝ

3. ์žฅ์ ๊ณผ ๋‹จ์ :
์ถฉ๋Œ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ๋กค๋ฐฑ์˜ ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ˆ˜์ค€์ด ๋งค์šฐ ๋†’์Œ!


๐Ÿ”ป  ๋‚™๊ด€์ ๋ฝ:

ํŠธ๋žœ์žญ์…˜์ด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์„๊ฒƒ์ด๋ผ๋Š” ๊ฐ€์ •์„ ํ•˜์—ฌ ์ถฉ๋Œ์„ ๋ง‰์ง€์•Š๊ณ  ์ถฉ๋Œ์ด ๋‚œ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๋ฉด ๊ทธ๋•Œ ์ฒ˜๋ฆฌ
=> version์˜ ์ƒํƒœ๋ฅผ ๋ณด๊ณ  ์ถฉ๋Œ์„ ํ™•์ธํ•˜๋ฉฐ ์ถฉ๋Œ์ด ํ™•์ธ๋œ ๊ฒฝ์šฐ Rollback ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ

@Entity
public class Board {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Version// ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ๋งˆ๋‹ค ๋ฒ„์ „์ด ์ฆ๊ฐ€ํ•จprivate Long version;
}

1. ์žฅ์ ๊ณผ ๋‹จ์ 
: ์žฆ์€ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋กค๋ฐฑ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋น„์šฉ(์š”์ฒญ์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋กค๋ฐฑ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•จ) ์ด ๋งŽ์ด ๋“ค์–ด ์†ํ•ด ๋ฐœ์ƒ
: ํŠธ๋žœ์žญ์…˜์„ ์ปค๋ฐ‹ํ•˜๊ธฐ์ „์—๋Š” ์ถฉ๋Œ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์—†์Œ
: ์ถฉ๋Œ์ด ๋‚˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ๋™์‹œ ์š”์ฒญ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ์ข‹์Œ

 


๐Ÿ”ป Synchronized :

  • Synchronized๋ฅผ ๋ฉ”์†Œ๋“œ์— ๋ช…์‹œํ•ด์ฃผ๋ฉด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์Šค๋ ˆ๋“œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.
  • Java์—์„œ ์ง€์›ํ•˜๋Š” synchronized๋Š”, ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋“ค์€ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ๋ง‰์•„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

 

๐Ÿงจ  Synchronized์˜ ๋ฌธ์ œ์ 

  • Java์˜ Sychronized๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ๋งŒ ๋ณด์žฅ์ด ๋œ๋‹ค.
  • ์ฆ‰, ์„œ๋ฒ„๊ฐ€ 1๋Œ€์ผ๋•Œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ์„œ๋ฒ„๊ฐ€ 2๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋ง‰์„ ์ˆ˜ ์—†๋‹ค.

⇒ Synchronized๋Š” ์šฐ๋ฆฌ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ(์ด์ค‘ํ™” ํ™˜๊ฒฝ)์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.


๐Ÿ”ป ReentrantLock

  • Java์˜ ์ œ์ผ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋ฒ•์ธ synchronized lock์€ ๊ฒ€์ƒ‰ ์‹œ synchronized block ์— ์ง„์ž… ๋ฐ ํƒˆ์ถœ ์ž์ฒด์— ๋น„์šฉ์ด ์†Œ๋ชจ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚จ๋ฐœํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ƒ์— ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ณ , ์„ธ์„ธํ•œ ์ž‘์—…(ํŠน์ • ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ , ๊ทธ ์•ˆ์— ์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ๋  ๊ฒฝ์šฐ ํŒจ์Šค ํ˜น์€ lock์„ ์žก๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅ ๋“ฑ) ๋˜ํ•œ ์–ด๋ ค์›€์ด ์žˆ๋‹ค.
  • Syncronized๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋‚˜์˜ Thread๊ฐ€ ์ƒํƒœ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์—†๊ณ , Syncronized ๊ตฌ๋ฌธ์„ ๋งˆ์ฃผํ–ˆ์„ ๋•Œ ๋ˆ„๊ตฐ๊ฐ€ ํ•ด๋‹น ๊ฐ์ฒด์˜ Locking์„ Release ํ•˜๊ธฐ๊นŒ์ง€ ๋ฌดํ•œํžˆ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.
  • ReentrantLock์˜ ๊ฒฝ์šฐ ์œ„์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜์—ฌ ๋น„๊ต์  ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๐Ÿงจ  ReentrantLock์˜ ๋ฌธ์ œ์ 

  • Synchronized์™€ ๋™์ผํ•˜๊ฒŒ ReentrantLock๋„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ง„์ž…ํ•˜๋Š”๊ฒƒ์„ ๋ง‰๋Š”๊ฒƒ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ ,
  • ๋‹ค์ˆ˜์˜ ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜๊ณ  ์žˆ์„ ๋•Œ ๊ฐ ์„œ๋ฒ„์˜ ์Šค๋ ˆ๋“œ์˜ ๋™์‹œ ์ ‘๊ทผ์€ ๋ง‰์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ ์„œ๋น„์Šค์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿ”ป Redisson Lock

  • Redisson Client์˜ ๋ถ„์‚ฐ๋ฝ ๊ธฐ๋ฒ• :
    • Lock์— ํƒ€์ž„์•„์›ƒ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋ฌดํ•œ์ • ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋น ์งˆ ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์ด ์—†์Œ
    • pub/sub๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ•€๋ฝ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ<aside> ๐ŸŒŸ pub/sub ๊ธฐ๋Šฅ์„ ์ด์šฉํ•œ Redisson์˜ Lock ํš๋“ ํ”„๋กœ์„ธ์Šค2.1 ๋ฝ ํš๋“์— ์‹คํŒจํ•˜๋ฉด ๋‹ค์‹œ ๋ฝ ํ•ด์ œ ๋ฉ”์„ธ์ง€๋ฅผ ๊ธฐ๋‹ค๋ฆผ 2.2 ํƒ€์ž„์•„์›ƒ์‹œ๊นŒ์ง€ ์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ˜๋ณตํ•˜๋‹ค๊ฐ€ ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ฝ ํš๋“์— ์‹คํŒจํ–ˆ์Œ์„ ์•Œ๋ฆผ
    • </aside>
    • 1. tryLock์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ฝ ํš๋“์— ์„ฑ๊ณตํ•˜๋ฉด True๋ฅผ ๋ฐ˜ํ™˜ 2. Pubsub๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ”์„ธ์ง€๊ฐ€ ์˜ฌ ๋•Œ ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ๋ฝ์ด ํ•ด์ œ๋˜์—ˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ์˜ค๋ฉด ๋Œ€๊ธฐ๋ฅผ ํ’€๊ณ  ๋‹ค์‹œ ๋ฝ ํš๋“์„ ์‹œ๋„
    • ⇒ ๋ฝ์ด ํ•ด์ œ๋˜๋ฉด ๋ฝ์„ subscribeํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฝ์ด ํ•ด์ œ๋˜์—ˆ๋‹ค๋Š” ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๋“ค์€ ๋ฝ ํš๋“ ํ™•์ธ ์š”์ฒญ์„ redis๋กœ ๋ณด๋‚ด์ง€ ์•Š์Œ

โœ… Redisson์œผ๋กœ ์„ ํƒํ•œ ์ด์œ 

  • Redisson์€ TryLock ๋ฉ”์„œ๋“œ์— ํƒ€์ž„์•„์›ƒ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ ⇒ ํƒ€์ž„์•„์›ƒ์„ ์„ค์ •ํ•˜์—ฌ ๋ฐ๋“œ๋ฝ์„ ๋ฐฉ์ง€
  • ์Šคํ•€๋ฝ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์„œ Redis์— ๋งŽ์€ ๋ถ€ํ•˜๋ฅผ ๊ฐ€ํ•˜์ง€ ์•Š์Œ ⇒ pub/sub(๋ฐœํ–‰/๊ตฌ๋…) ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜์—ฌ ์Šคํ•€๋ฝ์„ ์‚ฌ์šฉํ•˜์ง€์•Š์Œ
  • ๋‹ค์ˆ˜์˜ ์„œ๋ฒ„์˜ ํ™˜๊ฒฝ์—์„œ ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด์„œ DB Lock ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ์•ผํ–ˆ๊ณ  Redis๋ฅผ ์ด๋ฏธ ๊ตฌ์ถ•ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๋กœ ํ•จ

Lock ์™ธ์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ํ•ด๊ฒฐํ• ์ˆ˜๋Š” ์—†์„๊นŒ? ๐Ÿ“—

 

Spring Batch + Scheduler๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ์—…๋ฐ์ดํŠธ ์ฒ˜๋ฆฌ!

  • ๋ฆฌ๋ทฐ ๋“ฑ๋ก์‹œ ์Šคํ† ์–ด ์ •๋ณด๊ฐ€ ๊ฐฑ์‹ ๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค
  • ๋งค๋ฒˆ ๋ฆฌ๋ทฐ๊ฐ€ ์ž‘์„ฑ๋  ๋•Œ ๋งˆ๋‹ค ์Šคํ† ์–ด ์ •๋ณด๊ฐ€ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋  ๊ฒฝ์šฐ ๋ฆฌ๋ทฐ ์ž‘์„ฑ ํ–‰์œ„๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์„œ๋น„์Šค์— ๋ถ€๋‹ด ๊ณผ์ค‘
  • ๋ฆฌ๋ทฐ ๋“ฑ๋ก ์‹œ ๋ฝ์„ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ์—…๋ฐ์ดํŠธ๊ฐ€ ๋œ ํ•ญ๋ชฉ๋“ค์„ Redis Cache์— ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ์ผ๊ด„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝ

 

1๏ธโƒฃ. ๋ฆฌ๋ทฐ ์ž‘์„ฑ ์‹œ Database์— ๋ฆฌ๋ทฐ๋ฅผ ์ €์žฅํ•˜๊ณ , Redis Cache์—๋Š” ๋ฆฌ๋ทฐ๊ฐ€ ์ž‘์„ฑ๋œ ์Šคํ† ์–ดID๋ฅผ ์ €์žฅํ•œ๋‹ค

 

2๏ธโƒฃ. ์ผ์ •์‹œ๊ฐ„๋งˆ๋‹ค ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋™์ž‘ํ•˜๋ฉด์„œ Redis Cache์— ์ €์žฅ๋œ ์Šคํ† ๋ฆฌ ID๋ฅผ ์ฝ๊ณ , ๋ฐฐ์น˜ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ์Šคํ† ์–ด ์ •๋ณด๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.
https://www.notion.so/With-Redis-6ecbacdfa5fc450081528e56ef5e1d83

 

์Šคํ† ์–ด ์ •๋ณด ๊ฐฑ์‹  ๋ฐฉ๋ฒ•(With.Redis)โ“

์ž‘์„ฑ์ž : kyuu ๐Ÿ‘€

www.notion.so

3๏ธโƒฃ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ •๋ณด๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉด Logstash๊ฐ€ ๋ณ€๊ฒฝ๋œ ์ •๋ณด๋ฅผ ์ถ”์ ํ•˜์—ฌ Elastic Search์— ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

 

 


 ๊ทธ ์™ธ ๐Ÿ˜Ž

์ด๋ฐ–์—๋„ ๋™์‹œ์„ฑ ์ด์Šˆ ๊ด€๋ จ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ ๋…ธ์…˜์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”~! 

 

https://www.notion.so/PIN-TABLE-721fb45b91454dda8255e0de4ac757ca

 

[PIN-TABLE] ๋™์‹œ์„ฑ ์ œ์–ด

๋„์ž… ์ด์œ 

www.notion.so

 

profile

Dev-Kyuu

@kyuu_ng

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!