만들기 전에 실행 환경을 점검한다
원문 기준 전제에는 Node.js 22 이상과 FFmpeg가 포함됩니다. 설치 명령과 CLI는 저장소 버전에 따라 달라질 수 있으므로 원문의 짧은 명령을 최신 실행법으로 단정하지 말고 선택한 커밋의 안내를 따라야 합니다. 한 장면을 낮은 해상도로 렌더링해 폰트, 투명도, 오디오 동기화를 먼저 확인하는 편이 빠릅니다.
preflight는 Node, browser, FFmpeg version, required font, asset hash, disk 여유와 encoder availability를 rendering 전에 검사합니다. 10분 뒤 중간에서 font missing을 발견하는 것보다 첫 frame을 만들기 전 실패시키는 편이 낫습니다. scene input schema와 해상도, fps 상한도 여기서 검증합니다.
렌더 시간이 길다면 어느 단계가 병목인지 나눠 봅니다. 브라우저 시작, 프레임 계산, 스크린샷, 인코딩 시간을 따로 기록해야 병렬화나 캐시가 실제로 도움이 되는지 알 수 있습니다. 실패한 렌더가 중간 파일을 남기는지와 재시작 시 처음부터 반복하는지도 운영 비용에 포함됩니다.
frame 병렬화는 모든 scene이 특정 frame을 독립적으로 계산할 때만 안전합니다. 이전 frame의 mutable state를 누적하는 animation은 worker 순서에 따라 달라질 수 있습니다. adapter가 논리 시간만으로 상태를 재구성하는지 확인하고, GPU, browser instance 수를 늘릴 때 memory와 disk I/O가 먼저 포화되지 않는지 측정합니다.
cache key에는 source, asset hash, browser, viewport, fps와 frame number를 포함합니다. CSS 한 줄이 바뀌었는데 이전 frame을 재사용하거나 encoder 설정 변화 때문에 불필요하게 전부 재캡처하지 않도록 capture cache와 encoding cache를 분리할 수 있습니다. 중간 PNG를 보존할 기간과 실패 작업 cleanup도 정합니다.