반응형
5. Edge and Node.js Runtimes
- Next.js의 Context에서 Runtime은 코드의 실행 중 사용할 수 있는 라이브러리, API, 일반적인 함수 기능을 의미.
- Server에서는 2가지 runtime이 있다.
- Node.js Runtime : 기본 실행환경으로 모든 Node.js API와 호환 패키지에 접근할 수 있다.
- Edge Runtime : Web API를 기반으로하는 실행환경.
5-1. Runtime Differences
- Runtime을 선택할 때, 많은 부분을 고려해야 한다. 주요 차이점은 아래와 같다.
1.Edge Runtime
- Node.js API의 하위집합인 경량화된 실행 환경.
- 동적이거나 개인화된 컨텐츠를 낮은 지연 시간으로 제공하는 간단한 함수에 적합하다.
- 리소스를 최소한으로 사용하지만, 많은 경우 사용할 수 있지는 않다.
- 예를 들어, Vercel에서 실행 시 1MB ~ 4MB 크기의 제한을 가지고 실행될 수 있다. (패키지 import, 폰트와 파일, 배포환경등의 의존성을 포함하여 제한) 게다가, 모든 npm 패키지를 지원하지 않을 수 있다.(fs 모듈 등)
2. Node.,js Runtime
- 모든 Node.js API에 접근이 가능하고, 모든 npm 패키지를 지원한다. 그러나, Edge Runtime에 비해 Route의 실행 시간이 오래 걸린다.
- Node.js Server에 배포 시 관리 방법, 스케일링, 환경 구축등이 필요하다. 이를 대체하기 위해 Vercel과 같은 Serverless 배포 환경을 사용하면 이를 해결해준다.
3. Serverless Node.js
- Edge Runtime보다 복잡한 계산 부하를 처리할 수 있는 확장 가용성이 필요할 때 적합.
- Vercel의 Serverless 함수를 사용하면, 모든 import 요소를 포함해 크기가 50MB이다.
- Route를 처리하기 위해 Serverless 함수가 부팅되는데 시간이 수백 밀리초가 걸릴 수 있다는 단점이 있고, 자주 부팅 되지 않기 때문에 지연이 발생할 수 있다.
처음 뵙겠습니다.
Next.js 사용하면서 처음 본 개념이거나, 이해하기 어려운 부분(?)은 붉은색 볼드처리 해봤다.
Preference
Rendering: Edge and Node.js Runtimes | Next.js
Learn about the switchable runtimes (Edge and Node.js) in Next.js.
nextjs.org