본문 바로가기
클라우드2026년 9월 30일10분 읽기

넷리파이 엣지 함수, V8 아이솔레이트 버리고 마이크로VM으로 — 중앙값 지연 5배 단축

YS
김영삼
조회 5
넷리파이 엣지 함수, V8 아이솔레이트 버리고 마이크로VM으로 — 중앙값 지연 5배 단축

넷리파이(Netlify)가 9월 29일(현지시간) 엣지 함수(Edge Functions)를 돌리는 기반을 외부 V8 아이솔레이트 실행 서비스에서 자체 엣지 네트워크 안의 마이크로VM으로 전면 교체했다고 공식 블로그에서 밝혔다.

웜 호출 기준 중앙값(p50) 지연은 25~40ms에서 약 5~6ms로 줄었고, 이미 모든 프로덕션 트래픽이 새 구조에서 돌고 있다. 요금과 코드 작성 방식은 그대로다. 엣지 런타임에서 "아이솔레이트가 정답"이라는 통념에 정면으로 반대되는 선택이라 눈길을 끈다.

3줄 요약
  • 넷리파이가 엣지 함수 실행을 외부 호스팅 서비스에서 자체 엣지망 안의 마이크로VM(유니크래프트 플랫폼)으로 옮겼다. 함수마다 별도 VM이 뜬다.
  • 웜 호출 중앙값 5~6ms(기존 25~40ms), p99 47.4% 단축, 가용성 99.998%, 로그 전달 5배 빨라짐. 콜드 호출은 약 1.2%에서 발생하며 평균 9ms다.
  • URL import, npm 패키지, Node 내장 모듈, netlify.toml 선언 등 기존 코드는 그대로 동작하며 마이그레이션 작업이 필요 없다.

PART 01무슨 일이 있었나

넷리파이는 하루 약 10억 건의 엣지 함수가 자사 플랫폼에서 실행된다고 설명했다. 개인화, 쿠키 기반 라우팅, 인증 같은 작업이 사이트 앞단에서 요청마다 돈다. 지금까지는 엣지 노드가 요청을 받으면 인터넷을 거쳐 외부 호스팅 실행 서비스로 보내 함수를 돌리고 결과를 다시 받아 왔다. 넷리파이는 지난 몇 달간 이 구조를 다시 짰고, 이제 요청은 넷리파이 네트워크를 벗어나지 않고 같은 리전의 컴퓨트 노드에 있는 마이크로VM에서 처리된다.

이번 작업은 마이크로VM 플랫폼 업체 유니크래프트(Unikraft)와 함께 진행됐다. 유니크래프트는 VM의 부팅·스냅샷·복원·스케일 투 제로 같은 수명주기 관리를 맡고, 넷리파이는 로드밸런싱과 컨트롤 플레인, 배치 정책을 맡는다. 런타임은 계속 Deno이며, 넷리파이가 패치한 Deno 빌드가 마이크로VM 안에 들어간다. 넷리파이 글은 각 함수가 "자체 Firecracker 마이크로VM"에서 돈다고 적었다.

PART 02핵심 수치

5~6ms
웜 호출 중앙값(p50). 기존 인프라는 25~40ms
47.4%
p99 호출 지연 단축폭
99.998%
새 구조의 가용성
2ms
마이크로VM 시작 시간(p99, 런타임 초기화 전)

콜드 호출, 즉 해당 리전의 컴퓨트 노드가 그 함수를 처음 보는 경우는 전체 호출의 약 1.2%이고 평균 약 9ms가 걸린다고 넷리파이는 밝혔다. 엣지 함수 로그 전달도 5배 빨라졌다. 유니크래프트 쪽 사례 글은 중앙값 요청당 오버헤드가 약 50ms에서 6ms로 줄었고, 로그 전달 중앙값이 2.5초에서 500ms로 줄었다고 다르게 집계했다. 측정 기준이 달라 수치가 조금씩 다르지만 방향은 같다.

PART 03요청 하나가 지나가는 길

1
엣지 노드가 요청을 받는다
클라이언트와 가장 가까운 엣지 노드가 TLS를 종료하고 경로가 엣지 함수 라우트와 맞는지 본다. 맞지 않으면 평소처럼 캐시와 오리진으로 간다.
2
머신 명세(spec)를 쓴다
런타임, 넷리파이 플랫폼, 사용자 함수의 세 이미지와 CPU·메모리·연결 한도를 담은 명세를 요청에 붙인다. 이 해시가 서비스 ID가 되므로 코드나 환경 변수가 다른 배포는 절대 같은 VM을 공유하지 않는다.
3
컴퓨트 노드를 고른다
랑데부 해싱으로 같은 서비스는 항상 같은 노드로 보내 VM과 캐시를 따뜻하게 유지한다. 트래픽이 한 노드에 몰리면 일정 임계치를 넘을 때 여러 노드로 분산한다.
4
마이크로VM을 띄우거나 재사용한다
함수 파일은 비압축 EROFS 이미지로 마운트돼 필요한 부분만 메모리 매핑된다. 서버가 포트를 열면 스냅샷을 떠 두고, 유휴 시에는 0으로 줄였다가 다음 호출 때 스냅샷에서 복원한다.

넷리파이는 격리를 이번 전환의 핵심 이유로 꼽았다. 침해된 배포가 런타임을 탈출하더라도 별도 VM 안에 있으므로 다른 고객이나 컴퓨트 계층을 오염시킬 수 없다는 것이다. 회사는 "V8 아이솔레이트는 이름과 달리 이 수준의 격리를 제공하지 않는다"고 적었다. 하나의 VM이 처리할 수 있는 요청 수에도 상한을 둬서 VM이 무한정 살아 있지 않게 하고, 종료 직전에는 다음 VM을 미리 띄운다.

영삼
영삼의 한마디
클라우드플레어 워커스가 "콜드 스타트 없는 아이솔레이트"로 엣지 시장의 문법을 만든 뒤, 엣지 런타임은 아이솔레이트여야 한다는 게 거의 상식이었다. 넷리파이는 그 상식을 버리고 "VM이 2ms에 뜬다면 진짜 격리와 진짜 파일시스템을 갖는 게 낫다"고 말한다. 나는 이 방향이 맞다고 본다. 엣지 함수에서 npm 패키지가 안 되거나 네이티브 바이너리가 막혀 삽질한 경험이 있는 사람이라면, 성능보다 그 제약이 사라지는 쪽이 더 반가울 것이다.

PART 04개발자에게 미치는 영향

당장 해야 할 일은 없다. 넷리파이는 새 구조가 이미 프로덕션 트래픽을 처리하고 있고, 같은 가격에 마이그레이션 단계 없이 적용됐다고 밝혔다. URL import, npm 패키지, Node 내장 모듈, netlify.toml 선언, 로컬 개발 환경 모두 이전과 똑같이 동작한다.

흥미로운 건 앞으로 풀릴 제약이다. 넷리파이는 이번 전환으로 세 가지가 가능해졌다고 했다. 첫째, 지금 베타인 엣지 함수의 npm 패키지 지원을 정식으로 끌어올릴 수 있다. 네이티브 바이너리나 런타임 파일 import에 붙어 있던 단서는 대부분 진짜 VM과 진짜 파일시스템이 없어서 생긴 것이기 때문이다. 둘째, 요청당 CPU 50ms, 메모리 512MB, 압축 코드 20MB라는 현재 한도는 아이솔레이트 실행 모델에서 나온 것이라 다시 검토할 여지가 생겼다. 셋째, 네트워크 경로를 직접 통제하므로 외부 서비스를 거치지 않는 기능을 만들 수 있다. 다만 한도 완화의 구체적인 수치나 일정은 아직 발표되지 않았다.

넷리파이 사용자 체크리스트
✓엣지 함수 응답 시간 대시보드에서 9월 말 전후로 p50·p99가 실제로 줄었는지 확인해 본다.
✓npm 패키지를 엣지 함수에서 쓰다 네이티브 모듈 문제로 포기했다면 베타 상태에서 다시 시험해 볼 만하다.
✓CPU 50ms·메모리 512MB 한도에 걸려 서버리스 함수로 옮긴 로직이 있다면 한도 변경 공지를 지켜본다.
✓로그 기반 알림을 쓰고 있다면 로그 전달이 빨라진 만큼 알림 지연 설정을 재조정할 수 있다.
팁: 콜드 호출은 리전의 컴퓨트 노드가 그 함수 이미지를 처음 받을 때 생긴다. 트래픽이 적은 리전에서 첫 요청 지연이 신경 쓰인다면 배포 직후 주요 경로에 워밍 요청을 보내는 것도 방법이다.

PART 05배경 — 왜 지금 엣지를 다시 짰나

넷리파이는 초당 수만, 때로는 수십만 건의 엣지 함수를 처리하려면 요청마다 라우팅, 컴퓨트 할당, 플랫폼 코드와 고객 코드 부팅을 몇 밀리초 안에 끝내야 한다고 설명했다. 외부 실행 서비스에 맡기는 구조에서는 인터넷 왕복 자체가 지연이 됐고, 장애가 나도 넷리파이가 직접 손쓸 수 있는 범위가 제한됐다. 유니크래프트 글에 따르면 넷리파이는 2025년 말 기존 플랫폼 유지, 자체 구축, 유니크래프트 이전의 세 가지 선택지를 놓고 평가했다.

운영 측면의 교훈도 공유했다. 대규모로 돌리다 보니 가상 스위치의 포트가 바닥나는 문제부터 DNS 문제까지 겪었고, 이번 구조에서는 컴퓨트 노드마다 로컬 DNS 리졸버를 두었다. 부팅 시간, 포트가 처음 열리는 시간, 사용자 코드 시작 시간 같은 지표를 새로 수집하고, 노드를 빠르게 우회·퇴역시키는 서킷 브레이커도 여러 겹 넣었다. 배포는 새 컴퓨트 플릿을 기존 플릿 옆에 띄워 규모를 맞춘 뒤 건강해지면 트래픽을 넘기는 방식이다.

메모리 사용도 줄었다. 유니크래프트에 따르면 사용자 함수를 EROFS 이미지와 ROM으로 올리면서 서버당 메모리 사용량이 50% 줄었고, 시리얼 장치 대신 virtio-console을 써서 글자 하나를 쓸 때마다 VM 종료(VM exit)가 일어나던 비용도 없앴다. 이미지는 모든 노드에 복사해 두지 않고 요청 시점에 필요한 리전에서만 가져오며, 잘 쓰이지 않는 이미지는 백그라운드 프로세스가 정리한다.

영삼
영삼의 한마디
나도 사이트 앞단에 간단한 리다이렉트와 지역별 분기를 엣지에서 돌려 본 적이 있는데, 결국 발목을 잡은 건 속도가 아니라 "이 패키지는 엣지에서 안 됩니다" 같은 제약이었다. 넷리파이가 이번 글에서 한도 완화와 npm 정식 지원을 약속에 가깝게 언급한 만큼, 몇 달 안에 실제 숫자가 나오는지 지켜볼 생각이다. 숫자 없이 "가능성이 열렸다"로만 끝나면 이번 발표의 절반은 마케팅으로 남는다.

자주 묻는 질문

넷리파이 엣지 함수 코드를 수정해야 하나?

수정할 필요가 없다. 넷리파이는 작성 방식과 API, netlify.toml 설정, 로컬 개발이 모두 그대로이며 마이그레이션 단계 없이 이미 프로덕션에 적용됐다고 밝혔다.

엣지 함수 요금이 바뀌나?

바뀌지 않는다. 넷리파이는 새 구조가 기존과 같은 가격으로 제공된다고 명시했다.

V8 아이솔레이트와 마이크로VM은 무엇이 다른가?

V8 아이솔레이트는 하나의 프로세스 안에서 자바스크립트 실행 공간을 나누는 방식이라 가볍지만 격리 수준이 프로세스 내부에 머문다. 마이크로VM은 하드웨어 가상화로 함수마다 별도의 경량 리눅스 VM을 띄우므로 런타임을 탈출해도 다른 고객에게 영향을 주기 어렵다.

엣지 함수의 CPU·메모리 한도가 늘어나나?

아직 확정되지 않았다. 넷리파이는 요청당 CPU 50ms, 메모리 512MB, 압축 코드 20MB 한도가 아이솔레이트 모델에서 나온 것이라 재검토할 여지가 생겼다고만 밝혔고 구체적 수치는 발표하지 않았다.

참고 자료

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록