
Scaling PhantomJS With Ghost Town
두줄요약
Ghost Town으로 PhantomJS의 크래시와 메모리 문제를 견디는 이미지 렌더링 구조를 설계했습니다.\n작업 큐, 워커 재할당, 프로세스 재시작으로 자동 확장과 복구를 지원합니다.
문제 상황
- PhantomJS의 빈번한 크래시·프리징, 높은 메모리 사용량, 느린 시작 시간
- 다양한 이미지의 저지연 렌더링과 높은 동시성 요구
- 수동 확장과 방치된 PhantomJS·phantomjs-node 생태계
구조와 흐름
- 마스터 큐에 작업 저장 후 가용 워커에 할당하는 클러스터 처리
- 타임아웃 또는 워커 실패 작업의 자동 재큐잉
- 워커별 독립 PhantomJS 프로세스와 페이지 생성 횟수 기준 주기적 재시작
해결 방법
- PhantomJS 실행·관리와 작업 큐잉을 담당하는 Node.js 모듈 Ghost Town 설계
- 자동 확장과 크래시 복구를 통한 안정적 이미지 렌더링
- Node.js cluster 모듈과 유사한 마스터·워커 구현 방식
성능/운영 포인트
- 워커별 프로세스 격리로 메모리 누수 완화
- 설정 옵션을 통한 런타임과 효율성 조정
