13P by whatsup 18일전 | ★ favorite | 댓글 1개

배포 시 정적 파일을 불러오지 못해 흰 화면이 발생하는 문제를 AWS S3 + CloudFront로 해결한 글입니다. AWS S3 + CloudFront로 안정적인 정적 파일 배포를 고민하는 분들에게 도움이 되었으면 좋겠습니다.

[문제 발생 배경]

  • React + Vite 기반 Frontend 서비스 운영
  • 배포 후 간헐적 흰 화면 발생 → 정적 파일을 불러오지 못함
  • 콘솔 오류: MIME 타입 불일치 (text/html 반환)

[문제 분석]

  • MIME 타입 불일치: 정적 파일이 아닌 HTML 응답 반환
  • Github Actions 취소 → ECS 인스턴스 제거 가설
  • 배포 시점과 정적 파일 서빙 불일치
  • 기존 버전의 index.html이 새로운 정적 파일을 참조하지만 파일이 제거됨

[해결 방법]

  • CloudFront + S3 활용 (최종 결정)
  • S3 절대 경로 사용하여 이전 버전 정적 파일 유지
  • Vite 빌드 시 파일명에 commitHash, timestamp 추가 → 고유성 유지
  • S3 Lifecycle 설정으로 불필요한 파일 자동 삭제
  • CloudFront 연동하여 빠르고 안정적인 정적 파일 서빙
  • Local, Dev, Prod 환경 별도 설정

[검증 결과]

  • CloudFront + S3 방식 정상 동작 확인
  • 캐싱 전략 적용: 브라우저 캐시(Cache-Control, max-age) 점검
  • 파일 고유성 부여로 캐싱 무효화 필요 없음
  • 이전처럼 정적 파일 누락 문제 없이 안정적인 배포 가능

[배운 점]

  • 배포 환경에서 정적 파일 관리가 UX에 큰 영향을 줄 수 있다.
  • 가설 검증 시 빠르고 간단한 접근 방식이 중요
  • S3 + CloudFront를 활용한 배포 환경 최적화 경험
  • 환경별 배포 전략(Local, Dev, Prod) 차별화 필요
  • 브라우저 캐싱 동작(Cache-Control, from disk cache)에 대한 이해 필수

롤링이니까 당연히 문제지. 배포시간을 짧게 만들거나 배포를 분리해서 트래픽을 한쪽으로 몰아주는 블루그린전략으로 하면 되요.

아니면 리액트 에러캐치해서 리로드를 강제로 시켜도 되구요.