Message Broker Selection.md - 100-hours-a-week/KTB4-17th-wiki GitHub Wiki

Valkey Pub/Sub ์„ ํƒ ๊ทผ๊ฑฐ์™€ ํฌ๊ธฐ ๊ณ„์‚ฐ

์„ ํƒ ๊ทผ๊ฑฐ

์„œ๋น„์Šค๋Š” 1:1 ์ฑ„ํŒ…๋งŒ ์ œ๊ณตํ•˜๋ฉฐ, ๋ฐฉ๋‹น ํ‰๊ท  10๊ฑด์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋‘ ์ฑ„ํŒ… ์„œ๋ฒ„๊ฐ€ ๊ฐ™์€ ์ฑ„๋„์„ ๊ตฌ๋…ํ•˜๋ฉด ๋ฐœ์‹  ์„œ๋ฒ„๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ์–ด๋А ์„œ๋ฒ„์— ์ ‘์†ํ–ˆ๋Š”์ง€ ์•Œ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋‘ ์„œ๋ฒ„๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์€ ๋’ค ๊ฐ์ž์˜ ๋กœ์ปฌ ์—ฐ๊ฒฐ๋งŒ ๊ฒ€์‚ฌํ•œ๋‹ค. ElastiCache Pub/Sub ์‚ฌ์šฉ ์‚ฌ๋ก€

Valkey Pub/Sub์€ ์˜จ๋ผ์ธ ์•Œ๋ฆผ ๊ฒฝ๋กœ์ด๊ณ  RDS๋Š” ๋ฉ”์‹œ์ง€ ์›๋ณธ์ด๋‹ค. RDS์— ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•œ ๋’ค ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•œ๋‹ค. ๋ฐœ์‹ ์ž์˜ ์žฌ์ „์†ก์—๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ID๋ฅผ ์‚ฌ์šฉํ•ด ์ค‘๋ณต ์ €์žฅ์„ ๋ง‰๊ณ , ๋ฐœ์‹ ์ž์—๊ฒŒ ์ฃผ๋Š” ์ €์žฅ ์™„๋ฃŒ ์‘๋‹ต๊ณผ ์ƒ๋Œ€๋ฐฉ์˜ ์ „๋‹ฌยท์ฝ์Œ ์ƒํƒœ๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. Pub/Sub์€ ์ตœ๋Œ€ 1ํšŒ ์ „๋‹ฌ์ด๋ฏ€๋กœ ์žฌ๊ตฌ๋… ๋ฐ ์•ฑ ๋ณต๊ท€ ๋•Œ RDS์—์„œ ๋ˆ„๋ฝ๋ถ„์„ ์กฐํšŒํ•œ๋‹ค. DB ์ €์žฅ ํ›„ ์ด๋ฒคํŠธ ๋ฐœํ–‰ ์ „์˜ ์žฅ์• ๊นŒ์ง€ ์ผ์ • ์‹œ๊ฐ„ ์•ˆ์— ๋ณต๊ตฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด ํŠธ๋žœ์žญ์…”๋„ ์•„์›ƒ๋ฐ•์Šค ๋“ฑ์„ ์ถ”๊ฐ€๋กœ ๊ฒ€ํ† ํ•œ๋‹ค. Valkey Pub/Sub, AWS ํŠธ๋žœ์žญ์…”๋„ ์•„์›ƒ๋ฐ•์Šค

๋ฉ”์‹œ์ง€๋Ÿ‰

์›”๊ฐ„ ์‚ฌ์šฉ์ž 42๋งŒ ๋ช…์ด ๊ฐ๊ฐ ํ‰๊ท  15.6๊ฐœ ์ฑ„ํŒ…๋ฐฉ์— ์ฐธ์—ฌํ•˜๊ณ , 1:1 ๋ฐฉ์˜ ๋‘ ์ฐธ์—ฌ์ž๋ฅผ ๊ฐ๊ฐ ์„ผ ๊ฐ’์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์›” ๊ณ ์œ  ์ฑ„ํŒ…๋ฐฉ์€ 420,000 ร— 15.6 รท 2 = 3,276,000๊ฐœ๋‹ค. ๋ฐฉ๋‹น 10๊ฑด์ด๋ฉด ์›” ๋ฉ”์‹œ์ง€ ์ˆ˜๋Š” 3,276,000 ร— 10 = 32,760,000๊ฑด, 30์ผ ํ‰๊ท ์€ 12.64๊ฑด/์ดˆ๋‹ค. ํ•˜๋ฃจ ์‹ ๊ทœ ๊ณ ์œ  ๋ฐฉ์€ ํ‰๊ท  109,200๊ฐœ๋‹ค.

์˜คํ›„ 8~10์‹œ์— ์‚ฌ์šฉ์ž 45%๊ฐ€ ์•ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ˆ˜์น˜๋งŒ์œผ๋กœ ๋ฉ”์‹œ์ง€์˜ 45%๊ฐ€ ํ•ด๋‹น ์‹œ๊ฐ„์— ๋ฐœ์†ก๋œ๋‹ค๊ณ  ๋‹จ์ •ํ•  ์ˆ˜ ์—†๋‹ค. ๋ฉ”์‹œ์ง€ 45%๊ฐ€ ๊ทธ ์‹œ๊ฐ„๋Œ€์— ์ง‘์ค‘๋œ๋‹ค๋Š” ์ถ”๊ฐ€ ๊ฐ€์ •์„ ๋‘˜ ๊ฒฝ์šฐ ์•ฝ 68.25๊ฑด/์ดˆ๋Š” ๊ทธ 2์‹œ๊ฐ„์˜ ํ‰๊ท ์ด๋ฉฐ ์ˆœ๊ฐ„ ํ”ผํฌ๋Š” ์•„๋‹ˆ๋‹ค. ์ˆœ๊ฐ„ ํ”ผํฌ๋Š” ์‹ค์ œ ๋ถ„๋‹นยท์ดˆ๋‹น ๋ฉ”์‹œ์ง€ ์ง€ํ‘œ๋กœ ๊ฒ€์ฆํ•œ๋‹ค.

๋ธŒ๋กœ์ปค์™€ ์บ์‹œ ํฌ๊ธฐ ๋ถ„๋ฆฌ

์šฉ๋„ ๊ณ„์‚ฐ ๊ธฐ์ค€ ํ˜„์žฌ ์ถ”์ •
Pub/Sub ๋ธŒ๋กœ์ปค ๋ฉ”์‹œ์ง€ ์žฅ๊ธฐ ๋ณด๊ด€ ์—†์Œ. ๊ตฌ๋… ์—ฐ๊ฒฐ, ์ผ์‹œ์  ์ถœ๋ ฅ ๋ฒ„ํผ, CPUยท๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ์ธก์ • ์ €์žฅ ๋ฉ”์‹œ์ง€ ์šฉ๋Ÿ‰์„ ์‚ฐ์ž…ํ•˜์ง€ ์•Š์Œ
์ตœ๊ทผ ๋ฉ”์‹œ์ง€ ์บ์‹œ ์‹ค์ œ ์ƒ์ฃผ ๋ฐฉ ์ˆ˜ ร— ๋ฐฉ๋‹น ์ง๋ ฌํ™”๋œ ์ตœ๊ทผ 10๊ฑด ํฌ๊ธฐ ๊ฑด๋‹น 130B๋ฅผ ๊ฐ€์ •ํ•˜๋ฉด ๋ฐฉ๋‹น ์›์‹œ ๋ฐ์ดํ„ฐ 1,300B
์ ‘์† ์ •๋ณด Valkey์— ๋ณ„๋„๋กœ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ณ„์‚ฐ 128,000 ร— 200B = 25.6MB ์›์‹œ ๋ฐ์ดํ„ฐ

์บ์‹œ ์˜ˆ์‹œ๋กœ ํ•˜๋ฃจ ์‹ ๊ทœ ๊ณ ์œ  ๋ฐฉ 109,200๊ฐœ๊ฐ€ ๋ชจ๋‘ ์ƒ์ฃผํ•˜๊ณ  ๋ฐฉ๋‹น 1,300B๋ฅผ ์“ด๋‹ค๋ฉด ์•ฝ 142MB๋‹ค. ์ดํ‹€์น˜ ์‹ ๊ทœ ๋ฐฉ์„ ๋ชจ๋‘ ๋ณด๊ด€ํ•˜๋ฉด ์•ฝ 284MB๋‹ค. ์ด๋Š” ์‹ค์ œ ์บ์‹œ ์ƒ์ฃผ ๋ฐฉ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ€์ •์— ๋”ฐ๋ฅธ ์˜ˆ์‹œ๋‹ค. ์บ์‹œ TTL, ์ด์ „ ๋ฐฉ์˜ ์žฌ๋ฐฉ๋ฌธ, ์ด๋ฏธ์ง€ ๋ฉ”์‹œ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ํ‚คยท์ž๋ฃŒ๊ตฌ์กฐยท์ง๋ ฌํ™” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ธก์ •ํ•ด์•ผ ํ•œ๋‹ค. WebSocket ์„ธ์…˜์„ ์ฑ„ํŒ… ์„œ๋ฒ„์—๋งŒ ๋ณด๊ด€ํ•œ๋‹ค๋ฉด ์œ„ 25.6MB๋Š” Valkey ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ์™ธํ•œ๋‹ค.

ElastiCache ๊ตฌ์„ฑ

๋‹ค๋ฅธ AZ์— ๊ธฐ๋ณธ ๋…ธ๋“œ 1๋Œ€์™€ ๋ณต์ œ ๋…ธ๋“œ 1๋Œ€, ์ด cache.t4g.small 2๋Œ€๋ฅผ ๋‘”๋‹ค. Multi-AZ ์ž๋™ ์žฅ์•  ์กฐ์น˜๋Š” ๊ธฐ๋ณธ ๋…ธ๋“œ ์žฅ์•  ์‹œ ๋ณต์ œ ๋…ธ๋“œ๋ฅผ ์Šน๊ฒฉํ•˜์ง€๋งŒ, ๋Š๊ธด Pub/Sub ๊ตฌ๋…์˜ ์ด๋ฒคํŠธ๋ฅผ ๋ณต๊ตฌํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์žฌ์—ฐ๊ฒฐยท์žฌ๊ตฌ๋…๊ณผ RDS ๋ˆ„๋ฝ ์กฐํšŒ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ณต์ œ ๋…ธ๋“œ๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋ฏ€๋กœ ๋…ธ๋“œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‘ ๋ฐฐ๋กœ ํ•ฉ์‚ฐํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์šฉ๋Ÿ‰์œผ๋กœ ๋ณด์ง€ ์•Š๋Š”๋‹ค. AWS Multi-AZ

cache.t4g.small์˜ ํ‘œ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋…ธ๋“œ๋‹น 1.37GiB๋‹ค. ์˜ˆ์•ฝ ๋ฉ”๋ชจ๋ฆฌ์™€ ์‹ค์ œ ํ‚ค ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ์™ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ด ์œ ํ˜•์€ ์ตœ์ข… ํ™•์ •๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์ด๋‹ค. CPU ํฌ๋ ˆ๋”ง, ๋ฉ”๋ชจ๋ฆฌ, ์—ฐ๊ฒฐ ์ˆ˜, ์ถœ๋ ฅ ๋ฒ„ํผ, ์žฅ์•  ์กฐ์น˜ ์ค‘ ์•Œ๋ฆผ ์ง€์—ฐ์„ ํ™•์ธํ•œ ๋’ค ํ™•์ •ํ•œ๋‹ค. AWS ๋…ธ๋“œ ์‚ฌ์–‘, ์˜ˆ์•ฝ ๋ฉ”๋ชจ๋ฆฌ ์ง€์นจ