뱅크샐러드, 외부 링크 관제 봇으로 매출 손실 막다!
by DD
6년 전
조회수 12
제휴사 페이지 장애로 인한 매출 손실 및 사용자 경험 저하 문제를 해결하고자 함
Puppeteer를 활용하여 Headless Browser 기반의 URL Checker를 개발, 이미지 비교 방식으로 장애 감지
GitHub Actions에서 Kubernetes CronJob으로 운영 환경을 변경하여 에러 발생률 0% 달성
Puppeteer 기반 장애 감지 시스템
Puppeteer를 사용하여 제휴사 페이지를 주기적으로 스크린샷하고, 이전 스크린샷과 비교하여 장애 여부를 판단한다. 구체적으로 Resemble.js를 활용하여 이미지 유사도를 측정하고, 50% 이상 차이가 발생하면 장애로 간주한다. 따라서 페이지 변경 감지를 통해 장애 발생 시점을 빠르게 파악한다.
GitHub Actions에서 Kubernetes CronJob으로의 전환
초기에는 GitHub Actions를 사용하여 CronJob을 구성했지만, ERR_CONNECTION_CLOSED, ERR_CONNECTION_TIMED_OUT 에러가 빈번하게 발생했다. EC2 환경으로 런너를 변경했으나, 근본적인 해결책이 되지 못했다. 따라서 Kubernetes CronJob으로 전환하여 서버 자원 할당량 증가 및 안정적인 운영 환경을 구축했다.
Playwright 도입을 통한 확장성 확보
현재 사용 중인 Puppeteer는 Chromium 기반 브라우저만 지원하여, iOS 환경에서의 제휴사 페이지 검증에 한계가 있다. Playwright를 도입하여 Webkit 브라우저를 지원함으로써, iOS 사용자 환경까지 커버할 예정이다. 결과적으로 다양한 환경에서의 서비스 안정성을 확보할 수 있다.