Playwright 작업을 위한 자체 호스팅 브라우저 풀 BrowserThing 구축기
요약
Playwright 사용을 위한 자체 호스팅 브라우저 풀인 BrowserThing이 소개되었습니다. 이 시스템은 짧고 반복적인 브라우저 작업에 최적화되어, 매번 새 프로세스를 시작하는 오버헤드를 줄이고 메모리 누수를 방지합니다. Playwright를 단일 WebSocket 엔드포인트로 연결하여 기존 코드를 유지하면서 성능을 크게 개선할 수 있습니다.
핵심 포인트
- BrowserThing은 짧은 작업에 최적화된 자체 호스팅 브라우저 풀입니다.
- 브라우저 재사용 및 주기적인 순환 로딩 밸런싱 기능을 제공합니다.
- Playwright 연결 방식(WebSocket)을 표준으로 유지하여 사용이 용이합니다.
- 새 프로세스 시작 오버헤드가 중요한 워크로드에서 성능 향상이 두드러집니다.
안녕하세요 여러분! 저는 Playwright를 사용하는 애플리케이션을 위한 오픈 소스, 자체 호스팅 브라우저 풀인 BrowserThing을 만들었습니다. 원래는 짧은 브라우저 작업이 많은 워크로드를 위해 이를 개발했습니다. 모든 작업마다 새로운 브라우저 프로세스를 시작하는 것은 낭비처럼 느껴졌지만, 브라우저를 무기한으로 계속 실행 상태로 유지하는 것도 이상적이지 않았습니다. 장시간 실행되는 브라우저는 메모리 사용량이 증가하여 결국 불안정한 상태에 빠질 수 있습니다. BrowserThing은 중간적인 접근 방식을 취합니다: 브라우저를 따뜻하게(warm) 유지하고 작업을 통해 재사용하며, 설정 가능한 양의 작업 후에 모니터링하고 주기적으로 순환시킵니다. 짧은 워크로드—연결, 페이지 열기, 읽기, 연결 끊기—에 대해 측정해 보니 다음과 같습니다: 작업 시간 CPU 시간 / 작업 BrowserThing 51 ms 0.09 s Browserless 217 ms 0.70 s 이 특정 워크로드에서는 작업당 CPU 시간이 약 87% 적습니다. 이것은 일반적인 BrowserThing 대 Browserless 성능 비교를 위한 것이 아닙니다—브라우저 시작 오버헤드가 중요한 경우에만 해당합니다. 애플리케이션 측면에서는 Playwright를 단일 WebSocket 엔드포인트에 연결합니다: const browser = await chromium.connect('ws://your-browserthing-host:8080'); 이것은 표준 Playwright입니다—어떤 Playwright 지원 언어에서도 연결할 수 있으며, 나머지 코드는 동일하게 유지됩니다. 높은 수준에서 볼 때, 이 시스템은 다음을 수행합니다: 작업 전반에 걸쳐 따뜻한 브라우저 재사용 모니터링 및 브라우저 프로세스 순환 로드 밸런싱(work)을 여러 워커 또는 머신에 걸쳐 수행합니다. 한 가지 중요한 트레이드오프가 있습니다: 세션이 브라우저 프로세스를 공유할 수 있으므로, 모든 클라이언트마다 별도의 브라우저 프로세스가 생성되지는 않습니다. 쿠키와 저장소는 여전히 Playwright 브라우저 컨텍스트를 통해 격리되므로, 주로 자체 애플리케이션 및 신뢰하는 클라이언트를 위한 것입니다. 이 시스템은 Apache-2.0 라이선스를 따르며, README에 Docker Compose 빠른 시작 가이드가 있습니다. GitHub: https://github.com/mbroton/browserthing /u/spare_lama 님이 제출했습니다 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기