1. 탐구
1. Build
: 애플리케이션 코드를 Production환경에 적합한 형태로 준비하는 일련의 단계
1. Next.js와 Build
- Build Time에 서버에 배포되어 사용자에 의해 사용될 준비가 된 파일로 만드는 것들
- 정적으로 생성한 HTML 파일
- 서버에서 렌더링된 페이지를 위한 JS 코드
- 클라이언트에서 페이지를 interactive하게 만들기 위한 JS 코드
- CSS 파일
$ next build를 치면, compile과정을 거친 후 시스템이 실행가능해지도록 만듬build타임에 HTML파일을 생성
- Compiling (babel)
- Next.js의 코드 -> JS코드로 컴파일링
- Minifing
- 코드의 기능을 변경하지 않으면서 줄바꿈, 공백 같은 불필요한 코드 포맷을 없애줌
- Bundling (webpack)
- 브라우저에서 최적화된 번들로 파일을 병합
- 개발 과정에서 나눈 컴포넌트나 함수를 하나의 파일로 합쳐줌
- 브라우저에서 최적화된 번들로 파일을 병합
- Code Splitting
- Entry Point에서 필요한 작은 Chunk로 애플리케이션을 분할
2. Runtime
: 컴퓨터 시스템에 의해 프로그램이 실행 되는 단계
.exe파일을 동작시키는 과정runtime error: 0나누기error, null 참조error, memory 부족error등 실행이 되어야만 확인 가능한 에러compile중에는 감지하지 못하는 에러들
1. Next.js와 Runtime
$ next start를 치면, 어플리케이션이 runtime이 된다.
2. 공식 문서
Next.js
- Vercel을 이용해서 관리된 Next.js를 배포할 수도 있고, Node.js 서버, Docker 이미지, 혹은 정적인 파일로 스스로 배포할 수도 있다. next start로 배포한다면, 모든 Next.js의 기능을 사용할 수 있다.
Production 빌드
- next build를 실행하면 production을 위해 당신의 앱을 최적화한다. HTML, CSS, JS파일은 당신의 페이지 기반으로 만들어진다. Next.js 컴파일러를 이용하여 JS는 컴파일되고 브라저 번들은 minify된다. 이는 최고의 성능과 모든 브라우저를 지원하기 위함이다.
- Next.js는 표준의 배포 output을 생상한다. 이것은 두 배포 방법(직접 & vercel) 모두 모든 기능을 지원하기 위함이다. 다음 버전에서 우리는 우리의 Build Output API 명세에 맞게 업그레이드 할 것이다.
Next.js를 Vercel에 의해 관리할 때
- Next.js를 만들고 유지보수하는 Vercel은 관리되는 환경과 개발자들이 Next.js 앱을 관리하는 개발 경험을 제공한다.
- 설정이 하나 필요 없고 추가적인 스케일 조절이나, 성능을 조절할 수 있다. 하지만, 모든 Next.js 기능을 사용하려면 직접 배포해야한다.
Next.js를 직접 배포할 때
- Node.js 서버
npm run build
npm run start
- Docker 이미지
- 쿠버네티스같은 컨테이너 Orchestrator를 이용해도 된다.
- Docker 설치
docker build -t nextjs-docker .docker run -p 3000 nextjs-docker
- 정적 배포
- 단일 페이지나 정적인 페이지로 만들고, 나중에 서버가 필요한 기능을 추가해도 된다.
- RSC도 정적 배포에서 지원한다.