넷리파이(Netlify)가 9월 29일(현지시간) 엣지 함수(Edge Functions)를 돌리는 기반을 외부 V8 아이솔레이트 실행 서비스에서 자체 엣지 네트워크 안의 마이크로VM으로 전면 교체했다고 공식 블로그에서 밝혔다.
웜 호출 기준 중앙값(p50) 지연은 25~40ms에서 약 5~6ms로 줄었고, 이미 모든 프로덕션 트래픽이 새 구조에서 돌고 있다. 요금과 코드 작성 방식은 그대로다. 엣지 런타임에서 "아이솔레이트가 정답"이라는 통념에 정면으로 반대되는 선택이라 눈길을 끈다.
- 넷리파이가 엣지 함수 실행을 외부 호스팅 서비스에서 자체 엣지망 안의 마이크로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핵심 수치
콜드 호출, 즉 해당 리전의 컴퓨트 노드가 그 함수를 처음 보는 경우는 전체 호출의 약 1.2%이고 평균 약 9ms가 걸린다고 넷리파이는 밝혔다. 엣지 함수 로그 전달도 5배 빨라졌다. 유니크래프트 쪽 사례 글은 중앙값 요청당 오버헤드가 약 50ms에서 6ms로 줄었고, 로그 전달 중앙값이 2.5초에서 500ms로 줄었다고 다르게 집계했다. 측정 기준이 달라 수치가 조금씩 다르지만 방향은 같다.
PART 03요청 하나가 지나가는 길
넷리파이는 격리를 이번 전환의 핵심 이유로 꼽았다. 침해된 배포가 런타임을 탈출하더라도 별도 VM 안에 있으므로 다른 고객이나 컴퓨트 계층을 오염시킬 수 없다는 것이다. 회사는 "V8 아이솔레이트는 이름과 달리 이 수준의 격리를 제공하지 않는다"고 적었다. 하나의 VM이 처리할 수 있는 요청 수에도 상한을 둬서 VM이 무한정 살아 있지 않게 하고, 종료 직전에는 다음 VM을 미리 띄운다.
PART 04개발자에게 미치는 영향
당장 해야 할 일은 없다. 넷리파이는 새 구조가 이미 프로덕션 트래픽을 처리하고 있고, 같은 가격에 마이그레이션 단계 없이 적용됐다고 밝혔다. URL import, npm 패키지, Node 내장 모듈, netlify.toml 선언, 로컬 개발 환경 모두 이전과 똑같이 동작한다.
흥미로운 건 앞으로 풀릴 제약이다. 넷리파이는 이번 전환으로 세 가지가 가능해졌다고 했다. 첫째, 지금 베타인 엣지 함수의 npm 패키지 지원을 정식으로 끌어올릴 수 있다. 네이티브 바이너리나 런타임 파일 import에 붙어 있던 단서는 대부분 진짜 VM과 진짜 파일시스템이 없어서 생긴 것이기 때문이다. 둘째, 요청당 CPU 50ms, 메모리 512MB, 압축 코드 20MB라는 현재 한도는 아이솔레이트 실행 모델에서 나온 것이라 다시 검토할 여지가 생겼다. 셋째, 네트워크 경로를 직접 통제하므로 외부 서비스를 거치지 않는 기능을 만들 수 있다. 다만 한도 완화의 구체적인 수치나 일정은 아직 발표되지 않았다.
PART 05배경 — 왜 지금 엣지를 다시 짰나
넷리파이는 초당 수만, 때로는 수십만 건의 엣지 함수를 처리하려면 요청마다 라우팅, 컴퓨트 할당, 플랫폼 코드와 고객 코드 부팅을 몇 밀리초 안에 끝내야 한다고 설명했다. 외부 실행 서비스에 맡기는 구조에서는 인터넷 왕복 자체가 지연이 됐고, 장애가 나도 넷리파이가 직접 손쓸 수 있는 범위가 제한됐다. 유니크래프트 글에 따르면 넷리파이는 2025년 말 기존 플랫폼 유지, 자체 구축, 유니크래프트 이전의 세 가지 선택지를 놓고 평가했다.
운영 측면의 교훈도 공유했다. 대규모로 돌리다 보니 가상 스위치의 포트가 바닥나는 문제부터 DNS 문제까지 겪었고, 이번 구조에서는 컴퓨트 노드마다 로컬 DNS 리졸버를 두었다. 부팅 시간, 포트가 처음 열리는 시간, 사용자 코드 시작 시간 같은 지표를 새로 수집하고, 노드를 빠르게 우회·퇴역시키는 서킷 브레이커도 여러 겹 넣었다. 배포는 새 컴퓨트 플릿을 기존 플릿 옆에 띄워 규모를 맞춘 뒤 건강해지면 트래픽을 넘기는 방식이다.
메모리 사용도 줄었다. 유니크래프트에 따르면 사용자 함수를 EROFS 이미지와 ROM으로 올리면서 서버당 메모리 사용량이 50% 줄었고, 시리얼 장치 대신 virtio-console을 써서 글자 하나를 쓸 때마다 VM 종료(VM exit)가 일어나던 비용도 없앴다. 이미지는 모든 노드에 복사해 두지 않고 요청 시점에 필요한 리전에서만 가져오며, 잘 쓰이지 않는 이미지는 백그라운드 프로세스가 정리한다.
자주 묻는 질문
넷리파이 엣지 함수 코드를 수정해야 하나?
수정할 필요가 없다. 넷리파이는 작성 방식과 API, netlify.toml 설정, 로컬 개발이 모두 그대로이며 마이그레이션 단계 없이 이미 프로덕션에 적용됐다고 밝혔다.
엣지 함수 요금이 바뀌나?
바뀌지 않는다. 넷리파이는 새 구조가 기존과 같은 가격으로 제공된다고 명시했다.
V8 아이솔레이트와 마이크로VM은 무엇이 다른가?
V8 아이솔레이트는 하나의 프로세스 안에서 자바스크립트 실행 공간을 나누는 방식이라 가볍지만 격리 수준이 프로세스 내부에 머문다. 마이크로VM은 하드웨어 가상화로 함수마다 별도의 경량 리눅스 VM을 띄우므로 런타임을 탈출해도 다른 고객에게 영향을 주기 어렵다.
엣지 함수의 CPU·메모리 한도가 늘어나나?
아직 확정되지 않았다. 넷리파이는 요청당 CPU 50ms, 메모리 512MB, 압축 코드 20MB 한도가 아이솔레이트 모델에서 나온 것이라 재검토할 여지가 생겼다고만 밝혔고 구체적 수치는 발표하지 않았다.

댓글 0