Skip to content

Godok-Project/Godok

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Godok_concept_1

Godok ๐Ÿ“š

1000๋งŒ ๋„์„œ ๋ฐ์ดํ„ฐ์˜ ๋‹ค์–‘ํ•œ ํ•„ํ„ฐ ๊ฒ€์ƒ‰๊ณผ ์ฃผ๋ฌธ์ด ๊ฐ€๋Šฅํ•œ ๋„์„œ ์ด์ปค๋จธ์Šค

ํ”„๋กœ์ ํŠธ ์„ค๋ช…

  • ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ : Godok(๊ณ ๋…, Go่ฎ€)
  • ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ
    • ๊ฒ€์ƒ‰ ์ตœ์ ํ™” : 10,000,000 ๊ฑด ์ด์ƒ์˜ ์ฑ… ์ •๋ณด๋ฅผ ๋‹ค์–‘ํ•œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณต
    • ๋™์‹œ์„ฑ ์ œ์–ด : ๋™์ผํ•œ ์ฑ…์— ๋Œ€ํ•ด ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฃผ๋ฌธ ๋ฐœ์ƒ ์‹œ ๋ˆ„๋ฝ ์—†๋Š” ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ
    • ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ
    • ๊ธฐ๊ฐ„๋ณ„ ๋žญํ‚น ์„œ๋น„์Šค : ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ํŒ๋งค๋œ ์ฑ… ์ •๋ณด๋ฅผ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณตํ•˜์—ฌ ์ฑ… ์ถ”์ฒœ
  • ํ”„๋กœ์ ํŠธ ๋‘˜๋Ÿฌ๋ณด๊ธฐ

Crew

- ์ด๋ฆ„ ์ฃผํŠน๊ธฐ
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ์–‘์œค์„  https://github.com/hobambi
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ์ดํ˜„๋นˆ https://github.com/HBLEEEEE
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ์กฐ์„ฑ์žฌ https://github.com/ssungcohol
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ํ•œ์Šนํ˜„ https://github.com/gkstmdgus

๊ธฐ์ˆ ์Šคํƒ ๐Ÿ’ป

Application

Database

Infra

Test

Search

Communication

์•„ํ‚คํ…์ฒ˜ ๐Ÿ“

์•„ํ‚คํ…์ฒ˜_์‹ค์ „_v3

ERD ๐Ÿ“‚

ํŽผ์ณ๋ณด๊ธฐ
ERD Final

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๐Ÿ› ๏ธ

๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ๊ฐœ์„ 
  1. ์ผ๋ฐ˜์ธ๋ฑ์Šค - ํ•„ํ„ฐ์— index ์ ์šฉ ํ›„ ํ‚ค์›Œ๋“œ๋Š” like๋ฅผ ์ด์šฉํ•œ ๊ฒ€์ƒ‰
  • ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ์ง€ ์•Š์œผ๋ฉด ํ•„ํ„ฐ ์ ์šฉ ์‹œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ–ˆ๋‹ค. ํ•„ํ„ฐ์— ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋˜๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ ๋ชจ๋“  ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜๊ธฐ์—๋Š” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์—ˆ๋‹ค.
- ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ์—๋Š” ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค๋งŒ ์ ์šฉ์ด ๊ฐ€๋Šฅ

- ๋ชจ๋“  ํ•„ํ„ฐ๋ฅผ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋กœ ๋ฌถ์œผ๋ฉด ๊ธฐ๋Šฅ์ด ํ•œ์ •

- like๋กœ ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ 
  1. Full text ์ธ๋ฑ์Šค - title์— Fulltext ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•œ ๊ฒ€์ƒ‰
  • Mysql์˜ Fulltext index๋ฅผ ์ ์šฉํ•ด ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋ ค๊ณ  ์‹œ๋„. Fulltext index๋Š” ์—ญ์ƒ‰์ธ ๋ฐฉ์‹์œผ๋กœ ์ƒ‰์ดํ•˜๋ฏ€๋กœ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ์‹œ ๋น ๋ฅธ ์†๋„๋ฅผ ๋ณด์—ฌ์ฃผ์ง€๋งŒ, ํ•œ๊ณ„์ ๋„ ๋ช…ํ™•.
- ๊ธฐ๋ณธ parser์˜ ํ•œ๊ณ„

- ํ•„ํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ ์šฉ ์‹œ ๋Š๋ ค์ง€๋Š” ํ˜„์ƒ ๋ฐœ์ƒ

- ์ •ํ™•๋„ ๋ฌธ์ œ ๋ฐœ์ƒ
  1. Elastic Search - Mysql ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•˜์—ฌ ๊ฒ€์ƒ‰ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉ
- ํ•œ๊ธ€ ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ (Nori Tokenizer)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ title, author๋ฅผ ์—ญ์ƒ‰์ธ

  - Ngram, Stop-word๋ณด๋‹ค ์„ธ๋ฐ€ํ•œ ํ•œ๊ธ€ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•ด์กŒ๊ณ  ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์˜ ์ •ํ™•๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ”๋‹ค.

- ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ์— ์—ฌ๋Ÿฌ ์ธ๋ฑ์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  - ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ํ–ฅ์ƒ  
๋™์‹œ์„ฑ ์ œ์–ด
  1. Optimistic vs Pessimistic
  • Optimistic
- NONE :ย ๋ณ„๋„์˜ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ Entity์— @Version์ด ์ ์šฉ๋œ ํ•„๋“œ๋งŒ ์žˆ์œผ๋ฉด ๋‚™๊ด€์  ์ž ๊ธˆ์ด ์ ์šฉ

- OPTIMISTIC(read) :ย Entity ์ˆ˜์ • ์‹œ์—๋งŒ ๋ฐœ์ƒํ•˜๋Š” ๋‚™๊ด€์  ์ž ๊ธˆ์ด ์ฝ๊ธฐ ์‹œ์—๋„ ๋ฐœ์ƒํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.์ฝ๊ธฐ์‹œ์—๋„ ๋ฒ„์ „์„ ์ฒดํฌํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Œ์„ ๋ณด์žฅ

- OPTIMISTIC_FORCE_INCREMENT(write) : ๋‚™๊ด€์  ์ž ๊ธˆ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ๊ฐ•์ œ๋กœ ์ฆ๊ฐ€ ์‹œํ‚ค๋Š” ์˜ต์…˜
  • Pessimistic
- PESSIMISTIC_READ : dirty read๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๋•Œ๋งˆ๋‹ค ๊ณต์œ  ์ž ๊ธˆ(Shared Lock)์„ ํš๋“ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ย UPDATE,ย DELETEย ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- PESSIMISTIC_WRITE :ย ๋ฐฐํƒ€์  ์ž ๊ธˆ(Exclusive Lock)์„ ํš๋“ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œย READ,ย UPDATE,ย DELETEย ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ESSIMISTIC_FORCE_INCREMENT :ย ์ด ์ž ๊ธˆ์€ย PESSIMISTIC_WRITE์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ ํ•˜์ง€๋งŒย @Version์ด ์ง€์ •๋œ Entity์™€ ํ˜‘๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋˜์–ดย PESSIMISTIC_FORCE_INCREMENTย ์ž ๊ธˆ์„ ํš๋“ํ•  ์‹œ ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ ๋ฉ๋‹ˆ๋‹ค.
  • Optimistic๊ณผ Pessimistic ์‹คํ—˜ ๊ฒฐ๊ณผ
- ํ˜„์žฌ ์„œ๋น„์Šค์—์„œ๋Š” PESSIMISTIC_WRITE๋งŒ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค.

- Optimistic์€ ์„ฑ๋Šฅ์€ ์ข‹์ง€๋งŒ ์ฃผ๋ฌธ์ด ํญ์ฃผํ•˜๋Š” ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ ์ €์žฅํ•œ ๋ฒ„์ „ ๊ฐ’๊ณผ ํŠธ๋žœ์žญ์…˜์ด ๋๋‚˜๊ณ  ๋‚œ ํ›„ ์ฒดํฌํ•œ ๋ฒ„์ „ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ์ด ๋•Œ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์ง„ํ–‰ํ•˜๋Š” ์„œ๋น„์Šค์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

- ๋˜ํ•œ Force_Increment ์˜ต์…˜์˜ ๊ฒฝ์šฐ ์ง€์›ํ•˜๋Š” DB์˜ ์ข…๋ฅ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋Š”๋ฐ, ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ mysql์—์„œ๋Š” ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

- PESSIMISTIC_READ๋Š” ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ • ์ค‘์ผ ๋•Œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ๊ธฐ๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ์‹คํ—˜์—์„œ๋Š” ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜๋“ค์ด ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

- ํ˜„์žฌ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—๋งŒ ์š”์ฒญ์ด ์žˆ์œผ๋‚˜, ์บ์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด Lock๋ฅผ ์ ์œ ํ•˜๊ณ , ์ตœ๋Œ€ ์ ์œ  ๊ฐ€๋Šฅ ์‹œ๊ฐ„๊ณผ ์ตœ๋Œ€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜์—ฌ DeadLock ์œ„ํ—˜์ด ์—†๋Š” Redisson ๋ถ„์‚ฐ๋ฝ์„ ์ถ”ํ›„ ์„œ๋น„์Šค ํ™•์žฅ์„ ๊ณ ๋ คํ•˜์—ฌ ์ ์šฉํ•˜์˜€๋‹ค.
  1. Redisson Distribution Lock ์ ์šฉ ๋ฌธ์ œ ๋ฐ
- ๋ฌธ์ œ

  - ํ˜„์žฌ lock์„ ์ ๊ฑฐํ•œ ์Šค๋ ˆ๋“œ์—์„œ lock์„ ํ•ด์ œํ•˜๊ณ , ํŠธ๋žœ์žญ์…˜์„ ์ข…๋ฃŒํ•˜๋ฉฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ commit
  
  - ๋‹ค์Œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์™„๋ฃŒ ์ „์— lock์„ ์ทจ๋“ํ•˜๊ณ  ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ
  
  - ์ฆ‰, ๋‚จ์€ ์žฌ๊ณ ๋Ÿ‰์ด ์ˆ˜์ •๋˜๊ธฐ ์ „์— ์žฌ๊ณ ๋Ÿ‰์„ ์ฝ์–ด์˜ค๋ฉฐ ๋™์‹œ์„ฑ ๋ฌธ์ œ ๋ฐœ์ƒ
  
- ํ•ด๊ฒฐ ๊ณผ์ •

  - ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ ์ดํ›„ lock์„ ํ•ด์ œํ•˜์—ฌ, ์ˆ˜์ •์ด ์™„๋ฃŒ ๋œ ํ›„ ๋‹ค์Œ ์Šค๋ ˆ๋“œ๊ฐ€ ์žฌ๊ณ ๋Ÿ‰์„ ์ฝ๋„๋กœ๊ณ  ํ•จ
  
  - ์žฌ๊ณ ๋Ÿ‰ ์ˆ˜์ • ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์ฃผ๋ฌธ ๋ฉ”์„œ๋“œ์—๋Š” ํŠธ๋žœ์žญ์…˜ ์—†์ด, ์žฌ๊ณ ๋Ÿ‰ ์ˆ˜์ • ๋ฉ”์„œ๋“œ์—๋งŒ ํŠธ๋žœ์žญ์…˜์„ ๊ฑธ์–ด์คŒ
  => ํŠธ๋žœ์žญ์…˜์„ ์ด์ค‘์œผ๋กœ ๊ฑธ์–ด์ค„ ๊ฒฝ์šฐ, ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜ commit ์‹œ์ ์ด ์™ธ๋ถ€ ํŠธ๋žœ์žญ์…˜ ์‹œ์ ์œผ๋กœ ํ†ต์ผ ๋˜๊ธฐ ๋•Œ๋ฌธ
  
- ํ•ด๊ฒฐ

  - DB ์ €์žฅ ๋ฉ”์„œ๋“œ์—๋งŒ @Transaction์„ ๋‚จ๊ฒจ, ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์ดํ›„ Lock์„ ํ•ด์ œํ•˜๊ฒŒ ํ•จ
์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค
  1. ํ˜„์žฌ ์„œ๋น„์Šค์—์„œ ์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜๊ฐ€ ์“ฐ์ด๋Š” ์š”์ฒญ
- ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์นดํ…Œ๊ณ ๋ฆฌ + ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ

- ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€์—์„œ ํ•„ํ„ฐ ์ ์šฉ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ํ•„ํ„ฐ ๊ฒ€์ƒ‰์„ ํ•˜๋Š” ๊ฒฝ์šฐ

- ํŽ˜์ด์ง€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ
  1. ํŽ˜์ด์ง• ๋ฌธ์ œ ๋ฐœ์ƒ
- ํ˜„์žฌ ํŽ˜์ด์ง• ๋ฐฉ์‹ = ์ปค์„œ ํŽ˜์ด์ง€๋„ค์ด์…˜

- Mysql๊ณผ ์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜์˜ ์ปค์„œ ๊ฐ’์ด ๋‹ฌ๋ผ ๋ฌธ์ œ ๋ฐœ์ƒ (์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‹ค๋ฆ„)

- ์ปค์„œ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ์ด๋™์‹œ์—๋Š” ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”
  1. ๋Œ€์ฒ˜ ๊ฐ€๋Šฅํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค - 2๊ฐ€์ง€
- ์–ด๋–ค ํŽ˜์ด์ง€์— ์žˆ๋˜์ง€ ๊ฐ„์— ์„œํ‚ท ์˜คํ”ˆ์‹œ 1ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•œ๋‹ค.

- ์š”์ฒญํ•œ ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์ปค์„œ ๊ฐ’์„ ๋ชจ๋‘ ์ฐพ์•„์™€์„œ ์ปค์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ต์ฒดํ•œ๋‹ค.
  1. ์„ ํƒ ๋ฐฉ๋ฒ• : ์ฒซ ๋ฒˆ์งธ ์‹œ๋‚˜๋ฆฌ์˜ค ์„ ํƒ๊ณผ ์ด์œ 
- ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์€ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด ์ ํ•ฉ

- ํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ ์„œ๋น„์Šค์—๋Š” ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„

- ์ด์œ  : Mysql์˜ ์†๋„
  - ์• ์ดˆ์— ์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜๋กœ ๋„˜์–ด๊ฐ„ ์ด์œ ๊ฐ€ Mysql์˜ ์†๋„์˜€๋‹ค. ๋งŽ์€ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜๋ฉด ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ๋„ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ๋ฌธ์ œ์˜€๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ•œ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์˜ ์ปค์„œ๋ฅผ ๋ชจ๋‘ ์ฐพ์•„์˜ค๋Š” ๋กœ์ง์„ Mysql์ด ํ•˜๋ฉด, ๊ฒฐ๊ณผ๋Š” ์•ˆ๋ด๋„ ํƒ€์ž„์•„์›ƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ํ•œ๋“ค ํด๋ผ์ด์–ธํŠธ๋Š” ํ•˜์—ผ์—†์ด ๋กœ๋”ฉ์ฐฝ์„ ๋ณด๋ฉฐ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
Batch
1. Batch ์„ค๊ณ„ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
- ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ์˜ ์ค‘์š”์„ฑ๊ณผ DB ์ ‘๊ทผ์„ฑ

  - DB์— ์ž์ฃผ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€์•Š๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค๋Š˜ ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ Redis์—์„œ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ 02์‹œ์— ์ผ๊ด„์ ์œผ๋กœ DB์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌ์ƒํ–ˆ๋‹ค.

  - ํ•˜์ง€๋งŒ ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋น„์Šค์—์„œ ๋งค์šฐ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํœ˜๋ฐœ์„ฑ์ด ๋†’์€ Redis์— ์ €์žฅํ•ด ๋‘๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค.

  - ๋”ฐ๋ผ์„œ redis์—๋Š” ๊ฐ€์žฅ ๋งŽ์ด ์ฐพ๊ฒŒ ๋˜๋Š” main ํŽ˜์ด์ง€์—์„œ ์–ด์ œ ํŒ”๋ฆฐ ์ฑ…๋“ค์— ๋Œ€ํ•œ ranking๋งŒ ๋„ฃ์–ด ๋‘๋Š” ๊ฒƒ์œผ๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค.

- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  - ํ˜„์žฌ๋Š” ๊ฐ€์งœ ์ฃผ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์–ด์ œ์˜ bestseller 1~8๋“ฑ๊นŒ์ง€ ๋“ค์–ด๊ฐ€๋‚˜, ์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋Š” ๊ทธ๋Ÿด ์ˆ˜ ์—†๋‹ค.

  - ๋”ฐ๋ผ์„œ ์–ด์ œ ํŒ”๋ฆฐ ์ฑ… ์ข…๋ฅ˜๊ฐ€ 8๊ถŒ ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ ๋ถ€์กฑํ•œ ์ฑ…๋“ค์„ ์ฑ„์›Œ ์ฃผ๋„๋ก ๊ตฌ์ƒํ•˜์˜€๋‹ค.
  1. Batch ์ ์šฉ ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ
- ๋ฌธ์ œ

  - summonRank()๋ผ๋Š” ๋ณต์žกํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ service์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š”๋ฐ, batch ๋กœ ๋นผ์ฃผ๊ณ  ์‹ถ์—ˆ์œผ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ•˜์˜€๋‹ค.

- ์›์ธ

  - @Transaction ์•ˆ์— batch๋ฅผ ๋„ฃ์„ ์ˆ˜ ๊ฐ€ ์—†๋‹ค. Jobrepository์˜ ๊ธฐ๋ณธ ์„ค์ •์ด ์™ธ๋ถ€ ํŠธ๋žœ์žญ์…˜์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  - batch ๋‚ด๋ถ€์—์„œ @Transactional์„ ๋ถ™์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ ๋งŒ์•ฝ ๋” ํฐ Transaction์•ˆ์— ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‚ด๋ถ€ transaction์ด ๋๋‚˜๋„ ์ปค๋ฐ‹์‹œ์ ์ด ๋„๋ž˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

- ํ•ด๊ฒฐ

  - ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” TransactionTemplate๊ฐ€ ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์„ ์ƒ์„ฑํ•˜๋„๋ก ๊ฐ•์ œํ•˜์—ฌ ์™ธ๋ถ€ ํŠธ๋žœ์žญ์…˜๊ณผ ๋ณ„๊ฐœ๋กœ ์ปค๋ฐ‹ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋ฐ๋“œ๋ฝ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์™ธ๋ถ€ ํŠธ๋žœ์žญ์…˜๊ณผ ๋‚ด๋ถ€ ํŠธ๋žœ์žญ์…˜์˜ StepExecution ์ƒํƒœ์˜ ์ผ๊ด€์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋  ์ˆ˜ ๋„ ์žˆ๋‹ค.

  - ๋”ฐ๋ผ์„œ Job ์‹คํ–‰ ์™ธ๋ถ€์—์„œ ์ž„์˜๋กœ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•œ ๊ฒƒ์ด๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •