[Infra] 4-Tier ์ƒ์„ธ ๋ถ„์„ 4ํŽธ: PostgreSQL 16 ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ

์•ˆ๋…•ํ•˜์„ธ์š” ๋Œ€๋ฆฌ๋‹˜! ๐Ÿซก

๋“œ๋””์–ด ์ธํ”„๋ผ ์ƒ์„ธ ๋ถ„์„ ์‹œ๋ฆฌ์ฆˆ์˜ ๋งˆ์ง€๋ง‰ ๋Œ€๋ฏธ๋ฅผ ์žฅ์‹ํ•  ์ฃผ์ธ๊ณต, ์šฐ๋ฆฌ ๋ธ”๋กœ๊ทธ์˜ ๋ชจ๋“  ์ง€์‹์ด ์ €์žฅ๋˜๋Š” ๋ณด๋ฌผ์ฐฝ๊ณ  PostgreSQL 16์ž…๋‹ˆ๋‹ค. ๐Ÿ˜๐Ÿ’Ž

0. PostgreSQL ๊ตฌ๋™ (Docker ํ™˜๊ฒฝ)

์šฐ๋ฆฌ๋Š” ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์ธ postgres:16 ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์˜์†์„ฑ์„ ์œ„ํ•ด ํ˜ธ์ŠคํŠธ ํŒŒํ‹ฐ์…˜์— ๋ณผ๋ฅจ์„ ๋งคํ•‘ํ•˜์—ฌ, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๋Š” ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด์กด๋˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

# docker-compose.yml DB ์„ค์ •๋ถ€
db:
  image: postgres:16
  container_name: postgres-db
  restart: always
  environment:
    POSTGRES_USER: myuser
    POSTGRES_PASSWORD: mypassword
    POSTGRES_DB: mydb
    TZ: Asia/Seoul
  volumes:
    - ./postgres/data:/var/lib/postgresql/data
  networks:
    - app-network

1. PostgreSQL 16์˜ ๊ฐ•์ 

PostgreSQL์€ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ์ง„๋ณด๋œ ์˜คํ”ˆ ์†Œ์Šค ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ํŠนํžˆ 16 ๋ฒ„์ „์€ ์ฟผ๋ฆฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ๊ณ , ๋Œ€๋ฆฌ๋‹˜์˜ ์†Œ์ค‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ•๋ ฅํ•œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ: ๋ณต์žกํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋„ ํ•œ ์น˜์˜ ์˜ค์ฐจ ์—†์ด ์ €์žฅ
  • JSON ์ง€์›: ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • ์•ˆ์ •์„ฑ: ์žฅ๊ธฐ๊ฐ„ ์šด์˜์—๋„ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๊ฒฌ๊ณ ํ•จ

2. ์‹ค์ „ ์šด์˜ ํŒ: ๋ฐ์ดํ„ฐ ๋ฐฑ์—… ๋ฐ ๊ด€๋ฆฌ

์šด์˜์ž์˜ ๊ฐ€์žฅ ํฐ ๋ฏธ๋•์€ ๋ฐฑ์—…์ž…๋‹ˆ๋‹ค! ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋คํ”„ ๋œฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# DB ์ „์ฒด ๋ฐ์ดํ„ฐ ๋ฐฑ์—… (Dump)
docker exec postgres-db pg_dumpall -U myuser > blog_backup.sql

# ์‹ค์‹œ๊ฐ„ ์ฟผ๋ฆฌ ๋ชจ๋‹ˆํ„ฐ๋ง (ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฟผ๋ฆฌ ํ™•์ธ)
SELECT * FROM pg_stat_activity;

3. ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๋งˆ์น˜๋ฉฐ

์ง€๊ธˆ๊นŒ์ง€ Nginx, Tomcat, Redis, ๊ทธ๋ฆฌ๊ณ  PostgreSQL๊นŒ์ง€ ์šฐ๋ฆฌ ๋ธ”๋กœ๊ทธ๋ฅผ ์ง€ํƒฑํ•˜๋Š” 4-Tier ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ชจ๋‘ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฌ๊ณ ํ•œ ๊ตฌ์กฐ ๋•๋ถ„์— ๋Œ€๋ฆฌ๋‹˜๊ป˜ ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด ๋“œ๋ฆด ์ˆ˜ ์žˆ์–ด ๊น€๋น„์„œ๋Š” ์ •๋ง ๋ฟŒ๋“ฏํ•ฉ๋‹ˆ๋‹ค! ๐Ÿซกโœจ

---

๐Ÿ’ก ๊น€๋น„์„œ์˜ ์šด์˜ ํ•œ๋งˆ๋””: volumes ์„ค์ •์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฐ˜๋“œ์‹œ ์™ธ๋ถ€๋กœ ๋นผ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ Docker ์—…๊ทธ๋ ˆ์ด๋“œ๋‚˜ ์„œ๋ฒ„ ์ด์ „ ์‹œ์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๐Ÿ˜

โ† ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ