잊지 마세요! 잊지 않고 복권 응모하는 자동화 스크립트
샌프란시스코 스턴 그로브(Stern Grove) 무료 콘서트 복권 응모를 잊는 문제를 해결하기 위해 자동화 스크립트 개발을 결정함.
코딩 에이전트(Claude Code)와 플레이라이트(Playwright)를 활용하여 웹사이트 스크래핑 및 브라우저 자동화 구현.
GitHub Actions를 이용한 주간 크론 스케줄링 및 Resend를 통한 알림 기능으로 자동화 시스템 구축 완료.
AI 코딩 에이전트와 브라우저 자동화의 시너지
본문은 AI 코딩 에이전트(AI Coding Agent)가 브라우저 자동화 도구인 플레이라이트(Playwright)와 결합될 때의 강력함을 보여준다.
프롬프트 엔지니어링(Prompt Engineering): 개발자가 원하는 자동화 시나리오를 명확히 전달하는 것만으로 에이전트가 복잡한 로직을 생성.
상태 지속성(State Persistence): JSON 파일을 활용하여 복권 응모 기록을 관리하고 중복 응모를 방지하는 데이터 격리 아키텍처(Data Isolation Architecture) 구현.
코드 생성 및 검토 루프(Code Generation & Review Loop): AI가 생성한 코드를 다른 AI 에이전트가 검토하고 수정하는 과정을 통해 코드 품질(Code Quality)을 향상시킴.
이러한 조합은 개발자가 반복적인 작업을 자동화하는 데 드는 시간과 노력을 크게 절감시킨다.
플레이라이트(Playwright)를 활용한 웹 스크래핑 및 자동화 기법
플레이라이트(Playwright)는 크로스 브라우저(Cross-browser) 자동화를 지원하며, 실제 사용자와 유사한 방식으로 웹 페이지와 상호작용한다.
실시간 데이터 검증(Live Data Inspection): `window.tixologiWidget.concerts`와 같은 실제 DOM 데이터를 직접 검사하여 추측이 아닌 관찰 기반의 구현을 가능하게 함.
동적 콘텐츠 처리(Dynamic Content Handling): 비동기 로딩이나 복잡한 JavaScript 로직이 포함된 페이지에서도 안정적으로 요소를 찾고 조작할 수 있음.
의존성 관리: Playwright는 Chromium, Firefox, WebKit 브라우저를 자체적으로 관리하며, `playwright install --with-deps` 명령어로 필요한 종속성을 설치한다.
이러한 기능들은 복잡한 웹사이트의 데이터를 안정적으로 추출하고 자동화된 작업을 수행하는 데 필수적이다.
GitHub Actions 기반의 CI/CD 파이프라인 구축
이 프로젝트는 GitHub Actions를 활용하여 스크립트의 주기적인 실행과 비밀 정보 관리를 자동화한다.
크론 스케줄링(Cron Scheduling): `on: schedule: - cron: "0 17 * * 1"` 설정을 통해 매주 특정 시간에 스크립트가 자동으로 트리거됨.
시크릿 관리(Secret Management): API 키와 같은 민감 정보는 GitHub Actions의 암호화된 시크릿(Encrypted Secrets)으로 저장되어 코드에 노출되지 않음.
워크플로우 파일(.github/workflows/lottery.yml): 스크립트 실행 환경 설정, 스케줄링, 의존성 설치 등 전체 자동화 파이프라인을 코드로 관리.
이러한 CI/CD 파이프라인은 안정적인 자동화 실행 환경을 제공하며, 개발자의 수동 개입 없이도 작업을 지속적으로 수행하게 한다.
자동화 실패 시 복구 및 디버깅 전략
자동화 스크립트의 첫 실행 실패는 환경 설정의 차이에서 비롯되었다.
Ubuntu 버전 호환성: Playwright는 특정 Ubuntu 버전(22.04)에 의존성을 가지며, 최신 버전(24.04)과의 차이로 인해 `libasound2t64`와 같은 패키지 이름 변경 문제가 발생함.
Chromium 종속성 문제: Playwright의 기본 설치 방식 대신, 명시적인 `apt-get install`을 통해 필요한 라이브러리를 수동으로 설치하여 호환성 확보.
전체 기록(Auditable Record): AI 코딩 세션 기록과 Git 커밋 히스토리를 통해 문제 발생 지점을 추적하고 해결 과정을 재현할 수 있었음.
이러한 실패 경험은 실제 운영 환경에서의 잠재적 문제점을 미리 파악하고 대비하는 중요성을 강조한다.
Entire 플랫폼을 활용한 AI 코딩 세션 기록 및 재현
Entire 플랫폼은 AI 코딩 과정의 모든 단계, 즉 프롬프트, 도구 호출, 파일 변경 사항을 기록하여 완전한 감사 추적을 제공한다.
세션 타임라인(Session Timeline): 대화 순서대로 모든 상호작용을 시각적으로 보여주며, 도구 호출(Tool Calls)을 확장하여 상세 인자 및 결과를 확인할 수 있음.
필터링 기능(Filtering Capabilities): 불필한 정보는 숨기고 원하는 단계(예: 파일 편집, bash 명령어)만 집중하여 볼 수 있어 디버깅 효율성 증대.
Git 커밋 연동: Entire 세션 기록은 해당 Git 커밋과 직접 연결되어, 코드 변경의 이유와 맥락을 쉽게 파악할 수 있음.
이러한 투명성은 AI 기반 개발 협업에서 신뢰성(Trustworthiness)과 재현성(Reproducibility)을 높이는 데 기여한다.