기존 클라우드 샌드박스의 한계
기존 클라우드 샌드박스는 다음과 같은 문제점을 안고 있습니다.
-
성능 및 비용: 프로비저닝 지연, 높은 런타임 비용.
-
네트워크 제약: 로컬 네트워크 접근 불가, 기타 네트워크 제한.
-
환경적 영향: 데이터 센터 운영에 막대한 에너지와 물 소비.
BrowserPod의 핵심 솔루션
웹어셈블리의 발전은 복잡한 연산을 브라우저 내에서 직접 실행할 수 있게 했습니다. BrowserPod는 이 기술을 활용하여 클라이언트 측 컴퓨팅으로 신뢰할 수 없는 코드를 네이티브 속도로 즉시 실행하며, 브라우저의 강력한 샌드박스 기능을 통해 보안을 확보합니다.
기술적 기반 및 특징
Leaning Technologies는 C/C++, Java, x86 바이너리 등을 웹 앱으로 전환해온 경험을 바탕으로 BrowserPod를 개발했습니다. 핵심 기술은 다음과 같습니다.
-
Linux 시스템 호출 에뮬레이션: Linux 커널 API를 에뮬레이션하여 WebAssembly 및 JavaScript 호환 인터페이스를 제공합니다. 이는 WebWorkers를 통한 실제 멀티스레딩과 함께 여러 프로세스에 걸쳐 리소스 접근을 조정하는 완전한 커널처럼 작동합니다.
-
지원 런타임: Node.js, Python, Ruby on Rails와 같은 인기 언어 런타임을 지원하며, git, bash 등의 명령줄 도구도 추가될 예정입니다.
-
통합 시스템 환경: 모든 애플리케이션은 C++에서 웹어셈블리로 컴파일되며, BrowserPod는 필요한 모든 시스템 호출을 제공하여 병렬 프로세스가 동일한 파일 시스템과 가상화된 리소스를 공유하는 일관된 시스템 뷰를 제공합니다.
-
고성능 파일 시스템: 수천 개의 파일 접근을 효율적으로 처리하기 위해 HTTP 또는 WebSockets를 통한 스트리밍 디스크 블록 위에 Ext2와 같은 블록 장치 파일 시스템을 구현합니다.
-
가상화된 네트워킹: 엣지 컴퓨팅 기반의 네트워크 요청 프록시를 통해 가상화된 HTTP 엔드포인트를 제공합니다. Pod가 시작되면
https://randomstring-port.browserportal.io와 같은 고유한 도메인 이름이 할당되며, 내부의 공용 포트가 이 링크를 통해 인터넷에 노출되어 실제 호스팅 없이 애플리케이션을 공유하고 테스트할 수 있습니다.
Node.js 실행 최적화
BrowserPod는 Node.js의 V8 API 호출을 브라우저의 네이티브 기능 기반의 사용자 정의 구현으로 대체합니다. 이는 브라우저 엔진과 Node.js 간의 차이를 투명하게 메우며, Node.js C++ 소스를 수정 없이 웹어셈블리로 컴파일하여 매우 정확한 실행 환경을 제공합니다. 이러한 기능 덕분에 BrowserPod는 전체 웹 프레임워크(개발 서버, 핫 리로딩 포함) 및 빌드 파이프라인을 브라우저 내에서 실행할 수 있습니다.