CS Insights

웹어셈블리(WebAssembly)의 영토 확장: 브라우저를 탈출한 WASI 엣지(Edge) 서버리스 백엔드 생태계

웹어셈블리(WebAssembly)의 영토 확장: 브라우저를 탈출한 WASI 엣지(Edge) 서버리스 백엔드 생태계
전 세계 유저에게 가장 빠른 응답을 줘야 하는 글로벌 엣지(Edge) 로케이션 서버리스 함수(Lambda형)를 구축할 때, 도커(Docker) 기반 컨테이너 부팅 시간(Cold Start) 지연은 언제나 저희 팀의 골칫거리였습니다. 아무리 이미지를 경량화해도 수백 밀리초의 대기 지연은 사라지지 않았습니다. 이 구조적 지연을 소멸시키기 위해 브라우저 안에 갇혀 있던 WebAssembly(WASM)를 끄집어내어 백엔드 런타임 서버로 도입하는 과감한 기술 포팅을 시도했습니다. WASM은 원래 C++이나 Rust 등을 브라우저에서 돌리기 위해 만든 바이트코드 규격입니다. 여기에 브라우저 밖에서도 리눅스의 파일 시스템 네트워크 API를 호출할 수 있게 표준을 정의해 준 WASI(WebAssembly System Interface)가 장착되는 순간, Wasm은 완벽하고 독립적인 운영체제급 샌드박스로 돌변합니다. Wasm 런타임 엔진(Wasmtime)은 컨테이너처럼 무거운 리눅스 커널 프로세스 트리를 가상화할 필요 없이 극단적으로 경량화된 메모리 샌드박스 하나만 띄워놓고 즉시 실행됩니다. Go나 Rust 컴파일된 1MB 단위의 Wasm 모듈 바이너리들이 클라이언트 콜이 도착하자마자 콜드 스타트 지연 시간이 5밀리초(ms) 이하로 극도로 단축되어 즉시 기동 되는 모습을 목격했습니다. 도커(Docker)를 만든 솔로몬 하이크조차 "2008년에 WASM+WASI가 있었다면 도커는 만들어질 필요가 없었을 것"이라 확신한 이유가, 이토록 무자비한 하드웨어 친화적 런타임 가동 속도에 있음을 이 엣지 백엔드 프로젝트를 통해 전율하듯 체감했습니다.

Related Posts