[Infra] 4-Tier ์์ธ ๋ถ์ 3ํธ: Redis 7์ ํ์ฉํ ์ด๊ณ ์ ๋ฐ์ดํฐ ์บ์ฑ
์๋ ํ์ธ์ ๋๋ฆฌ๋! ๐ซก
์ธํ๋ผ ์์ธ ๋ถ์ ์๋ฆฌ์ฆ์ ์ธ ๋ฒ์งธ ์ฃผ์ธ๊ณต์ ์ฐ๋ฆฌ ์๋น์ค์ ์๋ ํฅ์์ ์ฑ ์์ง๋ ์ผ๋ฑ ๊ณต์ , Redis 7์ ๋๋ค. โก
0. Redis ๊ตฌ๋ (Docker ํ๊ฒฝ)
์ฐ๋ฆฌ๋ redis:7-alpine ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋งค์ฐ ๊ฐ๋ณ๊ณ ์์ ์ ์ธ ์ธ ๋ฉ๋ชจ๋ฆฌ(In-memory) DB ํ๊ฒฝ์ ๊ตฌ์ถํ์ต๋๋ค. ์ค์ ํ์ผ ์์ด๋ ๊ธฐ๋ณธ ์ฑ๋ฅ์ด ๋ฐ์ด๋์ง๋ง, ์ฐ๋ฆฌ ๋คํธ์ํฌ ํ๊ฒฝ์ ๋ง์ถฐ ์ต์ ํํ์ฌ ์ฐ๋ ์ค์
๋๋ค.
# docker-compose.yml Redis ์ค์ ๋ถ
redis:
image: redis:7-alpine
container_name: redis-cache
restart: always
environment:
TZ: Asia/Seoul
networks:
- app-network1. Redis์ ํต์ฌ ์ญํ : In-Memory DB
Redis๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๊ฐ ์๋ RAM(๋ฉ๋ชจ๋ฆฌ)์ ์ ์ฅํฉ๋๋ค. ๋๋ถ์ ์ผ๋ฐ์ ์ธ RDBMS(PostgreSQL ๋ฑ)๋ณด๋ค ์๋์ ์ผ๋ก ๋น ๋ฅธ ์ฝ๊ธฐ/์ฐ๊ธฐ ์๋๋ฅผ ์๋ํ์ฃ . ์ฐ๋ฆฌ ๋ธ๋ก๊ทธ์์๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฉ๋๋ก ํ์ฉ๋ฉ๋๋ค.
- ์กฐํ์ ๋ฐ ์ข์์ ์นด์ดํ : ๋น๋ฒํ๊ฒ ๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ
- ์์ ์ธ์ ์ ์ฅ: WAS ์ฌ์์ ์์๋ ๋ก๊ทธ์ธ์ ์ ์งํ๊ฑฐ๋ ์ํ๋ฅผ ๋ณด์กดํ๊ธฐ ์ํ ๋ณด์กฐ ์ญํ
- DB ๋ถํ ๊ฐ์: ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ์ฌ ๋ฉ์ธ DB์ ๋ถ๋ด์ ์ํ
2. ์ค์ ์ด์ ํ: Redis CLI ์ ์
๋ฐ์ดํฐ๊ฐ ์ ๋ค์ด๊ฐ๋์ง, ํน์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ด๋ค์ง ๊ถ๊ธํ ๋ ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ง์ ๋ช ๋ น์ด๋ฅผ ๋ ๋ ค๋ณผ ์ ์์ต๋๋ค.
# Redis CLI ์ ์ ๋ช
๋ น์ด
docker exec -it redis-cache redis-cli
# ์ค์๊ฐ ๋ชจ๋ํฐ๋ง (๋ชจ๋ ๋ช
๋ น ํ์ธ)
127.0.0.1:6379> monitor
# ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ํ์ธ
127.0.0.1:6379> info memory---
๐ก ๊น๋น์์ ์ด์ ํ๋ง๋: Redis๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ด๋ผ ์ ์์ด ๊บผ์ง๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ค์ํ ๋ฐ์ดํฐ๋ผ๋ฉด ๋ฐ๋์ RDB๋ AOF ์ค์ ์ ํตํด ๋ฐฑ์ ์ ๋ต์ ์ธ์ฐ๋ ๊ฒ์ด ๋๋ฆฌ๋์ ์์คํ ๋ฐ์ดํฐ๋ฅผ ์งํค๋ ๊ธธ์ ๋๋ค! ๐ซก
๋ค์ ํธ์์๋ ๋๋์ด ์ฐ๋ฆฌ ๋ฐ์ดํฐ์ ์ต์ข ๋ชฉ์ ์ง, PostgreSQL 16์ ๋ํด ์์ธํ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค. ๐โจ