puppeteer

2 개의 포스트

Browser Run: 에이전트에게 브라우저를 제공하세요 (새 탭에서 열림)

Cloudflare는 기존의 'Browser Rendering' 서비스를 'Browser Run'으로 재브랜딩하며 AI 에이전트가 웹과 상호작용하는 데 최적화된 강력한 브라우징 인프라를 공개했습니다. 이 서비스는 Cloudflare의 글로벌 네트워크에서 전체 브라우저 세션을 실행하고, 에이전트가 사이트 탐색, 데이터 추출, 폼 작성 등을 대규모로 수행할 수 있도록 지원합니다. 결과적으로 개발자는 인프라 관리 부담 없이 AI 에이전트에게 실시간 모니터링, 인간 개입, 세밀한 제어 기능을 갖춘 브라우저를 제공할 수 있게 되었습니다. **에이전트 중심의 확장된 브라우저 인프라** * **온디맨드 인스턴스 실행:** Cloudflare 글로벌 네트워크를 통해 헤드리스 크롬(Chrome) 인스턴스를 즉시 생성하며, 버전 관리나 서버 유지보수 없이 저지연 환경에서 브라우징 세션을 운영할 수 있습니다. * **대규모 동시성 지원:** 동시 실행 가능한 브라우저 한도를 기존 30개에서 120개로 대폭 늘려, 대량의 작업을 동시에 처리해야 하는 에이전트의 요구사항을 충족합니다. * **에이전트 SDK 결합:** Agents SDK와 연동하여 웹을 탐색하고 정보를 기억하며 자율적으로 행동하는 장기 실행(Long-running) 에이전트 구축이 가능합니다. **CDP 엔드포인트를 통한 정밀한 제어** * **직접적인 프로토콜 노출:** Chrome DevTools Protocol(CDP) 엔드포인트를 직접 노출하여 에이전트가 브라우저에 대해 최대 수준의 제어권을 가질 수 있게 합니다. * **효율적인 모델 통신:** Puppeteer나 Playwright 같은 고수준 라이브러리를 거치지 않고 원시 CDP 메시지를 모델에 직접 전달할 수 있어, 토큰 효율적인 브라우저 제어가 가능합니다. * **간편한 이관:** 기존에 자체 호스팅 크롬에서 실행하던 CDP 기반 자동화 스크립트를 코드 한 줄의 설정 변경(WebSocket URL 교체)만으로 Browser Run에서 실행할 수 있습니다. **실시간 모니터링과 인간 협업 기능** * **Live View:** 에이전트가 현재 무엇을 보고 어떤 동작을 하는지 실시간으로 확인하며, 작업 실패 시 원인을 즉각 파악할 수 있습니다. * **Human in the Loop:** 로그인이나 예상치 못한 예외 상황 발생 시 에이전트가 작업을 중단하는 대신 인간에게 제어권을 넘기고, 문제가 해결되면 다시 제어권을 받아 작업을 이어가는 워크플로우를 지원합니다. * **세션 녹화(Session Recordings):** DOM 변경, 사용자 상호작용, 페이지 탐색을 포함한 모든 세션을 녹화하여 사후 디버깅 및 분석에 활용할 수 있습니다. **생태계 확장 및 차세대 웹 표준 지원** * **MCP(Model Context Protocol) 지원:** Claude Desktop, Cursor, OpenCode와 같은 AI 코딩 에이전트들이 Browser Run을 원격 브라우저로 사용할 수 있도록 지원합니다. * **WebMCP 도입:** 웹사이트가 에이전트가 수행 가능한 액션을 직접 선언하게 함으로써, 인간 중심의 웹 구조에서 발생하던 에이전트의 탐색 오류를 줄이고 신뢰성을 높입니다. Cloudflare Browser Run은 단순한 브라우저 자동화 도구를 넘어 AI 에이전트의 '눈'과 '손' 역할을 하는 필수 인프라로 자리 잡고 있습니다. 특히 복잡한 로그인 처리나 실시간 디버깅이 필요한 에이전트 환경을 구축하려는 개발자에게 CDP 직접 노출과 Human-in-the-loop 기능은 매우 강력한 이점을 제공할 것입니다.

인수 테스트를 신세틱 (새 탭에서 열림)

데이터독(Datadog)은 기존에 사용하던 Puppeteer 기반의 불안정한 인수 테스트 시스템을 자사 제품인 'Synthetic Monitoring'으로 전환함으로써 개발자 경험과 배포 효율성을 대폭 개선했습니다. 1년여에 걸친 이 마이그레이션 과정은 단순한 도구 교체를 넘어, 300명 이상의 엔지니어가 참여하는 대규모 코드베이스의 테스트 신뢰도를 높이고 유지보수 비용을 절감하는 성과를 거두었습니다. 결과적으로 팀은 더 빠른 피드백 루프를 확보하고 안정적인 지속적 통합(CI) 환경을 구축할 수 있었습니다. ### 기존 인수 테스트의 문제점과 한계 * **높은 불안정성(Flakiness):** Puppeteer와 Chromium 헤드리스 브라우저를 기반으로 한 커스텀 러너는 가상 그래픽 엔진과 네트워크 등 제어할 수 없는 외부 요인으로 인해 예기치 않은 테스트 실패가 잦았습니다. * **복잡한 구현 및 유지보수:** 버튼의 활성화 상태를 확인하고 클릭하는 등의 단순한 상호작용조차도 수동 스크립트로 일일이 작성해야 했으며, 제품 업데이트 시마다 수백 개의 테스트 파일을 직접 수정해야 하는 번거로움이 있었습니다. * **인프라 부하 및 실행 시간:** 테스트 규모가 커짐에 따라 CI 작업 시간이 35분 이상으로 늘어났고, 10만 줄 이상의 테스트 관련 코드와 인프라를 유지하기 위해 많은 리소스가 소모되었습니다. ### Synthetic Monitoring 기반의 해결책 도입 * **노코드(No-code) 방식의 테스트 생성:** 직접 스크립트를 작성하는 대신 사용자의 페이지 상호작용을 기록하는 방식을 채택하여 테스트 작성 난이도를 낮추고 직관성을 높였습니다. * **CI/CD 통합 도구 개발:** CI 환경에서 테스트를 트리거하고 결과를 수집하기 위해 `synthetics-ci`(이후 `datadog-ci`로 범용화) CLI를 개발했습니다. 이를 통해 `.synthetics.json` 설정 파일을 기반으로 테스트를 자동 실행할 수 있게 되었습니다. * **유연한 구성 관리:** API를 통해 테스트 결과 ID를 폴링하고 휴먼 리더블(human-readable)한 출력을 제공하여, 개발자가 CI 단계에서 문제를 즉각 파악할 수 있도록 설계했습니다. ### 대규모 조직을 위한 마이그레이션 전략 * **점진적 신뢰 구축:** 초기에는 테스트 실패가 배포를 막지 않는 'Non-blocking' 단계를 도입하여, 엔지니어들이 새로운 시스템에 익숙해질 수 있는 여유를 제공하고 PR 댓글로 결과만 공지했습니다. * **데이터 기반의 설문과 지원:** 분기별 엔지니어 만족도 조사를 통해 고충을 파악하고, 테스트를 가장 많이 보유한 팀들을 대상으로 직접적인 마이그레이션 지원과 교육 세미나를 진행했습니다. * **체계적인 추적과 일몰(Sunset) 전략:** 모든 마이그레이션 과정을 Jira 티켓으로 관리하며 팀별 담당자를 지정했습니다. 기존 플랫폼을 한 번에 제거하는 대신, 개별 테스트가 안정화될 때마다 단계적으로 폐쇄하여 리스크를 최소화했습니다. E2E(End-to-End) 테스트의 유지보수 비용과 불안정성으로 인해 생산성이 저하되고 있다면, 코드 기반의 무거운 테스트 프레임워크 대신 사용자 시나리오 녹화 기능과 CI 통합이 강화된 'Synthetic Monitoring' 류의 도구 도입을 검토해야 합니다. 특히 대규모 조직일수록 기술적 전환뿐만 아니라 문서화, 비차단적(Non-blocking) 테스트 운영 등을 통한 문화적 접근이 마이그레이션 성공의 핵심입니다.