Netlify, V8 아이솔레이트 걷어내고 Firecracker MicroVM으로 엣지 함수 5배 빠르게
- Netlify가 Edge Functions 실행 기반을 V8 아이솔레이트에서 Firecracker MicroVM으로 교체해 warm 호출 p50 지연이 25~40ms에서 5~6ms로 줄었음
- p99 호출은 47.4% 빨라졌고 가용성 99.998%, 엣지 함수 로그 전달 속도도 5배 향상됨
- 예전에는 요청이 자사 네트워크를 떠나 외부 호스팅 실행 서비스로 갔다가 돌아왔지만, 이제는 엣지 노드가 만든 머신 스펙(런타임, 플랫폼, 엣지 함수 이미지 3종)을 요청에 실어 사내 컴퓨트 노드의 MicroVM으로 넘김
- 스펙 해시와 사이트 정보로 서비스 ID를 만들어 배포마다 MicroVM을 분리하므로, 런타임을 탈출한 코드도 다른 고객이나 컴퓨트 계층을 오염시킬 수 없음. V8 아이솔레이트는 이 수준의 격리를 주지 않는다는 게 Netlify 주장
- 콜드 호출은 전체의 약 1.2%로 평균 약 9ms가 걸리며, 이 플랫폼은 Unikraft 팀과 함께 몇 달간 재구축했음
Hacker News opinions
v8 아이솔레이트에서 그 지연이 왜 나오는지 설명이 없어서 아쉽네. 25~40ms면 아이솔레이트 자체보다 구조 문제 같은데.
v8 아이솔레이트는 샌드박스로 그렇게 좋지 않음. AI 시대엔 특히 못 믿겠더라. 그래서 한 겹 더 감싼 거겠지.
"예전엔 호스팅 실행 서비스로 나갔다"는 건 다른 회사에 위탁했다는 거니까 오버헤드가 끼어들 여지가 많았던 거임.
Cloudflare Workers도 v8 아이솔레이트인데 25~40ms보다 훨씬 빠르던데? 이 숫자가 잘 안 믿긴다.
글 보면 예전엔 인터넷 밖으로 나가서 실행하고 다시 돌아왔다고 되어 있음. Cloudflare는 처음부터 자기 네트워크 안에서 돌렸고.
맞아, 아이솔레이트가 엣지에서 돌지도 않았던 거지.
밀리초를 세는데 왜 자바스크립트를 쓰냐 싶긴 한데, V8이 스크립트 시작 시간에 워낙 최적화돼 있긴 함.
Unikraft의 Alex인데 microVM 쪽 질문 있으면 답해줄 수 있음. 우리 쪽에서 쓴 기술 글도 두 개 올려뒀음.
MicroVM은 AWS가 Lambda용으로 만든 건데 정작 Lambda 위의 Node는 느림. 여기 사례를 보면 못 쓸 이유가 없어 보이는데.
Firecracker 자체는 AWS 기술이고 Lambda랑 Fargate 뒤에 있었음. 문제는 그 위에 얹힌 엔터프라이즈 기능들이지.
AWS 욕할 때마다 생각나는 게 Firecracker임. 최고의 microVM 기술 중 하나를 세상에 풀어놨으니까.
나는 SlicerVM 잘 쓰고 있음. Firecracker를 일반인도 쓸 수 있게 해주는 물건인데 로컬 엣지 워크로드나 에이전트, CI 돌리기 좋더라. 그래도 대부분의 엣지 함수 실행에서 v8 아이솔레이트를 대체하진 못할 거라 봄. JS/TS는 정적 분석이 잘 되니까 규모에서 그게 장점이고, MicroVM은 유연한 만큼 다 잠가야 해서 중간 규모 회사엔 아이솔레이트가 낫더라.
월 $25 내고 내 하드웨어에 데몬 돌리는 거? 헐.
스냅샷 찍어둔 MicroVM으로 새 인스턴스를 띄운다니 좀 무섭네. 포크된 RNG 상태 때문에 UUID 생성이나 암호 연산에서 크게 터질 수 있는데.
Firecracker에 그 문제 해결책이 이미 있음. 그걸 쓰고 있겠지.
"예전엔 외부로 나갔다"는 대목을 보면 실행 자체는 오히려 느려졌을 수도 있는데 네트워킹만 줄여놓고 5배라고 하는 건 좀 과장 아님?