์ฑ„ํŒ… ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌ์กฐ ๊ฐœ์„ ๊ธฐ

2024. 12. 18. 22:28ยทProject

๊ฐœ์š”

์ฑ„ํŒ…๋ฐฉ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฝ์€ ๋ฉ”์„ธ์ง€๋ฅผ ์ถ”์ ํ•˜์—ฌ, ์ฝ์ง€ ์•Š์€ ๋ฉ”์„ธ์ง€์˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฐ ๋ฉ”์„ธ์ง€์— ๋Œ€ํ•ด '์ฝ์ง€ ์•Š์€ ๊ฐœ์ˆ˜ (Unread Count)'๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. 

 

๊ธฐ์กด์˜ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ๋Š” ๊ฐ ๋ฉ”์„ธ์ง€๋งˆ๋‹ค ํ•ด๋‹น ๋ฉ”์„ธ์ง€๋ฅผ ์ฝ์€ ์œ ์ €์˜ ID ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ์ฝ์€ ์œ ์ € ID ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ํ†ตํ•ด '์ฝ์ง€ ์•Š์€ ๊ฐœ์ˆ˜ (Unread Count)'๋ฅผ ๊ณ„์‚ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์€ ์ฑ„ํŒ…๋ฐฉ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ ์€ ์ฑ„ํŒ…๋ฐฉ์— ๋น„ํ•ด ๋” ๋งŽ์€ ๋ฉ”์„ธ์ง€๊ฐ€ ์˜ค๊ฐ€๋ฏ€๋กœ, ์ˆ˜์ •ํ•ด์•ผํ•  ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๊ฐœ์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

๊ธฐ์กด์˜ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๋กœ์ง

๋จผ์ €, ๊ธฐ์กด์˜ ์ฑ„ํŒ… ์‹œ์Šคํ…œ์˜ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

์•ž์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, ๊ธฐ์กด ์‹œ์Šคํ…œ์€ ๊ฐ ๋ฉ”์„ธ์ง€๋งˆ๋‹ค ์ฝ์€ ์‚ฌ์šฉ์ž๋“ค์˜ ์ •๋ณด๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ฉ”์„ธ์ง€์˜ '์ฝ์€ ๋ฉ”์„ธ์ง€์˜ ๊ฐœ์ˆ˜ (Unread Count)'๋ฅผ ๊ณ„์‚ฐํ–ˆ์Šต๋‹ˆ๋‹ค. 

๊ฐœ๋ณ„ ์ฑ„ํŒ…๋งˆ๋‹ค ์ฝ์€ ์‚ฌ์šฉ์ž์˜ ID๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์Œ

'์˜ค์‚ฌ์นด ๋จน๋ฐฉ ํˆฌ์–ด๋ฐฉ' ์ด๋ผ๋Š” ์ฑ„ํŒ…๋ฐฉ์— 10๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

์ด๋•Œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ '์•ˆ๋…•ํ•˜์„ธ์š”'๋ผ๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด '์•ˆ๋…•ํ•˜์„ธ์š”' ๋ฉ”์„ธ์ง€๋ฅผ ์ฝ์€ ์‚ฌ์šฉ์ž์™€ ์ฝ์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜๋‰˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์„ธ์ง€๋ฅผ ์ฝ์€ ์‚ฌ์šฉ์ž ์ •๋ณด๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ, ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ '์ฝ์ง€ ์•Š์€ ๊ฐœ์ˆ˜ (Unread Count)'๊ฐ€ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. 

 

์ด ๊ตฌ์กฐ๋Š” ์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๊ฐ ๋ฉ”์„ธ์ง€๋งˆ๋‹ค ์ฝ์€ ์œ ์ € ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”์„ธ์ง€๊ฐ€ ์Œ“์ผ์ˆ˜๋ก ๋ฐ์ดํ„ฐ ์–‘์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ์ธํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚˜๊ณ , ๋ฉ”์„ธ์ง€ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๋˜ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋Š” ๊ณผ๋„ํ•œ ์ˆ˜์ •์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ฑ„ํŒ…๋ฐฉ์„ ๋ณด์ง€ ์•Š๋Š” ๋™์•ˆ์— ์ƒˆ๋กœ์šด ๋ฉ”์„ธ์ง€๊ฐ€ 100๊ฐœ๊ฐ€ ์™”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

 

๋ฉ”์„ธ์ง€ ํ•˜๋‚˜ํ•˜๋‚˜์— ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ธฐ์กด์˜ ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋ฉด, 100๊ฐœ์˜ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” 100๊ฐœ์˜ ์ฑ„ํŒ… ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ 1๋ช…์ผ ๊ฒฝ์šฐ์—๋„ ๊ณผ๋„ํ•œ ์ˆ˜์ •์ด ์ผ์–ด๋‚˜๋ฉฐ, ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฉ”์„ธ์ง€๋ฅผ ์ฝ์„ ๋•Œ๋Š” ๋” ๋งŽ์€ ์ˆ˜์ •์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 10๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ 100๊ฐœ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ์ฝ์Œ ์ฒ˜๋ฆฌํ•˜๋ฉด, DB๋Š” 100๊ฐœ์˜ ์ฑ„ํŒ… ๋ฐ์ดํ„ฐ์— 10๋ฒˆ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์ถ”ํ›„ DB์— ํฐ ๋ถ€๋‹ด์„ ์ฃผ๋Š” ๋ฌด๊ฑฐ์šด ์ž‘์—…์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๊ฐœ์„ ๋œ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๋กœ์ง

๊ฐœ์„ ๋œ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๋กœ์ง์—์„œ๋Š” ๊ฐ ์ฑ„ํŒ…๋ฐฉ๋งˆ๋‹ค ๋ณ„๋„์˜ '๋งˆ์ง€๋ง‰ ์ฝ์€ ๋ฉ”์„ธ์ง€ (LastReadMessage)'๋ฅผ ์ €์žฅํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

์ด์ œ ๊ฐœ๋ณ„ ๋ฉ”์„ธ์ง€์— ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋Œ€์‹ , ๊ฐ ์ฑ„ํŒ…๋ฐฉ์— ์‚ฌ์šฉ์ž๋ณ„ ๋งˆ์ง€๋ง‰ ์ฝ์€ ๋ฉ”์„ธ์ง€ ID๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. 

 

๊ฐœ์„ ๋œ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

  1. ํ•ด๋‹น ์ฑ„ํŒ…๋ฐฉ์˜ LastMessage ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด
  2. ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๊ฐ ๋ฉ”์„ธ์ง€์˜ Unread Count๋ฅผ ๊ณ„์‚ฐ
  3. ์‚ฌ์šฉ์ž๊ฐ€ ์ฑ„ํŒ…๋ฐฉ์—์„œ ์ดํƒˆํ•  ๊ฒฝ์šฐ ํ˜„์žฌ ์ฑ„ํŒ…๋ฐฉ์—์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋„์ฐฉํ•œ ๋ฉ”์„ธ์ง€ ID๋กœ ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ Last Read Message ID ์—…๋ฐ์ดํŠธ
  4. ์ดํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ์ฑ„ํŒ…๋ฐฉ์— ์žฌ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ, Last Read Mesage ID ์—…๋ฐ์ดํŠธ

์‚ฌ์šฉ์ž๊ฐ€ ์ฑ„ํŒ…๋ฐฉ์— ๋“ค์–ด์™€์„œ ๋ฉ”์„ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋™์•ˆ, ๊ทธ ์‚ฌ์šฉ์ž์˜ '๋งˆ์ง€๋ง‰ ์ฝ์€ ๋ฉ”์„ธ์ง€ (Last Read Message)'๋Š” '-1'๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ฑ„ํŒ…๋ฐฉ์— ์žˆ๋Š” ๋™์•ˆ์—๋Š” ๊ทธ ์‚ฌ๋žŒ์ด ๋ชจ๋“  ๋ฉ”์„ธ์ง€๋ฅผ ์ฝ์—ˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•˜์—ฌ, ๋ฉ”์„ธ์ง€๋ฅผ ๋ชจ๋‘ ์ฝ์€ ์ƒํƒœ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋ฉด, ์ƒˆ๋กœ์šด ๋ฉ”์„ธ์ง€๊ฐ€ ๋„์ฐฉํ•ด๋„ ๊ทธ ๋ฉ”์„ธ์ง€๋Š” ์ด๋ฏธ ์ฝ์€ ๊ฒƒ์œผ๋กœ ์ž๋™ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. 

 

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

 

๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๋กœ์ง ์˜ˆ์‹œ

์œ„ ๊ทธ๋ฆผ์€ ์œ ์ €๋ณ„ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฝ์€ ๋ฉ”์„ธ์ง€ ID๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ…Œ์ด๋ธ”์ด๋ฉฐ, ํ•ด๋‹น ํ…Œ์ด๋ธ”์—์„œ๋Š” ๊ฐ€๋กœ๋Š” ์‚ฌ์šฉ์ž, ์„ธ๋กœ๋Š” ๊ฐ ์ฑ„ํŒ…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 

 

ํ•ด๋‹น ์ฑ„ํŒ…๋ฐฉ์˜ ์‚ฌ์šฉ์ž๋Š” ์ด 6๋ช…, ๋ฉ”์„ธ์ง€๋Š” ์ด 9๊ฐœ์ด๋ฉฐ ์ด ์ค‘ ๋ณด๋ผ์ƒ‰์œผ๋กœ ์น ํ•ด์ง„ ์‚ฌ์šฉ์ž๋Š” ํ˜„์žฌ ์ฑ„ํŒ…๋ฐฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฝ์€ ๋ฉ”์„ธ์ง€๋Š” 'O'๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” '-1'๋กœ ๋‚˜ํƒ€๋ƒˆ์Šต๋‹ˆ๋‹ค. 

 

์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Unread Count๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

์ฑ„ํŒ… ID ์ฝ์€ ์‚ฌ์šฉ์ž ID Unread Count
1 [1, 2, 3, 4, 5, 6] 0
2 [1, 2, 3, 4, 5] 1
3 [1, 2, 3, 4, 5] 1
4 [1, 2, 3, 4] 2
5 [1, 2, 3] 3
6 [1, 2, 3] 3
7 [1, 2] 4
8 [1, 2] 4
9 [1, 2] 4

์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ ๋ฉ”์„ธ์ง€์˜ Unread Count๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์œ ์˜ํ•  ์ ์€ Last Read Message๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ณ„์‚ฐ์˜ ์ •ํ™•์„ฑ์„ ์œ„ํ•ด ์ ์ ˆํ•œ ์ƒํ™ฉ์— ์ œ๋•Œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

๋งˆ์ง€๋ง‰ ์ฝ์€ ๋ฉ”์„ธ์ง€ ์—…๋ฐ์ดํŠธ

๋งˆ์ง€๋ง‰ ์ฝ์€ ๋ฉ”์„ธ์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์€ 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์ฑ„ํŒ…๋ฐฉ์— ์ ‘์†ํ•œ ๊ฒฝ์šฐ
  2. ์ฑ„ํŒ…๋ฐฉ์— ์ ‘์†ํ•ด์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘์†์„ ํ•ด์ œํ•œ ๊ฒฝ์šฐ

์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๋งˆ์ง€๋ง‰ ์ฝ์€ ์ฑ„ํŒ… ID๋ฅผ '-1'๋กœ ์ˆ˜์ •ํ•˜๊ณ  ์ˆ˜์ •๋œ ๊ฒƒ์„ ํ•ด๋‹น ์ฑ„ํŒ…๋ฐฉ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

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

 

์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ•˜๋ฉด ๊ฐ ํด๋ผ์ด์–ธํŠธ๋Š” ์ฒ˜์Œ์œผ๋กœ ํ•ด๋‹น ์ฑ„ํŒ…๋ฐฉ์˜ ๋งˆ์ง€๋ง‰ ์ฝ์€ ๋ฉ”์„ธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„, ์ดํ›„๋ถ€ํ„ฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘์†/ํ•ด์ œ ๋ ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฉ”์„ธ์ง€๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ•œ๋ฒˆ์˜ ์กฐํšŒํ›„์—๋Š” DB์—์„œ ์—…๋ฐ์ดํŠธ๋œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜์˜ํ•ด ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ฑ„ํŒ… ์‹œ์Šคํ…œ ๋ฉ”์„ธ์ง€ ์ฝ์Œ ๊ธฐ๋Šฅ ๊ฐœ์„  ํšจ๊ณผ

๊ฐœ์„  ์ „๊ณผ ๊ฐœ์„  ํ›„์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

ํ…Œ์ŠคํŠธ๋Š” 1000๋ช…์ด ์ฐธ์—ฌํ•˜๋Š” ์ฑ„ํŒ…๋ฐฉ์— 999๋ช…์ด ๊ฐ๊ฐ 1000๊ฐœ์˜ ์•ˆ์ฝ์€ ๋ฉ”์„ธ์ง€๋ฅผ ์ฝ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ฐœ์„ ์ „

๊ฐœ์„  ์ „ ๊ตฌ์กฐ์—์„œ๋Š” ์ „์ฒด ์ž‘์—… ์™„๋ฃŒ ์‹œ๊ฐ„์ด ์ตœ๋Œ€ 45์ดˆ์— ๋‹ฌํ–ˆ์œผ๋ฉฐ, p90 ์ง€์—ฐ ์‹œ๊ฐ„์€ 74.13ms, p95๋Š” 79.26ms๋กœ ์ธก์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ MongoDB์˜ ์ดˆ๋‹น ์ฒ˜๋ฆฌ ๊ฑด์ˆ˜๊ฐ€ 17.2k(17200)๋กœ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ–ˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค CPU ์‚ฌ์šฉ๋ฅ ์€ ์ตœ๋Œ€ 48%๊นŒ์ง€ ์ƒ์Šนํ•ด ์‹œ์Šคํ…œ ์ž์› ์‚ฌ์šฉ๋ฅ ์ด ๋†’์•„์ง€๋Š” ํ˜„์ƒ์ด ๊ด€์ธก๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

๊ทผ๋ณธ ์›์ธ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ์ฝ์„ ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋ฉ”์„ธ์ง€ ๋ฌธ์„œ์— ๋Œ€ํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ update ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๊ณผ๋„ํ•œ I/O์™€ CPU ๋ถ€ํ•˜๋ฅผ ์œ ๋ฐœํ•˜์—ฌ ์ „์ฒด ์ฒ˜๋ฆฌ ์ง€์—ฐ์„ ์œ ๋ฐœํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

๊ฐœ์„  ํ›„

๊ฐœ์„  ํ›„์—๋Š” ์ „์ฒด ์ž‘์—… ์™„๋ฃŒ ์‹œ๊ฐ„์ด 13.8์ดˆ๋กœ ํฌ๊ฒŒ ๋‹จ์ถ•๋˜์—ˆ์œผ๋ฉฐ, p90 ์ง€์—ฐ ์‹œ๊ฐ„์€ 14.87ms, p95 ์ง€์—ฐ ์‹œ๊ฐ„์€ 15.49๋กœ ์‘๋‹ต ์ง€์—ฐ ์‹œ๊ฐ„์ด ๋Œ€ํญ ์ค„์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. MongoDB ๋ฌธ์„œ ์ฒ˜๋ฆฌ๋Ÿ‰๋„ ์ดˆ๋‹น 17.4๊ฑด ์ˆ˜์ค€์œผ๋กœ ์•ˆ์ •ํ™”๋˜์—ˆ๊ณ , ํ”„๋กœ์„ธ์Šค ์ง€ํ‘œ์ƒ CPU ์‚ฌ์šฉ๋Ÿ‰์€ 4.3%, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ 137MB๋กœ ์‹œ์Šคํ…œ ์ž์›์„ ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

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

 

๊ธฐ์กด ๋กœ์ง์€ ์ฑ„ํŒ… ๋ฉ”์„ธ์ง€ ํ•„๋“œ์— ๋ฉ”์„ธ์ง€ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์—ฌ์„œ ์ˆ˜์ •์ด ํ•„์š”ํ•  ๋•Œ, ๊ฐ ํ–‰์„ ํ•˜๋‚˜์”ฉ ์ˆœํšŒํ•˜๋ฉด์„œ ์—…๋ฐ์ดํŠธ ํ–ˆ๋‹ค๋ฉด, ๊ฐœ์„ ๋œ ๋กœ์ง์€ ์‚ฌ์šฉ์ž๋ณ„๋กœ ๋งˆ์ง€๋ง‰ ์ฝ์€ ๋ฉ”์„ธ์ง€ ID ํ•˜๋‚˜๋งŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์„ธ์ง€ ์—ด๋žŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ ๋ฉ”์„ธ์ง€์— ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•˜์ง€์•Š๊ณ , ๋งˆ์ง€๋ง‰ ์ฝ์Œ ์œ„์น˜๋งŒ ๊ฐฑ์‹ ํ•˜๋„๋ก ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „๋‹ฌ๋˜๋Š” ์ฟผ๋ฆฌ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ ๋˜์—ˆ๊ณ , ์‹œ์Šคํ…œ ์ž์›์„ ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ์‚ฌ๋ก€๋Š” ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋„์ž…ํ•˜๊ฑฐ๋‚˜ ์ธํ”„๋ผ๋ฅผ ํ™•์žฅํ•˜์ง€ ์•Š๊ณ ๋„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ์ข‹์€ ์˜ˆ์˜€์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋‹จ์ˆœํžˆ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ์‹œ์Šคํ…œ์˜ ๋™์ž‘ ์›๋ฆฌ์™€ ๋ฐ์ดํŠธ์˜ ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ณ  ํ•ต์‹ฌ ๋ณ‘๋ชฉ์„ ์ฐพ์•„๋‚ด๋Š” ๊ณผ์ •์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

'Project' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

GitHub Actions + Docker + NGINX๋ฅผ ํ™œ์šฉํ•œ Blue/Green ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์ถ•  (1) 2025.05.04
Embedded Mongo/Redis ์ ์šฉํ•˜๊ธฐ  (0) 2024.11.26
๋ณ„์  ์ค‘๋ณต ์ƒ์„ฑ ๋™์‹œ์„ฑ ์ด์Šˆ ํ•ด๊ฒฐ  (0) 2024.10.27
CompletableFuture๋ฅผ ํ™œ์šฉํ•œ ์„ฑ๋Šฅ ๊ฐœ์„ ๊ธฐ  (0) 2024.08.01
'Project' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • GitHub Actions + Docker + NGINX๋ฅผ ํ™œ์šฉํ•œ Blue/Green ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • Embedded Mongo/Redis ์ ์šฉํ•˜๊ธฐ
  • ๋ณ„์  ์ค‘๋ณต ์ƒ์„ฑ ๋™์‹œ์„ฑ ์ด์Šˆ ํ•ด๊ฒฐ
  • CompletableFuture๋ฅผ ํ™œ์šฉํ•œ ์„ฑ๋Šฅ ๊ฐœ์„ ๊ธฐ
jwooo๐ŸŒฑ
jwooo๐ŸŒฑ
jwooo's log ์ž…๋‹ˆ๋‹ค.
  • jwooo๐ŸŒฑ
    jwooo's log
    jwooo๐ŸŒฑ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (11)
      • Java (4)
      • Project (5)
      • Computer Science (2)
        • Network (1)
        • Security (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
jwooo๐ŸŒฑ
์ฑ„ํŒ… ๋ฉ”์„ธ์ง€ ์ฝ์Œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌ์กฐ ๊ฐœ์„ ๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”