어떤 문제가 생길까
캐시 오염: 정상처럼 보이는 한 사례만으로는 동작 범위를 이해하기 어렵습니다. 대표 입력에서는 문제없다가 경계값, 느린 응답, 배포 직후처럼 조건이 달라질 때 결과가 바뀔 수 있습니다.
Actions cache는 신뢰 경계와 key가 넓으면 다른 branch의 조작된 dependency를 재사용할 수 있어 write 주체와 restore key를 제한해야 합니다.
원인을 이해하는 기준
pull request, Actions runner, branch protection과 repository 권한으로 구성된 GitHub 협업 환경에서 어느 경계가 결과를 결정하는지 먼저 봅니다. 브라우저, CDN, framework, application과 DB cache를 각각 분리합니다. cache key, TTL, tag, 소유 instance와 변경 직후 허용할 stale 시간을 적어야 어디가 오래된 값을 주는지 알 수 있습니다.
| 구분 | 짧은 예시 |
|---|---|
| 기대 결과 | 캐시 오염: 정상 조건에서 사용자가 받아야 할 결과 |
| 실제 결과 | 같은 입력에서 처음 달라진 값·상태·오류 |
| 판별 자료 | PR checks, workflow run, audit log, artifact와 배포 environment 상태를 확인한다 |
적용 예시와 확인
최소 권한 token, 고정된 action 버전, 보호 규칙과 승인 환경으로 변경 경로를 통제한다. 데이터 변경 지점에서 정확한 key나 tag를 무효화하고 사용자별 응답은 공유 cache에서 제외합니다. 다중 instance에서는 process local 무효화만으로 일관성이 생기지 않습니다.
대표 사례 하나, 값이 달라지는 경계 하나, 예상 가능한 실패 하나를 같은 순서로 확인합니다. fork PR, 재실행, 취소, 동시 배포와 권한 없는 사용자의 우회 가능성을 테스트한다. cold, hit, stale, mutation 직후, 여러 instance와 rolling deployment 조건에서 응답 header와 실제 값을 함께 확인합니다.
공식 문서와 적용 범위
문서의 기본값과 동작은 version에 따라 달라질 수 있습니다. 현재 도구 version, repository 상태, 보호 규칙과 협업 절차에서 다시 확인합니다.