Edge Runtime
엣지 런타임
CDN 엣지에서 실행되는 경량 런타임. 저지연, 글로벌 분산.
엣지 런타임
CDN 엣지에서 실행되는 경량 런타임. 저지연, 글로벌 분산.
Edge Runtime은 전 세계 CDN 엣지 서버에서 코드를 실행하는 경량화된 JavaScript/WASM 런타임입니다. 사용자와 가장 가까운 서버에서 코드가 실행되므로, 기존 중앙 서버 방식 대비 지연 시간(Latency)을 50~200ms 단축할 수 있습니다. Vercel Edge Functions, Cloudflare Workers, Deno Deploy가 대표적입니다.
Edge Runtime은 V8 Isolates 기술을 사용해 밀리초 단위로 콜드 스타트합니다. 기존 서버리스(Lambda)가 100~500ms의 콜드 스타트를 가지는 것과 대조됩니다. 다만 Node.js의 전체 API를 지원하지 않고, fs(파일 시스템)나 native 모듈 사용이 제한됩니다.
주요 사용 사례로는 A/B 테스트, 지역화(i18n), 인증 검증, API 응답 캐싱, 봇 감지 등이 있습니다. 특히 개인화된 콘텐츠를 전달하면서도 CDN 캐싱의 이점을 유지하고 싶을 때 효과적입니다. Next.js의 Middleware도 Edge Runtime에서 실행됩니다.
제약사항으로는 실행 시간 제한(Cloudflare 50ms CPU, Vercel 30초), 메모리 제한(128MB), 일부 Web API 미지원 등이 있습니다. 무거운 연산이나 긴 실행 시간이 필요한 작업은 여전히 서버리스 함수나 전통적인 서버가 적합합니다.
// Next.js Edge Middleware 예제
// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export const config = {
matcher: ['/api/:path*', '/dashboard/:path*'],
};
export function middleware(request: NextRequest) {
// 1. 지역 기반 라우팅
const country = request.geo?.country || 'US';
if (request.nextUrl.pathname === '/') {
return NextResponse.redirect(
new URL(`/${country.toLowerCase()}`, request.url)
);
}
// 2. 인증 토큰 검증 (엣지에서 즉시 처리)
const token = request.cookies.get('auth-token');
if (request.nextUrl.pathname.startsWith('/dashboard')) {
if (!token) {
return NextResponse.redirect(new URL('/login', request.url));
}
// 토큰 유효성 간단 검증 (무거운 검증은 API에서)
try {
const payload = JSON.parse(atob(token.value.split('.')[1]));
if (payload.exp < Date.now() / 1000) {
return NextResponse.redirect(new URL('/login', request.url));
}
} catch {
return NextResponse.redirect(new URL('/login', request.url));
}
}
// 3. A/B 테스트 쿠키 설정
const response = NextResponse.next();
if (!request.cookies.has('ab-variant')) {
response.cookies.set('ab-variant', Math.random() > 0.5 ? 'A' : 'B');
}
return response;
}
"글로벌 서비스인데 미국 사용자도 아시아 서버로 요청이 가서 지연이 심해요. 인증 검증 같은 간단한 로직은 Edge Runtime으로 옮기면 사용자 위치에서 바로 처리되니까 TTFB를 200ms 이상 줄일 수 있습니다."
"면접관: Edge Runtime과 일반 서버리스의 차이점은?
지원자: Edge Runtime은 V8 Isolates 기반으로 콜드 스타트가 거의 없고 전 세계 300+ 엣지에서 실행됩니다. 반면 Lambda 같은 서버리스는 리전별 배포라 거리에 따른 지연이 있고, 컨테이너 기반이라 콜드 스타트가 100ms 이상 걸릴 수 있습니다."
"이 미들웨어에서 DB 조회를 하고 있는데, Edge Runtime은 TCP 연결 유지가 어려워서 매 요청마다 커넥션 오버헤드가 생겨요. DB 조회는 API Route로 옮기고, 미들웨어에서는 토큰 디코딩 같은 순수 연산만 하는 게 좋겠습니다."