๊ฐœ๋ฐœ๊ด€๋ จ

[ํšŒ๊ณ ] SSAFY ํŠนํ™” ํ”„๋กœ์ ํŠธ - Stock Of Galaxy

SunYerim 2025. 1. 28. 23:30

 

๐Ÿฅ‡ SSAFY 2ํ•™๊ธฐ ๋‘ ๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ(ํŠนํ™” ํ”„๋กœ์ ํŠธ) ์ตœ์šฐ์ˆ˜์ƒ ์ˆ˜์ƒ

์ด์œ ์šฐ๋ฆฌ ์„œ๋น„์Šค

๋‘๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์น˜๊ณ  ํšŒ๊ณ ํ•˜๋Š” ๊ธ€๋กœ ๊ฒฝํ—˜ํ•œ ๊ฒƒ๊ณผ ๋Š๋‚€์ ์„ ์ž์œ ๋กญ๊ฒŒ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค :)

์šฐ๋ฆฌํŒ€ ๊ฐœ๋ฐœ ์›์น™์ด์ž ์ œ ๊ฐœ๋ฐœ ์ฒ ํ•™์ธ '์ผ๋‹จ ๋ฐ”๋ณด๋ฉ์ฒญ์ด ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ์„ ๋๋‚ด์ž' ๋ฅผ ์•Œ๊ณ ๊ณ„์‹œ๋ฉด ๊ธ€ ์ฝ๋Š”๋ฐ ๋„์›€์ด ๋˜์‹ค ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ..

(์ผ๋‹จ ๊ธฐ๋Šฅ์ด ๊ตด๋Ÿฌ๊ฐ€๊ฒŒ ๊ฐœ๋ฐœ์„ ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒํ•œ ๋’ค์—, ์ตœ์ ํ™” ์ž‘์—…์„ ์œ„ํ•œ ๊ณ ๋ฏผ์„ ํ•ด๋ณด๊ณ  ์ด๋ฅผ ์ž‘์—…ํ•ด๋ณด์ž! ์ž…๋‹ˆ๋‹ค ใ…Žใ…Ž)

 

๋‚˜๋„ ์ฐธ .....ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ํ”„๋กœ์ ํŠธ ๋๋‚œ์ง€ 3๋‹ฌ ๋ฐ˜์ด ์ง€๋‚˜๊ฐ€๋Š”๋ฐ, ์ˆ˜๋ฃŒํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„๋“ค ์ƒ๊ฐํ•ด๋ณด๋ฉด์„œ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ ๋ฅผ ๊ฐ„๋‹จํžˆ๋ผ๋„ ๋‚จ๊ฒจ๋†”์•ผ๊ฒ ๋‹ค ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ๋” ์žŠํ˜€์ง€๊ธฐ์ „์— ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์ ์–ด๋ณด๋ คํ•ฉ๋‹ˆ๋‹ค ~

๊ณตํ†ตํ”„๋กœ์ ํŠธ๋•Œ๋„ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ  ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๊ณ , ์–ป์€ ๊ฒŒ ๋งŽ์•˜์—ˆ๋Š”๋ฐ ํŠนํ™”ํ”„๋กœ์ ํŠธ๋•Œ๋„ !! ์–ป์€ ๊ฒŒ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

ํ˜ผ์ž์„œ ๊ณ ๋ฏผํ•˜๊ณ  ์–ป์–ด๊ฐ„ ๊ฒƒ๋„ ๋งŽ์•˜์„ ๋ฟ๋”๋Ÿฌ, ์ธํ”„๋ผ ์ง€์‹์ด๋‚˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ (elk, prometheus)์™€ ๊ฐ™์€ ๊ฒƒ๋“ค๋„ ์ง์ ‘ ์ž‘์—…ํ•˜์ง„ ์•Š์•˜์ง€๋งŒ, ํŒ€์›๊ฐ„ ๊ธฐ์ˆ  ๊ณต์œ ๋ฅผ ํ•˜๊ฑฐ๋‚˜ ์ด์•ผ๊ธฐ๋ฅผ ๋งŽ์ด ํ•˜๋ฉด์„œ ์ง์ ‘ ๊ฐœ๋ฐœํ•œ ๊ฒƒ ๋ชป์ง€์•Š๊ฒŒ ๋งŽ์ด ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ์ธํ”„๋ผ ํ™˜๊ฒฝ๊นŒ์ง€ ๊ณ ๋ คํ•ด์„œ ํ˜ผ์ž ๊ณ ๋ฏผ ๋งŽ์ด ํ•˜๊ณ  ์ฐพ์•„๋ณด๋ฉด์„œ .... ์ •๋ง ๋งŽ์ด ์•Œ๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™์•„์š”. ํ˜ผ์ž์„œ๋„ ํ•œ ๋ฒˆ ๊ตฌ์ถ•ํ•ด๋ณผ ์˜ˆ์ •์ธ๋ฐ ... ๊ทธ๋Ÿผ ec2๋น„์šฉ ํญํƒ„ ๋งž๊ฒ ๋‹ค.

 

์•„์‰ฌ์› ๋˜ ์  .. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ๋Š” !!!

ํŠนํžˆ, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ํ˜ผ์ž์„œ ๊ณ ๋ฏผํ•œ ๋ถ€๋ถ„๋„ ๋งŽ์•˜๊ณ  ๊ฐœ๋ฐœ ๋ง‰๋ฐ”์ง€ ์‹œ์ ์— ์ตœ์ ํ™”๋ฅผ ํ•ด๋ณด๊ณ ์‹ถ์€ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋Š”๋ฐ ์‹œ๊ฐ„์ด ์ด‰๋ฐ•ํ•ด์„œ ์•„์‰ฝ๊ฒŒ ๋ชปํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ €ํฌ ์„œ๋น„์Šค์˜ ๋ชฉ์  ์ค‘ ํ•˜๋‚˜์ธ ์‹ค์‹œ๊ฐ„์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ, ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ ธ์„๋•Œ ์„œ๋ฒ„๋ฅผ ์ˆ˜ํ‰ํ™•์žฅ์‹œํ‚ค๋ฉด์„œ๋„ ์„œ๋ฒ„ ์ž์›์„ ์•„๋‚„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ง ์˜ค๋žœ์‹œ๊ฐ„ ๊ณ ๋ฏผํ–ˆ์—ˆ๋Š”๋ฐ์š”.

(ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„์—๋Š” kubernetesํ™˜๊ฒฝ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐ”๋ณด๋ฉ์ฒญ์ด ๋ฐฉ์‹์œผ๋กœ ๋‹จ์ผ์„œ๋ฒ„๋กœ ํ•œ์ •์‹œ์ผœ๋’€์Œ .... ์ง„์งœ ๋” ์ž˜ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์‹œ๊ฐ„๋„ ์—†๊ณ  ์ฑ„์šฉ์‹œ์ฆŒ์ด๋ผ ๋„ˆ๋ฌด ๋ฐ”๋นด๊ธฐ์— ํ•  ์ˆ˜ ์—†์–ด์„œ ๋„ˆ๋ฌด๋„ˆ๋ฌด๋„ˆ๋ฌด ์•„์‰ฌ์› ์Šต๋‹ˆ๋‹ค.)

๊ณ„์† ์ƒ๊ฐํ•˜๋‹ค ์ตœ๊ทผ์—์•ผ ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•์„ ๋– ์˜ฌ๋ฆฌ๊ณ  ๊ตฌ์ฒดํ™”์‹œ์ผœ์„œ ์ƒˆ๋กญ๊ฒŒ ์‚ฌ์šฉํ•ด๋ณผ ๊ธฐ์ˆ ์ด๋‚˜ ๋ฆฌํŒฉํ† ๋ง์„ ์–ด๋–ค์‹์œผ๋กœ ํ• ์ง€๋Š” ๋‹ค๋ฅธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹น ๐Ÿ˜ƒ

 

์ง€๊ธˆ์€ ๊ทธ๋ƒฅ ๊ฐ„๋‹จํžˆ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ  !!!

๊นƒํ—ˆ๋ธŒ ๋งํฌ

https://github.com/SunYerim/StockOfGalaxy

 

GitHub - SunYerim/StockOfGalaxy: ๐Ÿฅ‡ SSAFY 11๊ธฐ ํŠนํ™” ํ”„๋กœ์ ํŠธ ์ตœ์šฐ์ˆ˜์ƒ - ์‚ผ์„ฑ์ „์ž ์ฃผ์‹ํšŒ์‚ฌ / ๊ณผ๊ฑฐ์™€ ํ˜„

๐Ÿฅ‡ SSAFY 11๊ธฐ ํŠนํ™” ํ”„๋กœ์ ํŠธ ์ตœ์šฐ์ˆ˜์ƒ - ์‚ผ์„ฑ์ „์ž ์ฃผ์‹ํšŒ์‚ฌ / ๊ณผ๊ฑฐ์™€ ํ˜„์žฌ์˜ ์ฃผ์‹ ์ •๋ณด ๋ฐ ๋‰ด์Šค๊ธฐ์‚ฌ ์ •๋ณด ์ œ๊ณต ์„œ๋น„์Šค 'Stock Of Galaxy' - SunYerim/StockOfGalaxy

github.com

 

์ €ํฌ๋Š” ์šฐ์„  '๋น…๋ฐ์ดํ„ฐ - ๋ถ„์‚ฐ' ๋„๋ฉ”์ธ์„ ์„ ํƒํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์—ˆ๊ณ , 

์ตœ์ข…์ ์œผ๋กœ "๊ณผ๊ฑฐ์™€ ํ˜„์žฌ์˜ ์ฃผ์‹ ์ •๋ณด ๋ฐ ๋‰ด์Šค๊ธฐ์‚ฌ ์ •๋ณด ์ œ๊ณต ์„œ๋น„์Šค"๋ฅผ ๊ธฐํšํ•˜์—ฌ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‰ด์Šค ๋ฐ์ดํ„ฐ๋งŒ ํ•ด๋„ 300๋งŒ๊ฑด ์ด์ƒ์ด์—ˆ์œผ๋ฉฐ, ์ฃผ์‹ ๋ฐ์ดํ„ฐ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์— ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์ œ๊ณตํ•˜์—ฌ 50๋งŒ๊ฑด ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค.

 

์ €๋Š” ํ‰์†Œ์— ์ฃผ์‹์— ๊ด€์‹ฌ์ด ์žˆ๊ธฐ๋„ ํ–ˆ๊ณ , ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ค„๋ณด๊ณ  ์‹ถ์–ด์„œ ์ฃผ์‹ ๋„๋ฉ”์ธ๊ณผ, ํšŒ์›๊ด€๋ฆฌ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ถ€๋ถ„์„ ๋„๋งก์•„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„ ๊ฐ™์€ ๊ฒฝ์šฐ๋„ 'ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ <-> ์Šคํ”„๋ง ์„œ๋ฒ„, ์Šคํ”„๋ง ์„œ๋ฒ„ <-> ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ' ์ด๋Ÿฐ ๊ตฌ์กฐ๋กœ ์ž‘์—…์„ ํ–ˆ์–ด์•ผํ–ˆ๊ธฐ์— ์ƒ๊ฐํ•  ๋ถ€๋ถ„์ด ๋งŽ์„ ๊ฒƒ ๊ฐ™์•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ €ํฌ๋Š” kubernetes ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์œผ๋กœ ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ํ–ˆ์—ˆ์œผ๋ฉฐ, MSA๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆด ๊ฒฝ์šฐ pod์ด ์ž๋™ ์ƒ์„ฑ๋˜๋„๋ก ํ•ด๋’€์ง€๋งŒ, ์ฃผ์‹ ๋„๋ฉ”์ธ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋‹จ์ผ ์„œ๋ฒ„ ํ™˜๊ฒฝ์œผ๋กœ ํ•œ์ •ํ•˜์—ฌ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค... ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ทธ๋žฌ๋˜ ๊ฑด ์•„๋‹ˆ์—ˆ๊ณ ์š” ...

 

์šฐ์„ ์€ ๋ฐ”๋ณด๋ฉ์ฒญ์ด ๋ฐฉ์‹์œผ๋กœ ํ•ด๋ณด์ž! ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ์„ ๋งˆ๋ฌด๋ฆฌ์ง“๊ณ  ์ตœ์ ํ™”๋ฅผ ํ•ด๋ณด์ž. ๋งˆ์Œ์„ ๋จน์—ˆ๋Š”๋ฐ... ๊ทธ๋•Œ๋Š” ์ž…์‚ฌ์ง€์›๋„ ํ•œ์ฐธ ๋งŽ์ด ํ•  ๋•Œ๋ผ ์—ฌ์œ ๋„ ์—†์—ˆ์„ ๋ฟ๋”๋Ÿฌ, ์‹ค์‹œ๊ฐ„๋กœ์ง ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌ์‹œํ‚ค๊ณ  kafka์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€ํ๋ฅผ ๋„์ž…ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ ์‹ค์‹œ๊ฐ„์„ฑ ๋ณด์žฅ์„ ์–ด๋–ค์‹์œผ๋กœ ํ•ด์ค„์ง€, latency๋ฅผ ์–ด๋–ป๊ฒŒ ์ค„์ผ์ง€, batch์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค๊ณ  ํ–ˆ์„๋•Œ ์™„๋ฒฝํžˆ ์‹ค์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•  ๊ฑฐ ๊ฐ™์€๋ฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜์ง€ .. ์˜จ๊ฐ– ๊ณ ๋ฏผ์ด ๋“ค์–ด์„œ ๋‚˜์ค‘์— ๊ผญ ํ˜ผ์ž์„œ๋ผ๋„ ์ตœ์ ํ™”๋ฅผ ํ•˜์ž. ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

์œ„์— ๋„ˆ๋ฌด ๋‘์„œ์—†์ด ์ ์€ ๊ฒƒ ๊ฐ™์€๋ฐ์š” ..... 

๊ทธ๋ž˜์„œ ์ €๋Š” ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜ํ•ด์„œ ์ž‘์„ฑํ•˜๊ณ  ๊ธ€์„ ์ด๋งŒ ๋งˆ๋ฌด๋ฆฌ ์ง“๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

๋ญ˜ ํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ?

1. ํ•˜๋‚˜์˜ ์ฃผ์‹์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

2. ๋ฐ์ดํ„ฐ์–‘์ด ๋งŽ๋‹ค๋ณด๋‹ˆ ๊ณผ๊ฑฐ ์ฃผ๊ฐ€ ์ •๋ณด ์กฐํšŒํ• ๋•Œ๋„ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ์ตœ์ ํ™” ์ž‘์—…์„ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

3. kubernetes ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์˜ ์ด์ ์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค ~!!!!! ํŠธ๋ž˜ํ”ฝ ๋ชฐ๋ฆฌ๋ฉด ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ‰ํ™•์žฅ ๋˜๋„๋ก์š” .... pod ์ƒ์„ฑ๋˜์–ด๋ผ.

 

์™œ?

1. '์ฃผ์‹'์ด๋ผ๋Š” ๊ฒŒ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ + ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ œ๊ณตํ•ด์คฌ์–ด์•ผ๋๋Š”๋ฐ, ์ด๊ฑฐ๋ฅผ ๋ฐ”๋ณด๋ฉ์ฒญ์ด ๋ฐฉ์‹์œผ๋กœ ์ผ๋‹จ ๊ธฐ๋Šฅ ๊ตด๋Ÿฌ๊ฐ€๊ฒŒํ•˜์ž! ํ•ด์„œ ํ•œ ์„œ๋ฒ„์—์„œ ๋ชจ๋“  ๊ฑธ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒŒ ๋„ˆ๋ฌด๋„ˆ๋ฌด๋„ˆ๋ฌด ....!!! ์•„์‰ฝ๊ฒŒ ๋Š๊ปด์กŒ์—ˆ์Šต๋‹ˆ๋‹ค.

 

2. ๊ทธ๋ž˜์„œ ์ €๋Š” ์ฒ˜์Œ์— ์‹ค์‹œ๊ฐ„ ์ฃผ๊ฐ€ ์ •๋ณด ์ œ๊ณต๋งŒ์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์™ธ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„ ์ด๋ ‡๊ฒŒ ๋ถ„๋ฆฌ์‹œํ‚ค๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ–ˆ์„๋•Œ, ์ „์ž ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ๊ณผ websocketํ†ต์‹ ์„ ํ†ตํ•ด ๊ตฌ๋…ํ•˜๊ณ ์žํ•˜๋Š” ์ข…๋ชฉ์— ๋Œ€ํ•œ ์ฃผ๊ฐ€์ •๋ณด๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ์—ญํ• ๋งŒ ํ•˜๋ฉด ๋๊ณ , ๊ทธ๋ฆฌ๊ณ  ํ›„์ž ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๊ทธ ์ •๋ณด๋ฅผ ์ €ํฌ ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ๋“ค์—๊ฒŒ ์ œ๊ณตํ•ด์ฃผ๋Š” ์—ญํ• ๋งŒ ํ•˜๋ฉด ๋์œผ๋‹ˆ๊นŒ์š”. (ํฌ๊ฒŒ ๋ณด๋ฉด)

 

3. ๊ทธ๋ฆฌ๊ณ  ์ค‘๊ฐ„์— ๋ฉ”์‹œ์ง€ํ๋ฅผ ๋†“์•„์„œ publish, subscribeํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์ƒํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ๋˜๋ฉด, ์‹ค์‹œ๊ฐ„์ •๋ณด๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„๋Š” ๋‹จ์ผ์„œ๋ฒ„๋กœ ํ•œ์ •์‹œ์ผœ๋‘ฌ๋„ ๋ฌด๊ด€ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„ ์ •๋ณด ์™ธ์ ์ธ ๊ฒƒ์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„๋Š” ์„œ๋ฒ„ ์ˆ˜ํ‰ํ™•์žฅ ๋˜๋„๋ก ์ ์šฉํ•˜๋ฉด ๋˜๊ฒ ๋‹ค ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ, '๊ทธ๋Ÿผ ๊ทธ ์‹ค์‹œ๊ฐ„์„ฑ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜์ง€? latency์–ด๋–ป๊ฒŒ ์ค„์ด์ง€?' ๋ผ๋Š” ๊ณ ๋ฏผ์ด ๊ฐ‘์ž๊ธฐ ํŒŒ๋ฐ”๋ฐ”๋ฐ• ๋“ค์–ด์„œ ๊นŒ๋น„ ...

 

4. ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์•„์„œ ์ •๋ณด ์กฐํšŒํ• ๋•Œ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฑด, ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์œ ์ € ์ž…์žฅ์—์„œ ๋„ˆ๋ฌด ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ...!!

 

5. ์ด ๋ถ€๋ถ„์€ gateway์—์„œ ์บ์‹ฑ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ , db์ธ๋ฑ์‹ฑ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์„œ ์ตœ์ ํ™”์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค !!!

 

6. ๋ฌด์—‡๋ณด๋‹ค ์ฃผ์–ด์ง„ ํ™˜๊ฒฝ์„ ์ตœ๋Œ€ํ•œ ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฑด ๋ฌผ๋ก  ์„œ๋ฒ„ ํ™˜๊ฒฝ๋„ ์ตœ์ ํ™”ํ•˜๊ณ  ....!!!

 

 

๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ํ• ๊ฑด๋ฐ?

์‹ค์‹œ๊ฐ„ ์ •๋ณด ๋‹ด๋‹น ์„œ๋ฒ„ -> ๋‹จ์ผ ์„œ๋ฒ„ ํ™˜๊ฒฝ

์‹ค์‹œ๊ฐ„ ์ •๋ณด ์™ธ ๋‹ด๋‹น ์„œ๋ฒ„ -> ๋ถ„์‚ฐ ์„œ๋ฒ„ ํ™˜๊ฒฝ (pod ์ƒ์„ฑ๋˜๋„๋ก)

 

์ž .. ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ํ˜„์žฌ ๋กœ์ง์—์„œ ์ˆ˜์ •ํ•ด์•ผ๋  ๋ถ€๋ถ„์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. ์›น์†Œ์ผ“ ์„ธ์…˜๊ด€๋ฆฌ

ํ•ญ์ƒ ๋™์ผํ•œ ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ๋ณด์žฅ์ด ์•ˆ ๋˜์–ด์žˆ์ฃ ? ๋ฌผ๋ก  ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์œผ๋กœ ํ•œ ์„œ๋ฒ„์— ๊ณ ์ •์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .. ๊ทธ๋ ‡์ง€๋งŒ, ํ˜„์žฌ ์œ ์ €์„œ๋ฒ„์—์„œ๋„ redis๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ์—, redis ์‚ฌ์šฉํ•ด์„œ ์›น์†Œ์ผ“ ์„ธ์…˜id๋ฅผ ๋ชจ๋“  ์„œ๋ฒ„์—์„œ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ์ฒ˜๋ฆฌํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

 

 

2. ์„œ๋ฒ„ ๋ถ„๋ฆฌ

์œ„์— ๊ธฐ์žฌ๋œ ๋Œ€๋กœ ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•˜๋ คํ•ฉ๋‹ˆ๋‹ค.

 

์‹ค์‹œ๊ฐ„ ์ •๋ณด ๋‹ด๋‹น ์„œ๋ฒ„๋Š” ๋‹จ์ผ์„œ๋ฒ„๋กœ ํ•œ์ •ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒ? ์–ด์ฐจํ”ผ ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ๊ณผ websocket ํ†ต์‹ ์„ ํ•ด์„œ ์›ํ•˜๋Š” ์ข…๋ชฉ์˜ ์ฃผ๊ฐ€์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณ„์† ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๊ฑฐ๋Š” ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ทธ๋ƒฅ ๋™์ผํ•œ ์ •๋ณด ์ œ๊ณตํ•ด์ฃผ๋ฉด ๋˜๋Š” ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์—, '์ฃผ๊ฐ€์ •๋ณด'๋งŒ ๋“ค๊ณ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์‹ค์‹œ๊ฐ„ ์ •๋ณด ์™ธ ๋‹ด๋‹น ์„œ๋ฒ„๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ pod์ด ์ƒ์„ฑ๋˜๋„๋กํ•ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ์ •๋ณด ๋‹ด๋‹น ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ฉ”์‹œ์ง€ํ๋กœ publishํ• ํ…๋ฐ์š”. (์ด ๋ถ€๋ถ„์€ ์•„๋ž˜์ชฝ์—, ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๊ธ€์—์„œ ๋” ์ž์„ธํžˆ)

๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ๋…ํ•ด์„œ ์„œ๋น„์Šค ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ œ๊ณตํ•˜๋ฉด ๋œ๋‹ต๋‹ˆ๋‹ค ใ…Žใ…Žใ…Ž

 

 

3. Redis Stream ๋„์ž…์œผ๋กœ ์ผ์ •๋ถ€๋ถ„ ๊ณ ๋ฏผ ํ•ด๊ฒฐ-!

๋ฌผ๋ก ? ์•„์ง ์ง์ ‘ ์ž‘์—…ํ•ด๋ณด์ง€ ์•Š์•˜์ง€๋งŒ, ์‹ค์ œ ์šด์˜์ค‘์ธ ์„œ๋น„์Šค์—์„œ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์ด๋‚˜ ๋„์ž…์„ ๊ฒฐ์ • ํ•˜๊ฒŒ๋œ ๋ฐฐ๊ฒฝ์ด ๋น„์Šทํ•˜๋”๋ผ๊ตฌ์š”. ๊ทธ๋ฆฌ๊ณ  ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์„ ์ตœ๋Œ€ํ•œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด Redis pub/sub๋ฅผ ์ ์šฉํ•œ๋‹ค๋ฉด, ํŠน์„ฑ์ƒ ๊ตฌ๋…์ž๊ฐ€ ์—†์œผ๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ Publishํ•ด๋„ ๋ฐ”๋กœ ํœ˜๋ฐœ๋˜๋Š” .. ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์กด์žฌํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฐ ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋˜์—ˆ๊ณ , ๋ฌด์—‡๋ณด๋‹ค ์ด๋ฏธ redis๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด์—ˆ๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. 

 

์ด์ „์— Kafka message queue๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ, ์ด์™€ ๋˜๊ฒŒ ์œ ์‚ฌํ•˜๋‹ค ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.

 

๋ฌผ๋ก  redis๊ฐ€ in-memory db๋ผ ์ฃฝ์—ˆ์„ ๊ฒฝ์šฐ (๋ฐ์ดํ„ฐ ํœ˜๋ฐœ ......๊นŒ๋น„) fail overํ•˜๋Š” ๊ณผ์ • .. ๊ทธ๋Ÿฐ๊ฒƒ๋“ค๋„ ๊ณ ๋ฏผํ•  ๊ฒŒ ๋งŽ์€๋ฐ ์˜คํžˆ๋ ค ์ข‹์•„

 


 

๋„ˆ๋ฌด ์šฐ๋‹นํƒ•ํƒ• ์ œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ๊ฑฐ ๋งˆ๊ตฌ๋งˆ๊ตฌ ๋„์ง‘์–ด ๋‚ด์„œ ๋‘์„œ์—†์ด ์ ์—ˆ๋Š”๋ฐ ... ๊ทธ๋ƒฅ ํ•œ ์‚ฌ๋žŒ์˜ ํšŒ๊ณ ๊ธ€์ด์ž ๊ณ ๋ฏผ์ด ๊ฐ€๋“ ๋‹ด๊ธด ๊ธ€์ด์—ˆ์Šต๋‹ˆ๋‹ค.. !!!!


์ฐธ๊ณ 

https://dev.gmarket.com/113

 

Redis Stream ์ ์šฉ๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” Data Product ํŒ€ ๋ฐ•์ƒ์šฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์ œ๊ฐ€ ์†Œ๊ฐœํ•ด๋“œ๋ฆด ๋‚ด์šฉ์€ ํŒ€ ๋‚ด session Info data ์ ์žฌ ๋ฐ API ์„œ๋น„์Šค ๊ตฌ์ถ•์— ์ ์šฉํ•œ Redis Stream์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ €ํฌ ํŒ€์—์„œ๋Š” User์˜ ํ–‰๋™ ์ •๋ณด๋ฅผ

dev.gmarket.com

https://oliveyoung.tech/2024-11-15/inventory-changed-stocks-function-with-redis-stream/

 

์žฌ๊ณ ์˜ ๋ณ€๋™์„ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋กœ?! | ์˜ฌ๋ฆฌ๋ธŒ์˜ ํ…Œํฌ๋ธ”๋กœ๊ทธ

Redis Stream์œผ๋กœ ์žฌ๊ณ  ๋ณ€๋™ ์ด๋ ฅ ๊ตฌํ˜„ํ•˜๊ธฐ

oliveyoung.tech