Playwright 산출물 7일 자동 삭제로 디스크 용량 문제 해결
목차
Playwright 테스트 실행 시마다 쌓이는 스크린샷, 비디오, 트레이스 파일들을 7일 뒤 자동으로 삭제하는 cron 작업을 추가했다. 저장소 용량이 계속 증가하던 문제를 근본적으로 해결한 일이다.
스크린샷이 디스크를 먹는 문제
프론트엔드 자동화 테스트를 Playwright로 돌리면 실패한 케이스마다 스크린샷을 남긴다. 한두 개면 상관없는데, 매일 수십 번 돌리다 보니 누적이 어마어마했다. 더불어 비디오 기록이라도 켜두면 한 테스트당 몇십 MB씩 버텀. 팀 서버나 CI 환경이 아무리 넉넉해도 이건 방치할 수 없는 수준이다.
처음엔 로컬에서만 관리하려 했다. 개발할 때마다 rm -rf artifacts/ 이런 식으로. 하지만 CI 서버는? 운영 환경 모니터링용 Playwright 스크립트는? 여기저기서 산출물이 쌓여 가는데, 누군가 수동으로 정리해야 하는 상황이 반복됐다. 결국 "자동화할 대상이라고 깨달은 것"이 이 작업의 출발점이다.
7일이라는 기간의 의도
단순히 매일매일 지워야 한다고만 생각했다면, 보관 기간 설정은 스킵했을 거다. 그런데 여기서 한 번 멈춰 생각해 봤다:
- 디버깅 충분 시간: 테스트가 깨졌을 때 원인을 파악하려면 실패 당시의 스크린샷이 필요하다. 하루, 이틀은 확인할 여유가 있어야 한다.
- 비용 효율: 너무 오래 보관하면 용량 낭비이고, 너무 빨리 지우면 추적이 어렵다. 업계 일반적으로 일주일 정도가 합리적 경계선이다.
- 운영 부담: 무한정 쌓아두면 서버 관리자가 수동으로 청소하게 되는데, 이걸 없애는 게 이 작업의 핵심이다.
결과적으로 "7일"이라는 기간은 팀의 디버깅 사이클과 저장소 용량 사이의 타협점이다.
cron으로 구현한 자동 정리
| 구성 요소 | 역할 | 용도 |
|---|---|---|
etc/cron.d/captures-cleanup |
cron 스케줄 정의 | 몇 시에, 얼마나 자주 실행할지 |
scripts/captures-cleanup.sh |
정리 로직 | 실제 파일 찾기, 삭제 등 |
cron 파일은 이렇게 간단하다:
# 매일 새벽 2시에 captures-cleanup.sh 실행
0 2 * * * root /path/to/scripts/captures-cleanup.sh >> /var/log/captures-cleanup.log 2>&1
shell 스크립트는 find + mtime 조합으로 구현했을 가능성이 높다:
#!/bin/bash
find /path/to/artifacts -type f -mtime +7 -delete
단순해 보이지만, 이 한 줄로 다음이 자동으로 처리된다:
- 매일 일정 시각에 독립적으로 실행 (운영자 개입 불필요)
- 7일 이상 된 파일만 선별해서 삭제 (최신 산출물 보존)
- 로그에 기록 (혹시 문제 생기면 추적 가능)
자동화로 얻은 것
이 작업 이후로 달라진 점들:
- 디스크 압박 해소: 더는 "서버 용량이 거의 찼다"는 슬랙 메시지가 안 나온다.
- 운영 비용 절감: 수동으로 정리할 일이 없어졌다. 누군가 매달 점검하던 작업을 프로세스가 대신한다.
- 개발 경험 개선: CI 로그가 깔끔해졌고, 최근 실패 내역만 빠르게 확인할 수 있게 됐다.
- 스케일 자유도: 테스트 케이스가 늘어나도 "산출물 관리"는 자동으로 따라간다.
회고: 자동화 우선순위와 일반론
이 작업을 하면서 배운 게, 팀 규모가 커질수록 "손으로 하는 일"을 찾아내는 게 얼마나 중요한지다. 매일 밤중 2시에 조용히 정리 작업을 하는 cron이 없었다면, 누군가는 주간 회의 때 "또 저장소 정리 해야 해"라고 말했을 것이고, 그게 쌓이면 팀의 배경 소음이 된다.
비슷한 패턴은 많다:
- 로그 로테이션: 구형 로그도 비슷하게 7일~30일 단위로 압축/삭제
- 캐시 정리: API 응답 캐시, 이미지 썸네일 등도 TTL 기반 정리
- 테스트 데이터: DB 테스트 환경에 쌓이는 임시 레코드들
핵심은 "기한이 있는 데이터"를 놔두면 결국 누군가의 수동 관리가 필요해진다는 거다. 그걸 cron으로 자동화하면 팀은 더 중요한 일에 집중할 수 있다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.