Next.js로 개발한 프로젝트를 배포하려면 Docker와 Node.js를 사용해서 배포하는 게 가장 일반적이다. 특히 대규모 서비스나 클라우드 환경에서는 Docker가 거의 표준이기 때문에 이 방식을 익혀두는 게 좋다. 하지만 꼭 Docker만 있는 건 아니다. 다른 방식도 있으니 한 번 정리해보자.
■ Next.js 배포 시 Node.js가 필요한 이유
Next.js는 기본적으로 React 기반의 프레임워크이지만, 정적 사이트가 아니라면 서버 환경에서 실행될 필요가 있다. 이때 Next.js의 서버사이드 렌더링(SSR)과 API Routes 기능을 사용하려면 Node.js가 필수적이다.
Node.js가 필요한 이유:
- Next.js의 SSR(Server-Side Rendering) 기능을 실행하기 위해 필요
- API Routes(/api/) 기능을 사용하려면 Node.js 런타임이 필수
- Next.js 서버 실행(npm run start)을 위해 Node.js 환경이 필요
즉, Next.js는 Node.js 환경에서 실행되어야 제대로 동작한다. 그래서 Next.js를 배포할 때는 Node.js가 반드시 필요하다.
■ Docker + Node.js로 배포 (가장 많이 사용됨)
왜 Docker를 사용할까?
- Node.js와 Next.js 환경을 어디서든 동일하게 유지할 수 있다.
- 컨테이너로 관리하니까 배포, 확장, CI/CD가 쉬움.
- AWS, GCP, Azure 같은 클라우드 서비스에서도 최적화됨.
Docker에서 컨테이너가 어떻게 동작하는가?
Docker는 기본적으로 컨테이너를 실행하는 기술이다. 컨테이너 내부에서 실행되는 서비스는 각각 독립적인 환경에서 실행되며, 이미지 한 개당 컨테이너 하나가 생성된다.
즉, Docker를 실행하면 Node.js가 포함된 컨테이너가 생성되고, 그 컨테이너에서 Next.js가 실행된다.
■ 그 외 배포 방법
1. PM2 + Node.js로 배포 (서버 한 대에서 운영할 때 적합)
Docker가 부담스럽다면? 그냥 Node.js 환경에서 PM2로 관리하는 방법도 있다.
장점:
- Docker 없이 간단하게 Next.js를 실행 가능
- 단순한 서버 환경에서 사용하기 적합
단점:
- 여러 서버에 배포할 때 관리가 불편함
- 개발 환경과 운영 환경이 다를 수도 있음
2. next export + Nginx (정적 사이트로 배포)
Next.js의 정적 사이트 생성 기능(next export)을 사용하면 Node.js 없이도 배포할 수 있다.
npm run build
npm run export
이렇게 하면 out/ 폴더가 생성되는데, 여기에 모든 HTML, CSS, JS 파일이 들어있다. 그냥 Nginx, Apache 같은 웹 서버로 서빙하면 끝!
장점:
- 서버 자원 거의 사용하지 않음 (HTML 파일이라 부담 없음)
- 속도가 빠름 (SSR 없이 정적 파일만 제공)
단점:
- API Routes(/api/) 사용 불가
- SSR 기능도 불가 (모든 페이지가 정적인 HTML로 변환됨)
그래서 블로그, 포트폴리오 같은 정적인 웹사이트에 적합하다.
3. Vercel (Next.js 공식 배포 플랫폼)
Next.js는 Vercel에서 개발했기 때문에 Vercel에서 배포하는 게 가장 쉽다.
장점:
- 자동 배포 가능 (GitHub 연동 시 푸시하면 자동으로 배포됨)
- 무료 플랜 제공
단점:
- 클라우드 기반이라 폐쇄망에서는 사용 불가
- 서버 직접 관리가 필요하면 적합하지 않음
■ 결론: Docker가 가장 많이 사용된다
1. 운영 환경이 복잡하거나 여러 서버에서 관리해야 한다면 Docker 사용 추천!
2. 단순한 서버 운영이라면 PM2도 충분함.
3. 정적인 페이지라면 next export를 활용하면 좋음.
4. 클라우드에서 빠르게 배포하려면 Vercel을 쓰는 것도 방법.
'Node.js' 카테고리의 다른 글
[Node.js] 프론트엔드와 백엔드를 하나로 연결하는 강력한 도구 (1) | 2024.12.17 |
---|