Next.js (17. Deploying) 정리
0. 배포
Next.js는 네 가지 방식으로 배포할 수 있다.
| 배포 옵션 | 기능 지원 |
|---|---|
| Node.js 서버 | 전체 지원 |
| Docker 컨테이너 | 전체 지원 |
| 정적 export | 제한적 |
| 어댑터 | 플랫폼마다 다름 |
1. Node.js 서버
Node.js를 지원하는 모든 프로바이더에 배포할 수 있다. package.json에 build와 start 스크립트가 있는지 확인한다.
1
2
3
4
5
6
7
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}
}
npm run build로 빌드하고 npm run start로 Node.js 서버를 실행한다. 모든 Next.js 기능을 지원하며, 필요한 경우 커스텀 서버로 전환할 수 있다.
2. Docker 컨테이너
Docker를 지원하는 모든 프로바이더에 배포할 수 있다. Kubernetes 같은 컨테이너 오케스트레이터와 Docker를 실행하는 클라우드 프로바이더를 포함한다.
모든 Next.js 기능을 지원한다.
Mac과 Windows에서 개발 시 Docker 대신 로컬 개발(
npm run dev)을 사용하면 성능이 더 좋다.
주요 Docker 예시:
- Docker Standalone Output (
output: "standalone") — 런타임 파일만 포함한 최소 프로덕션 이미지 생성 - Docker Export Output (
output: "export") — 정적 HTML 파일을 생성해 경량 컨테이너로 서빙 - Docker Multi-Environment — 개발/스테이징/프로덕션 환경별 별도 Docker 설정 관리
3. 정적 export
정적 사이트 또는 SPA로 시작해 이후 서버 기능을 추가할 수 있다. HTML/CSS/JS 정적 에셋을 서빙할 수 있는 모든 웹 서버에 배포 가능하다. AWS S3, Nginx, Apache, GitHub Pages 등이 해당된다.
정적 export는 서버가 필요한 Next.js 기능을 지원하지 않는다.
4. 어댑터
어댑터는 플랫폼에 맞게 Next.js 빌드와 배포 방식을 커스터마이징한다. Deployment Adapter API를 통해 플랫폼이 Next.js 애플리케이션을 적응시킬 수 있다.
4-1. Verified Adapters
Verified Adapter는 오픈 소스이며 Next.js 호환성 테스트 스위트를 통과한 공식 검증 어댑터다. Next.js 팀이 주요 릴리스 전 해당 플랫폼과 함께 테스트를 조율한다.
- Vercel
- Bun
Cloudflare와 Netlify는 Adapter API 기반의 Verified Adapter를 개발 중이다. 현재는 자체 Next.js 통합을 제공하고 있다.
4-2. 기타 플랫폼
다음 플랫폼은 자체 Next.js 통합을 제공하지만, 공식 Adapter API 기반이 아니므로 기능 지원과 호환성은 플랫폼마다 다를 수 있다.
- Appwrite Sites
- AWS Amplify Hosting
- Cloudflare
- Deno Deploy
- Firebase App Hosting
- Netlify
