Node가 한 서버당 약 380메가 정도 먹고있었는데 줄이는 법을 찾았다!!

24일 기준 5G -> 2.5G로 줄었다!
어떻게했냐?
도커 이미지 말떄 빌드 + 실행을 이미지/컨테이너에서 했는데
이제는 빌드된 결과물만 가지고 실행해서그럼!!
기존 코드 ( 예시)
FROM node:18
WORKDIR /app
COPY . .
RUN npm install && npm run build
CMD ["npm", "start"]
->
지금 방식: 빌드된 결과물만 가지고 실행
# --- 빌드 단계 ---
FROM node:18 AS builder
WORKDIR /app
COPY . .
RUN npm install && npm run build
# --- 런타임 단계 ---
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]
왜 메모리가 줄어들었나?
1. 불필요한 코드와 라이브러리가 없어짐
- 예전엔 빌드 도구 (예: webpack, typescript, eslint 등)도 컨테이너에 들어있었어.
- 이런 도구들은 Node.js가 실행되면서 직접 사용하진 않아도, 메모리를 차지할 수 있음 (특히 일부 메모리 캐시나 preload).
- 지금은 실행에 꼭 필요한 코드만 존재하니까 가볍지.
2. 개발 의존성(devDependencies) 제거
- 예전: npm install로 devDependencies도 같이 설치됨
- 지금: npm install --only=production 또는 NODE_ENV=production 으로 실제 서비스에 필요한 라이브러리만 설치
➡️ 불필요한 대형 패키지들 (예: webpack, eslint, ts-node)이 빠짐
➡️ → 메모리 점유량 감소
'TIL' 카테고리의 다른 글
| Ingress Controller rewrite 안될때 (2) | 2025.07.30 |
|---|---|
| 서버가 달라도 빠르게 통신하는 방법 ( 쿠버네틱스 ) (1) | 2025.07.29 |
| Loki란 (0) | 2025.07.23 |
| HPA 오토스케일링 서버 첫 cpu 스파이크 무시하기 (0) | 2025.07.20 |
| Node JS는 100%싱글스레드가 아니다. (0) | 2025.07.20 |