빌드 산출물 / 실행 방식 차이¶
Next.js와 Node.js(Express)는 모두 Node.js 런타임 위에서 동작하지만,
운영 관점에서는 “무엇을 실행 대상으로 삼는가”가 근본적으로 다르다.
Express는 일반적으로 엔트리 스크립트(app.js 등)를 실행하는 구조인 반면,
Next.js는 빌드 결과물을 전제로 실행되는 애플리케이션이다.
이 차이로 인해 배포, 롤백, 환경 변수 반영 방식에서 운영 기준이 달라진다.
1. Node.js(Express) 실행 흐름 (일반적인 경우)¶
- 빌드 과정은 선택 사항
- 필요 시 TypeScript transpile, bundling 등을 수행할 수 있음
- 런타임은 특정 JS 엔트리 파일을 기준으로 동작
pm2 start app.js
Express의 경우, 빌드 산출물은 런타임의 “입력물”이지
실행 계약(contract) 자체는 아니다.
2. Next.js 실행 흐름 (운영 모드 기준)¶
- 빌드 단계 필수
- 런타임은 소스가 아닌 빌드 결과물(.next/)에 강하게 종속
npm run build
pm2 start ecosystem.config.cjs --env production --update-env
위 예시는 운영 표준 기준으로 단순화한 흐름이며,
실제 실행 정의는ecosystem.config.cjs에서 관리함.
.next/디렉토리는:- 페이지 렌더링 정보
- 서버/클라이언트 번들
- 정적 자산 메타데이터 를 포함한 실행에 필요한 산출물 집합
운영 모드(
next start)에서는
빌드 산출물이 없거나 불완전할 경우 정상 실행이 불가능하다.
3. 운영 관점 요약¶
| 항목 | Express | Next.js |
|---|---|---|
| 빌드 단계 | 선택적 | 필수 (운영 모드 기준) |
| 실행 기준 | JS 엔트리 파일 | 빌드 산출물 |
| 런타임-빌드 결합도 | 낮음 | 높음 |
| 배포 실패 주요 원인 | 코드/의존성 | 빌드 누락·불일치 |
4. 운영 기준선 (Baseline)¶
- Next.js는 빌드 결과물을 실행 계약으로 간주한다
- 배포 시:
npm run build성공 여부.next/산출물 완전성 을 반드시 검증한다
- Express 서버와 동일한 방식의 “소스 교체 배포”를 적용하지 않는다