-
Kernel은 개발자가 브라우저 자동화 코드를 별도 인프라 고민 없이 바로 배포하고, 대규모로 확장할 수 있게 해주는 서버리스 플랫폼
- 설정이나 파이프라인 구축 없이, 로컬 개발과 거의 동일한 속도로 코드를 배포하고 실행할 수 있음
- 샌드박스 환경에서 사용할 수 있는 Chrome 브라우저를 제공하며, 작성한 에이전트를 자동으로 API로 변환, 어디서든 호출 가능
- Playwright, Puppeteer 등 Chrome DevTools Protocol 기반 프레임워크와의 연동을 지원하며, 원격 GUI(라이브 뷰) 로 실시간 모니터링 및 제어가 가능함
- Unikraft unikernel 환경 지원으로 초고속 재시작, 스냅샷 복원, 리소스 최소화 등 고성능 특화 기능 제공
-
Docker 이미지 및 Unikraft unikernel 두 가지 배포 방식을 지원, 다양한 클라우드/컨테이너 환경에서 활용 가능함
- 모든 코드는 격리된 가상 머신에서 안전하게 실행되며, 실시간 관찰 및 디버깅 도구 제공
What's Kernel?
-
Kernel은 샌드박스된, 바로 사용할 수 있는 Chrome 브라우저 환경을 제공하며, 이 저장소는 Kernel의 호스팅 서비스를 위한 기반 코드임
- Playwright, Puppeteer 등 Chrome DevTools 기반 브라우저 프레임워크에서 쉽게 연결 가능
Why use Kernel?
-
로컬에서 프로덕션까지 수 초 내 배포
- 별도의 설정이나 프로덕션 파이프라인 없이,
bun run dev
와 거의 같은 시간에 코드 배포 및 실행 가능
-
모든 에이전트를 API로 전환
- 플랫폼에 올린 모든 에이전트가 자동으로 API로 노출되어, 외부에서 호출 가능
-
병렬 확장성
- 수천 개 브라우저 인스턴스를 필요할 때마다 즉시 실행 및 확장 가능
-
격리 및 관찰성 강화
- 코드가 격리된 VM에서 실행되어 보안성 높고, 모니터링 및 디버깅 도구 제공
-
예측 가능한 간단한 요금제
- 사전 인프라 정의 없이, 사용한 리소스만큼만 비용 발생
주요 기능
-
통합 브라우저 환경 : 클라우드 상에서 브라우저를 즉시 생성·제어, 워크로드 자동화에 최적화
-
샌드박스 Chrome 브라우저를 DevTools 기반 자동화 프레임워크에서 연결 사용 가능
-
9222 포트를 통해 Playwright, Puppeteer 등과 연동
- CDP WebSocket 엔드포인트 획득 후 원격 클라이언트에서 연결
- 연결 해제/재연결 가능
-
세션 상태 유지 : 쿠키, 인증 토큰, 히스토리 등 브라우저 세션을 호출 간에도 지속 관리
-
초고속 재시작(standby mode) : 브라우저 인스턴스를 20ms 이하로 즉시 재시작
-
원격 GUI(라이브 뷰 스트리밍) 로 브라우저 화면을 실시간으로 확인 및 제어 가능함
-
noVNC: VNC 기반, 읽기/쓰기 지원, WebRTC 비활성화 필요
-
WebRTC: 실시간, 읽기/쓰기, 창 크기 조정, 복사/붙여넣기, 고속 성능, ENABLE_WEBRTC=true 필요
- 오디오 스트리밍은 미지원, 읽기 전용 모드는 환경 변수로 설정 가능
-
브라우저 세션 비디오 리플레이 : 과거 세션을 다시 보며 디버깅 및 분석 가능 (지원예정)
구현 및 배포
-
Docker 컨테이너 사용
- headful Chromium을 Docker 컨테이너에서 실행 가능
-
cd images/chromium-headful
후, 빌드 및 실행 스크립트 제공
- 환경변수로 WebRTC 활성화 및 기타 설정 가능
-
Unikraft Unikernel 사용
- Unikraft unikernel 기반 실행 시, Docker 기반보다 더 빠른 시작 및 절전 모드 제공
- 네트워크 트래픽이 없으면 자동으로 standby 모드 진입, 상태 스냅샷/복원 지원
-
Cold start 20ms 미만, 세션 상태(쿠키, 파일, 브라우저 설정 등) 유지 및 복원 가능
- 8GB 이상의 메모리 필요
-
배포 시 참고사항
- WebRTC 기반 스트리밍 활성화 시 TURN 서버 필요
- unikernel 배포 시 공개 URL이 발급되어 누구나 접근 가능하므로 민감 작업에 사용 금지, 사용 후 인스턴스 삭제 필요