์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

์žฌ๊ณ ์‹œ์Šคํ…œ์œผ๋กœ ์•Œ์•„๋ณด๋Š” ๋™์‹œ์„ฑ์ด์Šˆ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

๋™์‹œ์„ฑ ์ด์Šˆ๋ž€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐฑ์—”๋“œ, ์›น ๊ฐœ๋ฐœ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ
๋ฐฐ์›Œ์š”!

  • ๋™์‹œ์„ฑ ์ด์Šˆ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๋™์‹œ์„ฑ ์ด์Šˆ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋™์‹œ์„ฑ ์ด์Šˆ ์ฒ˜๋ฆฌ๋„ ์ž์‹ ์žˆ๊ฒŒ! 
๊ฐ„๋‹จํ•œ ์žฌ๊ณ  ์‹œ์Šคํ…œ์œผ๋กœ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์›Œ๋ณด์„ธ์š”.

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด 
๊ผญ ์•Œ์•„์•ผ ํ•  ๋™์‹œ์„ฑ ์ด์Šˆ ๐Ÿšฉ

๋™์‹œ์„ฑ ์ด์Šˆ๋ฅผ ์•„์‹œ๋‚˜์š”? ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋™์‹œ์„ฑ์„ ๊ณ ๋ คํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐ˜๋“œ์‹œ ํ•  ์ค„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ง‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋™์‹œ์„ฑ ์ด์Šˆ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ์ฑ„๋กœ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์ด ์ค‘์š”ํ•œ ์ƒํ™ฉ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜์—์„œ๋Š” ๋™์‹œ์„ฑ ์ด์Šˆ๊ฐ€ ๋ฌด์—‡์ด๊ณ , ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์žฌ๊ณ  ์‹œ์Šคํ…œ์„ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ๋™์‹œ์„ฑ ์ด์Šˆ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ์ž๋ฐ”(Java)์™€ ์Šคํ”„๋ง(Spring)์„ ๋ง‰ ๋—€ ์ดˆ๋ณด ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ๋„์›€์ด ๋˜๊ณ ์ž ์ด๋ฒˆ ๊ฐ•์˜๋ฅผ ์ œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•จ๊ป˜ ์•Œ์•„๊ฐ€๋ณผ๊นŒ์š”?

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค ๐Ÿ’ก

๊ฒŒ์‹œํŒ์€ ๋งŒ๋“ค์–ด๋ณด์•˜์ง€๋งŒ, ์‹ค๋ฌด ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์—๋Š” ์–ด๋–ค ๊ฑธ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์€ ๋ถ„ 

์žฌ๊ณ ์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์ด ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•œ ๋ถ„


3-Step์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” 
์žฌ๊ณ  ์‹œ์Šคํ…œ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ!

DB๋ž‘ ์‹ค์ œ ์ƒํ’ˆ ์žฌ๊ณ  ์ˆซ์ž๊ฐ€ ์•ˆ ๋งž์•„์š”. 
์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ข‹์„๊นŒ์š”?

๋™์‹œ์„ฑ ๋ฌธ์ œ(Concurrency Issue)

๋ฌธ์ œ ํ•ด๊ฒฐ #1
Application Level

Application ๋ ˆ๋ฒจ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

Synchronized ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ

๋ฌธ์ œ ํ•ด๊ฒฐ #2
Database Lock

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” Lock์„ ์ด์šฉํ•˜์—ฌ ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•ด ๋ด…๋‹ˆ๋‹ค. 

  • Pessimistic Lock (๋น„๊ด€์  ๋ฝ)
  • Optimistic Lock (๋‚™๊ด€์  ๋ฝ)
  • Name Lock (๋„ค์ž„ ๋ฝ)

Pessimistic Lock ์‚ฌ์šฉ

๋ฌธ์ œ ํ•ด๊ฒฐ #3
Redis Distributed Lock

Redis(๋ ˆ๋””์Šค)์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•ด ๋ด…๋‹ˆ๋‹ค.

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋น„๊ต
  • Redis Cli๋ฅผ ํ†ตํ•œ ๋ช…๋ น์–ด ์‹ค์Šต
  • Lettuce ํ™œ์šฉํ•˜๊ธฐ
  • Redisson ํ™œ์šฉํ•˜๊ธฐ

Lettuce, Redission ์‚ฌ์šฉ


Q&A๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š” ๐Ÿ’ฌ

Q. ์ด์ œ ์ž๋ฐ”(Java)๋ฅผ ๋‹ค ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋ฅผ ๋“ค์–ด๋„ ๋ ๊นŒ์š”?

์ด ๊ฐ•์˜๋Š” ์Šคํ”„๋ง(Spring)์„ ์ด์šฉํ•˜์—ฌ ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค์–ด๋ณด์‹  ๋ถ„๋“ค์—๊ฒŒ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ง์œผ๋กœ ๊ฒŒ์‹œํŒ์„ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด์‹  ํ›„์— ๋“ค์œผ์‹œ๋Š” ๊ฑธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

Q. ์ด ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด ๋™์‹œ์„ฑ ์ด์Šˆ๋ฅผ ์ „๋ถ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋‚˜์š”?

์ƒํ™ฉ๋งˆ๋‹ค ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ถ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋™์‹œ์„ฑ ์ด์Šˆ๊ฐ€ ๋ฌด์—‡์ด๊ณ , ์–ด๋–ค ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š”์ง€๋ฅผ ๋ฐฐ์šฐ๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋”ฐ๋ผ ์‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ๋ฅด์‹ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Q. Node.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋˜ ํ˜„์ง์ž์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋ฅผ ๋“ค์–ด๋„ ๋ ๊นŒ์š”?

์Šคํ”„๋ง์— ํŠนํ™”๋œ ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”๋ฅผ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋“ค์œผ์…”๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ๋™์‹œ์„ฑ ์ด์Šˆ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„

  • ๋™์‹œ์„ฑ ์ด์Šˆ๋Š” ๋ฌด์—‡์ธ์ง€ ์•Œ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„

  • Spring์„ ์ด์šฉํ•˜์—ฌ ๊ฒŒ์‹œํŒ์„ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋งŒ๋“ค์–ด๋ณด์‹  ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Java

  • Spring

  • Spring Data Jpa

์•ˆ๋…•ํ•˜์„ธ์š”
์ตœ์ƒ์šฉ์ž…๋‹ˆ๋‹ค.

4,963

๋ช…

์ˆ˜๊ฐ•์ƒ

354

๊ฐœ

์ˆ˜๊ฐ•ํ‰

277

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

2

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”. ์ง€์‹๊ณต์œ ์ž ์ตœ์ƒ์šฉ์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ์˜คํ”ˆ์†Œ์Šค์— ๊ธฐ์—ฌํ•œ ๊ฒฝํ—˜์ด ์žˆ๋Š” ํ˜„์ง ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

- Spring Data Mongo Contributor
- querydsl Contributor
- grpc-kotlin Contributor
- ksp Contributor
- mybatis Contributor

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

18๊ฐœ โˆ™ (1์‹œ๊ฐ„ 8๋ถ„)

๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!

โ‚ฉ19,800