9.5
Edge와 Node.js Runtimes
Runtime은 일반적으로 프로그램이 실행되는 동안 필요한 시스템 및 소프트웨어 환경을 의미합니다. 그리고 Next.js 관점에서의 Runtime은 Next.js 애플리케이션의 코드가 실행 되는 환경을 의미한다고 이해하면 됩니다. Next.js의 Runtime으로는 Edge Runtime과 Node.js Runtime이 있습니다. 지금부터 각 Runtime에 대해서 하나씩 살펴보도록 하겠습니다.
Edge Runtime은 Web API를 기반으로 한 실행 환경입니다. Node.js API의 일부를 지원하며, 사용자들에게 빠른 속도로 동적인 컨텐츠를 제공하고 싶을 경우에 적합합니다. Edge Runtime은 코드의 용량이나 사용할 수 있는 API 등에 제약이 있기 때문에 모든 시나리오에 대해서 사용할 수는 없습니다. 예를 들면, Edge Runtime에서 지원하지 않는 Node.js의 API를 사용하는 라이브러리는 사용할 수 없습니다. 하지만 Edge Runtime으로 개발이 가능한 경우에는, 사용하면 빠르게 컨텐츠를 제공할 수 있다는 이점이 있습니다. 그래서 각 상황에 맞게 Runtime을 잘 선택해서 사용하는 것이 중요합니다.
Next.js에서 Edge Runtime를 사용하기 위해서는 아래 예시 코드와 같이 페이지나 레이아웃 파일에 runtime이라는 상수 값을 edge로 설정하여 named export 하면 됩니다.
// app/page.tsx
export const runtime = 'edge'; // 'nodejs' (기본값) | 'edge'
// app/layout.tsx
export const runtime = 'edge'; // 'nodejs' (기본값) | 'edge'
Node.js Runtime은 이름 그대로 Node.js를 기반으로 한 실행 환경입니다. Node.js의 모든 API를 지원하며, 연관된 라이브러리들도 모두 사용이 가능합니다. Node.js Runtime은 Edge Runtime에 비해서 무겁기 때문에 속도면에서는 상대적으로 느리고, 서버 인프라 관리나 운영에 대한 비용도 상대적으로 높을 수밖에 없습니다.
그래서 Node.js Runtime을 사용하면서도 인프라 관리에 대한 비용을 낮출 수 있게 해주는 것이 바로 Serverless Node.js라는 것입니다. Serverless Node.js는 서버리스 환경에서 Node.js 코드를 실행할 수 있게 해주며, 확장이나 비용 측면에서는 이득이 있지만 함수가 처음 실행될 때 일정 시간 동안 준비(Cold Start)가 필요하다는 단점이 있습니다. 참고로 Vercel에서 제공하는 Serverless Function이 바로 Serverless Node.js입니다.
이러한 각 런타임의 특징을 잘 이해하고 상황에 따라 유연하게 적용하는 것이 필요합니다.
마지막 업데이트: 2025년 10월 24일 02시 34분
이 문서의 저작권은 이인제(소플)에 있습니다. 무단 전재와 무단 복제를 금합니다.