Post

๐ŸŽฑ REDIS ๋ฐฐํฌ ์ „๋žต ์งœ๊ธฐ - ElastiCache๋ฅผ ์ฒ˜์Œ์œผ๋กœ ์จ๋ณด๋‹ค.

๐ŸŽฑ REDIS ๋ฐฐํฌ ์ „๋žต ์งœ๊ธฐ - ElastiCache๋ฅผ ์ฒ˜์Œ์œผ๋กœ ์จ๋ณด๋‹ค.

๐Ÿ–ค Intro

์ด์ œ REDIS๋ฅผ ๋ฐฐํฌํ• ๋•Œ โ€œ์–ด๋–ป๊ฒŒ ๋ฐฐํฌํ• ์ง€โ€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•  ๋‹จ๊ณ„์ด๋‹ค.

Redis๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€, EC2์— ์ง์ ‘ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ElastiCache๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ๋‚˜์˜ ๊ฒฝ์šฐ ์ตœ๋Œ€ํ•œ 3-tier ์•„ํ‚คํ…์ฒ˜ ๋ถ„๋ฆฌ ๊ด€์ ์—์„œ ์•„ํ‚คํ…์ฒ˜์ ์œผ๋กœ ๊ฐ€์žฅ ๊น”๋”ํ•œ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๊ณ ์ž ํ•œ๋‹ค. ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„์ง€๋ฅผ ์•Œ์•„๋ณด์ž.

๐Ÿฉถ Start

EC2 ? ElastiCache? ๋ญ๊ฐ€ ์ข‹์€ ์„ ํƒ์ผ๊นŒ?

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

ElastiCache๋Š” ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ๋ณด์•ˆ ์„ค์ •, ๋ฐฑ์—…, ์žฅ์•  ๋Œ€๋น„ ๋“ฑ์˜ ๋ชจ๋“  ๋ถ€๊ฐ€ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ๋“ค์„ AWS๊ฐ€ ์•Œ์•„์„œ ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋‹จ์ ์ด ์žˆ๋‹ค๋ฉด ๋Œ€์‹ , ๋ชจ๋“ˆ/์ปค์Šคํ…€์— ์ œ์•ฝ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ๊ทธ๋ƒฅ EC2 ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น„์šฉ์ด ๋” ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ElastiCache๊ฐ€ ๋…ธ๋“œ๋‹จ์œ„ ๊ณผ๊ธˆ ์ฒด๊ณ„๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋…ธ๋“œ ๋‹จ์œ„ ๊ณผ๊ธˆ?

ElastiCache์—์„œ Redis ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค ๋•Œ, ๋…ธ๋“œ ํƒ€์ž…(์˜ˆ: cache.t3.micro, cache.r6g.large)๊ณผ ๋…ธ๋“œ ๊ฐœ์ˆ˜(ํ”„๋ผ์ด๋จธ๋ฆฌ 1๊ฐœ + ๋ฆฌ๋“œ ๋ ˆํ”Œ๋ฆฌ์นด ๋ช‡ ๊ฐœ)๋ฅผ ์ •ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์š”๊ธˆ์€ ์‹œ๊ฐ„๋‹น ๋…ธ๋“œ ์š”๊ธˆ * ๋…ธ๋“œ ๊ฐœ์ˆ˜๋กœ ๊ณ„์‚ฐ๋˜์ด๊ฒŒ 1๊ฐœ๋ฅผ ์“ฐ๋“ , 10๊ฐœ๋ฅผ ์“ฐ๋“  ๊ฐ๊ฐ ๋…ธ๋“œ๋ณ„๋กœ 24์‹œ๊ฐ„ ๋™์•ˆ ๊ณ„์† ์š”๊ธˆ์ด ๋‚˜๊ฐ€๋Š” ์‹์ด๋‹ค.

EC2์— ์˜ฌ๋ฆด๊ฒฝ์šฐ, EC2๋ผ๋Š” ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์š”๊ธˆ๋งŒ ์ฒญ๊ตฌ๋˜์ง€๋งŒ, ์ด๋Š” ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— โ€œ๋…ธ๋“œ(=Redis ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค)โ€ ๋‹จ์œ„๋กœ ๊ณผ๊ธˆ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

ElastiCache๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž!

ec2์— redis๋ฅผ ์˜ฌ๋ฆด๊ฒฝ์šฐ, ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์žฅ์•  ๋Œ€๋น„, ๋ณด์•ˆ ๊ทธ๋ฃน ๊ด€๋ฆฌ, ๋ฐฑ์—… ๋“ฑ์˜ ๋ณต์žกํ•œ ์šด์˜ ์š”๊ตฌ์‚ฌํ•ญ๋“ค์„ ๋‚ด๊ฐ€ ์ง์ ‘ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํŠนํžˆ Sentinel/ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

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

ElastiCache์˜ ๊ฒฝ์šฐ๋Š” ์ด ๋ชจ๋“  ๊ณผ์ •์ด ์ž๋™ํ™” ๋˜์–ด ์žˆ์–ด์„œ ๋งˆ์Šคํ„ฐ ์ฃฝ์œผ๋ฉด ์ž๋™์œผ๋กœ ๋ฆฌ๋“œ๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ ์Šน๊ฒฉ ์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด์— ๋Œ€ํ•œ ๋Œ€๋น„๋ฅผ ํ•œ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ์งง์€ ๋งŒํผ, ์ด ๋ชจ๋“ ๊ฑธ ๋‹ค ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ƒ ๋ฌด๋ฆฌ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ์ด ๋ชจ๋“ ๊ฒƒ์„ ๋Œ€์‹ ํ•ด์„œ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ElastiCache๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž

๊ทธ๋ ‡๋‹ค๋ฉด serverless? ์ผ๋ฐ˜ elasticache?

eleaticache์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์ด ์žˆ๋‹ค. ํ•˜๋‚˜๋Š” serverless๊ณ , ํ•˜๋‚˜๋Š” ์ผ๋ฐ˜ ๋ฒ„์ „์ด๋‹ค. ์ด ๋‘๊ฐ€์ง€์˜ ์ฐจ์ด๊ฐ€ ๋ญ”์ง€๋ฅผ ์•Œ์•„๋ณด๊ณ , ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์–ด๋–ค ๊ฒƒ์„ ์ ์šฉํ•˜๋ฉด ์ข‹์„์ง€๋ฅผ ์•Œ์•„๋ณด์ž.

serverless์˜ ๊ฒฝ์šฐ, AWS๊ฐ€ ์ž๋™์œผ๋กœ ์šฉ๋Ÿ‰์„ ๊ด€๋ฆฌํ•ด์ฃผ๊ณ , ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํ™•์žฅ/์ถ•์†Œ๋ฅผ ๋„์™€์ค€๋‹ค. ์ฆ‰, ์ธํ”„๋ผ ๊ด€๋ฆฌ๋ฅผ ์ „๋ถ€ AWS๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด์ฃผ๋ฏ€๋กœ, ์ธํ”„๋ผ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.

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

์ด๋ ‡๊ฒŒ ๋ง๋งŒ ๋“ค์œผ๋ฉด serverless๊ฐ€ ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์—ฌ๊ธฐ์—๋Š” ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ๋ฐ”๋กœ API ์š”์ฒญ๋‹น ๋น„์šฉ์ด ์ฒญ๊ตฌ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋‹จ๊ธฐ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ฑ—๋ด‡ ํ•œ ๋งˆ๋”” ํ•œ๋งˆ๋””์— API ์š”์ฒญ์„ ํ•ด์•ผ ํ•˜๋Š” ์šฐ๋ฆฌ๋กœ์จ๋Š” ๊ต‰์žฅํžˆ ๋ถˆ๋ฆฌํ•œ ๊ตฌ์กฐ์ด๋‹ค.

์ผ๋ฐ˜ ElastiCache๊ฐ€ ์ธ์Šคํ„ด์Šค ๋น„์šฉ๋งŒ ์ง€๋ถˆํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ๊ณผ๋Š” ์• ์ดˆ์— ๋‹ค๋ฅธ ๊ตฌ์กฐ์ธ ๊ฒƒ์ด๋‹ค.

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

์ฆ‰ ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ผ๋ฐ˜ elasticache + t3.micro์™€ ๊ฐ™์€ ์ž‘์€ ์ธ์Šคํ„ด์Šค ์กฐํ•ฉ์œผ๋กœ ์‹ค์Šตํ•ด๋ณด๋„๋ก ํ•˜์ž.

โญ ElastiCache์— ์šฐ๋ฆฌ REDIS ๋ฐฐํฌํ•˜๊ธฐ

๋ชจ๋“  ์„ค์ • ๊ณผ์ •์€ ๊ณต์‹๋ฌธ์„œ์˜ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค.

ElastiCache ์„ค์ • - Amazon ElastiCache

์ด๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์บ์‹œ์— ์—ฐ๊ฒฐํ•  EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ๋‚˜์˜ ๊ฒฝ์šฐ๋Š” ์˜ˆ์ „์— ์‹œ๋ฒ”์ƒ ์‚ฌ์šฉํ–ˆ๋˜ EC2๊ฐ€ ์žˆ์–ด์„œ ์ด๊ฑธ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

image.png

testEc2๋ฅผ ์ด์šฉํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

REDIS๋ฅผ ์œ„ํ•œ ์ธ๋ฐ”์šด๋“œ ๋ณด์•ˆ ๊ทœ์น™ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜๊ธฐ

image.png

redis (elasticache)์—์„œ ec2์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์„ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

์ด๋Š” elasticache์—์„œ ์‚ฌ์šฉํ•  ๋ณด์•ˆ ๊ทœ์น™์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

๋‚˜์˜ ๊ฒฝ์šฐ๋Š” ๊ฐœ๋ฐœ ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉํ•ด์•ผ ํ•ด์„œ ์ผ๋‹จ ๋‚ด ip์—์„œ ์ ‘๊ทผํ•  ๋•Œ๋„ ๊ฐ™์ด ์—ด์–ด์ฃผ์—ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ VPC์˜ ๊ฒฝ์šฐ, ํ”„๋ผ์ด๋น— IP๋กœ ์—ฐ๊ฒฐ ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— EC2์˜ ํ”„๋ผ์ด๋น— IP๋ฅผ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ•œ๋‹ค.

์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ,,๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ํŒ€์ด ๋‹ค ๋ ˆ๋””์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ด์„œ IPv4 ํฌํŠธ๋ฅผ 0.0.0.0์œผ๋กœ ์—ด์–ด์•ผ ํ•˜๋‚˜ ํ•˜๋Š” ๊ณ ๋ฏผ์ด ์žˆ์—ˆ๋Š”๋ฐ ์ด๋Ÿด ๊ฒฝ์šฐ ํ•ดํ‚น ์œ„ํ—˜์ด ๋„ˆ๋ฌด ํฌ๋‹ค๊ณ  ํ•œ๋‹คโ€ฆ..

์ด๊ฑธ SSH๋กœ ์ ‘์†ํ•˜๋Š” ๋ฐฉ๋ฒ•, ์šฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ฐœ๋ฐœ์ค‘์—๋Š” ์ผ๋‹จ ๊ฐ์ž ๋กœ์ปฌ Redis๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•, ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์— ๋ ˆ๋””์Šค๋ฅผ ์“ฐ๋Š” ํŒ€์›๋“ค์˜ ip๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฑด ์–ด๋–ป๊ฒŒ ํ• ์ง€ ๊ณ ๋ฏผ์„ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค..!

ElastiCache ์ƒˆ ์บ์‹œ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ธฐ - Valkey ์บ์‹œ

Redis OSS ์„œ๋ฒ„๋ฆฌ์Šค ์บ์‹œ ์ƒ์„ฑ - Amazon ElastiCache

์ด์ œ ์‚ฌ์šฉํ•  ๋ณด์•ˆ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™๊นŒ์ง€ ํ•˜๋‚˜ ๋งŒ๋“ค์—ˆ์œผ๋‹ˆ elasticache๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž.

ap-northeast-2.console.aws.amazon.com

ํ•ด๋‹น ์‚ฌ์ดํŠธ์—์„œ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์šฐ๋ฆฌ๋Š” Valkey ์บ์‹œ๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ด๋ฏ€๋กœ, ์ด๊ฑธ ๋ˆŒ๋Ÿฌ์ฃผ๊ณ , ์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•˜๋“ฏ์ด ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

Valkey ์บ์‹œ vs Redis OSS ์บ์‹œ

๋ฌธ๋“ ๊ถ๊ธˆํ•œ ์ ์ด ์ƒ๊ธด๊ฒŒ, ์›๋ž˜ Redis OSS ์บ์‹œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋‹ค๊ฐ€ Valkey ์บ์‹œ๊ฐ€ ๋น„์šฉ์ด ๋” ์ €๋ ดํ•˜๋Œ€์„œ ์ด์ชฝ์œผ๋กœ ๋…ธ์„ ์„ ํŠผ ๊ฒƒ์ธ๋ฐ, ๋‘˜์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”๊ฑธ๊นŒ?

์ฐพ์•„๋ณด๋‹ˆ ๋”ฑํžˆ ๊ธฐ๋Šฅ์ƒ์˜ ํฐ ์ฐจ์ด๋Š” ์—†๊ณ , ๋…ธ๋“œ ๊ธฐ๋ฐ˜์—์„œ 20% ์ €๋ ดํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ํŠนํžˆ ์šฐ๋ฆฌ์ฒ˜๋Ÿผ ๋‹จ๊ธฐ์ ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ๋น„์šฉ์„ ์•„๋ผ๊ณ ์ž ํ• ๋•Œ ๋” ์ข‹์€ ์„ ํƒ์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

image.png

์ด์ œ ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•ด๋ณด์ž.

์—”์ง„์€ Valkey, ๋ฐฐํฌ ์˜ต์…˜์€ ์„œ๋ฒ„๋ฆฌ์Šค๊ฐ€ ์•„๋‹Œ ์ž์ฒด ์บ์‹œ ์„ค๊ณ„, ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ ๊ฐ„ํŽธํ•œ ์ƒ์„ฑ์œผ๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ƒ์„ฑํ•ด์ค€๋‹ค.

์ฐธ๊ณ ๋กœ ์บก์ณ๋Š” ๋ชปํ–ˆ์ง€๋งŒ, ์ธ์Šคํ„ด์Šค ์šฉ๋Ÿ‰ ํฌ๊ฒŒ ์žก์œผ๋ฉด ๋น„์šฉ ํญํƒ„ ๋งž์œผ๋ฏ€๋กœ ๊ตฌ์„ฑ์€ ๋ฐ๋ชจ(t4g.micro)๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.

image.png

์—ฐ๊ฒฐ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€, VPC๊ฐ€ ๋‚ด๊ฐ€ ์—ฐ๊ฒฐํ•  ์ธ์Šคํ„ด์Šค์˜ VPC์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

image.png

์ข€ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋‹ค๋ณด๋ฉดโ€ฆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์บ์‹œ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

ElastiCache์„ค์ •์„ server์— ์—ฐ๋™ํ•˜๊ธฐ

๋‚˜์˜ ๊ฒฝ์šฐ local์—์„œ ๊ฐœ๋ฐœํ• ๋•Œ๋Š”, redis๊ฐ€ ๋”์ด์ƒ window๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„์„œ docker๋กœ containering์„ ํ•œ ๋‹ค์Œ์— ๊ฐœ๋ฐœํ–ˆ์—ˆ๋Š”๋ฐ, ElastiCache์— ์˜ฌ๋ฆด ๊ฒฝ์šฐ, ElastiCache์—์„œ ์•Œ์•„์„œ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•ด์ฃผ๋ฏ€๋กœ docker๋กœ ๊ฐ์‹ธ์„œ ์˜ฌ๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ํ•œ๋‹ค! ๊ทธ๋ž˜์„œ ๊ทธ๊ฑฐ์— ๋งž์ถฐ์„œ ๋ฐฐํฌ๋ฅผ ์‹œ์ž‘ํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค.

image.png

์•„, ๊ทธ์ „์— ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์—ˆ๋˜ redis ๋ณด์•ˆ ๊ทธ๋ฃน์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋Š”๊ฒƒ๋„ ์žŠ์ง€ ๋ง์ž.

1
2
3
4
  data:
    redis:
      host: localhost
      port: 6379

์ดˆ๋ฐ˜์— local์—์„œ ๊ฐœ๋ฐœํ• ๋•Œ ์„ค์ •ํ–ˆ๋˜ yml ํŒŒ์ผ์ด๋‹ค.

์—ฌ๊ธฐ์„œ host๋ฅผ ์šฐ๋ฆฌ ElastiCache์˜ ํ™˜๊ฒฝ์œผ๋กœ ๋งž์ถ”๋ฉด ๋œ๋‹ค.

image.png

์ƒ์„ฑ๋œ ElastiCache์— ๊ฐ€๋ณด๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์žˆ๋‹ค. ์ด๊ฑธ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
spring:
  config:
    import: optional:file:.env[.properties]
  datasource:
    url: ${DB_URL}
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}
  jpa:
    hibernate:
      ddl-auto: create #ddl ์ƒ์„ฑ์„ ์œ„ํ•ด ์ผ๋‹จ create๋กœ ์„ค์ •
    open-in-view: false
  jackson:
    property-naming-strategy: SNAKE_CASE
    time-zone: Asia/Seoul
  data:
    redis:
      host: ${REDIS_HOST:localhost}
      port: ${REDIS_PORT:6379}

๋‹ค์Œ๊ณผ ๊ฐ™์ด .env ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ฃผ์ž…๋ฐ›๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ์„ค์ •์„ ๋งˆ์ณค์œผ๋ฉด ๊ฑฐ์˜ ๋‹ค ๋œ ๊ฒƒ์ด๋‹ค!!! ์ถ•ํ•˜์ถ•ํ•˜ํ•œ๋‹ค

์ด์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ด์„œ redis ์—ฐ๊ฒฐ ๋กœ๊ทธ๊ฐ€ ์ž˜ ์ฐํžˆ๋Š”์ง€๋ฅผ ๋ณด๋ฉด ๋œ๋‹ค.

1
2
3
4
logging:
  level:
    org.springframework.data.redis: DEBUG
    io.lettuce: DEBUG

์ฐธ๊ณ ๋กœ ๋‚˜๋Š” ๋กœ๊ทธ๊ฐ€ ์ž˜ ์•ˆ๋ณด์—ฌ์„œ yml์— ํ•ด๋‹น ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

1
2025-09-07T16:08:42.868+09:00 DEBUG 32168 --- [  restartedMain] o.s.d.r.l.RedisMessageListenerContainer  : Postpone listening for Redis messages until actual listeners are added

๋ ˆ๋””์Šค ๋ฆฌ์Šค๋„ˆ ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค. ์ •์ƒ์ ์œผ๋กœ ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!

This post is licensed under CC BY 4.0 by the author.