Netlify 엣지 함수, Firecracker MicroVM으로 5배 빨라졌다
원제 5x faster Edge Functions: V8 isolates to Firecracker MicroVMs
105 포인트댓글 38

Key Point
V8 isolate 기반 엣지 함수가 MicroVM으로 바뀌면서 응답 속도가 5배 빨라지고 진정한 보안 격리가 가능해져, 프론트엔드 성능과 보안이 모두 핵심인 웹 개발자에게 직결된 영향을 미친다.
핵심 요약
- Netlify는 엣지 함수 실행 인프라를 V8 isolate에서 Firecracker MicroVM 기반으로 전환해 중간값 기준 응답 시간을 25~40ms에서 5~6ms로 단축했다.
- 이제 요청이 외부 실행 서비스로 나가지 않고 Netlify의 엣지 네트워크 내 MicroVM에서 직접 처리되며, p99 기준으로도 47.4% 빨라졌고 가용성은 99.998%이다.
- 요청이 도착하면 엣지 노드가 경로를 확인해 매칭되는 엣지 함수가 있으면 머신 사양을 포함한 명세를 생성하고, rendezvous 해싱으로 동일 서비스가 같은 컴퓨트 노드에 할당되도록 한다.
- 컴퓨트 노드는 서비스 ID로 기존 서비스를 확인하고 없으면 새로 생성하며, 필요한 이미지가 없으면 엣지 노드에서 가져와 디스크에 저장한다.
- 각 엣지 함수는 1ms 이내에 생성되고 p99 기준 약 2ms에 시작하는 Firecracker MicroVM에서 실행되며, 부팅 후 스냅샷을 남겨 다음 호출 시 신속한 복구를 가능하게 한다.
- 엣지 함수 파일은 압축하지 않은 EROFS 이미지로 마운트되고 메모리 맵되어 VM이 실제로 사용하는 부분만 읽도록 최적화했다.
- 콜드 스타트(새로운 지역에서의 첫 호출)는 전체 호출의 약 1.2%이며 평균 9ms가 소요되고, 따뜻한 호출에서는 전체 요청 처리가 약 6ms만 추가된다.
- 컴퓨트 노드들은 컨트롤 플레인으로 관리되며 엣지 노드들이 상태를 폴링하고, 새 배포 시 기존 플릿과 병렬로 실행 후 정상 확인 후에만 트래픽을 넘겨받는다.
- 트래픽 스파이크 대응을 위해 특정 임계값을 넘으면 서비스를 여러 노드에 분산시켜 단일 고객의 트래픽이 다른 서비스에 영향을 주지 않도록 한다.
- 각 서비스는 코드나 환경 변수가 다르면 별도 MicroVM에서 실행되어 보안 격리를 제공하며, 손상된 배포도 다른 고객이나 컴퓨트 레이어에 영향을 주지 못한다.
- 로컬 DNS 리졸버 배치, 부팅 시간과 포트 개방 시간 등의 상세 메트릭 수집, 회로 차단기(circuit breaker) 배치 등으로 안정성과 디버깅 능력을 강화했다.
- 이 변경사항은 엣지 함수 작성 방식을 바꾸지 않으며, npm 패키지 지원을 베타에서 정식으로 전환하고 기존 50ms CPU/512MB 메모리 등의 제한을 재검토할 수 있게 한다.
- Unikraft 팀과의 긴밀한 협업으로 검증과 대규모 트래픽 처리 능력을 구축했으며, 이미 기존 가격과 마이그레이션 없이 프로덕션 트래픽을 처리 중이다.