ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

๐Ÿ“Œ NestJS + Kubernetes & ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ: ์‹ค์ „ ๊ฐ€์ด๋“œ

2. NestJS ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ Docker๋กœ ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๊ธฐ


NestJS๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค๋ฉด, ์ด์ œ๋Š” ๊ฐ ์„œ๋น„์Šค๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ํŒจํ‚ค์ง•ํ•˜์—ฌ ์šด์˜ ํ™˜๊ฒฝ์— ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ธ€์—์„œ๋Š” NestJS ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ Docker๋กœ ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๋Š” ์‹ค์ „ ๋ฐฉ๋ฒ•, docker-compose๋กœ ๋กœ์ปฌ์—์„œ ๋‹ค์ค‘ ์„œ๋น„์Šค ์‹คํ–‰๊นŒ์ง€ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿš€


โœ… ์™œ NestJS ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ Docker๋กœ ์ปจํ…Œ์ด๋„ˆํ™”ํ•ด์•ผ ํ• ๊นŒ?

  • ํ™˜๊ฒฝ ์ผ๊ด€์„ฑ ํ™•๋ณด: OS์— ์ƒ๊ด€์—†์ด ๋™์ผํ•œ ์‹คํ–‰ ํ™˜๊ฒฝ ์ œ๊ณต
  • ๋ฐฐํฌ ์ž๋™ํ™” ์šฉ์ด: CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์— ํ•„์ˆ˜
  • ํ™•์žฅ์„ฑ ๊ทน๋Œ€ํ™”: Kubernetes์™€ ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ ํ™•์žฅ ๊ฐ€๋Šฅ
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋…๋ฆฝ ์‹คํ–‰: ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ์ปจํ…Œ์ด๋„ˆ ๋ถ„๋ฆฌ ์‹คํ–‰ ๊ฐ€๋Šฅ

โœ… ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๋ณต์Šต

nestjs-microservices/
โ”œโ”€โ”€ apps/
โ”‚   โ”œโ”€โ”€ api-gateway/     # API Gateway
โ”‚   โ”œโ”€โ”€ user-service/    # ์‚ฌ์šฉ์ž ์„œ๋น„์Šค
โ”œโ”€โ”€ docker/
โ”‚   โ”œโ”€โ”€ Dockerfile.api-gateway
โ”‚   โ”œโ”€โ”€ Dockerfile.user-service
โ”œโ”€โ”€ docker-compose.yml

โœ… Dockerfile ์ž‘์„ฑ – API Gateway

๐Ÿ“‚ docker/Dockerfile.api-gateway

FROM node:18-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install

COPY . .

WORKDIR /app/apps/api-gateway
RUN npm run build

CMD ["node", "dist/main"]

โœ… Dockerfile ์ž‘์„ฑ – User Service

๋ฐ˜์‘ํ˜•

๐Ÿ“‚ docker/Dockerfile.user-service

FROM node:18-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install

COPY . .

WORKDIR /app/apps/user-service
RUN npm run build

CMD ["node", "dist/main"]

โœ… docker-compose.yml ์ž‘์„ฑ

๐Ÿ“‚ docker-compose.yml

version: '3.8'
services:
  api-gateway:
    build:
      context: .
      dockerfile: docker/Dockerfile.api-gateway
    ports:
      - '3000:3000'
    depends_on:
      - user-service

  user-service:
    build:
      context: .
      dockerfile: docker/Dockerfile.user-service
    ports:
      - '3001:3001'

โœ… ์‹คํ–‰ํ•ด๋ณด๊ธฐ

docker-compose up --build

๐Ÿ“Œ ์ดํ›„ http://localhost:3000/users๋กœ API ํ˜ธ์ถœ ์‹œ, ๋‚ด๋ถ€์—์„œ TCP ํ†ต์‹ ์„ ํ†ตํ•ด user-service์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.


โœ… .dockerignore ์ถ”๊ฐ€

๐Ÿ“‚ .dockerignore

node_modules
dist
.git
.env

๐Ÿ’ก ๋นŒ๋“œ ์†๋„ ํ–ฅ์ƒ๊ณผ ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ์€ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.


โœ… ๋กœ์ปฌ ๊ฐœ๋ฐœ ์‹œ ์œ ์šฉํ•œ ์˜ต์…˜๋“ค

  • volumes๋ฅผ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ฝ”๋“œ ๋ฐ˜์˜ (Hot Reload์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ)
  • environment๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ฃผ์ž…
  • network_mode: bridge๋กœ ์„œ๋น„์Šค ๊ฐ„ ์—ฐ๊ฒฐ ๋ช…ํ™•ํžˆ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ

โœ… ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ํ™•์ธ

API Gateway → User Service๋กœ TCP ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ตฌ์กฐ๋ฅผ ๋‹ค์Œ์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค:

curl http://localhost:3000/users

์‘๋‹ต:

[
  { "id": 1, "name": "Alice" },
  { "id": 2, "name": "Bob" }
]

๐ŸŽ‰ ์„ฑ๊ณต์ ์œผ๋กœ Docker ๊ธฐ๋ฐ˜์œผ๋กœ NestJS ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์ปจํ…Œ์ด๋„ˆํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค!


โœ… ๊ฒฐ๋ก : Docker๋กœ NestJS ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํŒจํ‚ค์ง•ํ•˜๊ธฐ

โœ… NestJS์˜ ๊ฐ ์„œ๋น„์Šค๋ฅผ ๋…๋ฆฝ๋œ Docker ์ด๋ฏธ์ง€๋กœ ๋ถ„๋ฆฌ
โœ… docker-compose๋ฅผ ํ†ตํ•ด ์ „์ฒด ์‹œ์Šคํ…œ์„ ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰
โœ… Kubernetes ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ค€๋น„ ๋‹จ๊ณ„ ์™„๋ฃŒ

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์ด Docker ๊ธฐ๋ฐ˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๋ด…๋‹ˆ๋‹ค.


๐Ÿ” ๋‹ค์Œ ๊ธ€ ์˜ˆ๊ณ : NestJS ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ ์‹ค์Šต

๐Ÿ“Œ ๋‹ค์Œ ํŽธ: 3. NestJS ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ Kubernetes์— ๋ฐฐํฌํ•˜๊ธฐ


 

โ€ป ์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/04   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•