안녕하세요! 오늘은 제가 개발하면서 겪은 대용량 파일 관리에 대한 이슈를 공유해보려고 합니다.
프로젝트를 진행하면서 3D 모델링 파일(.splat)을 깃허브에 올려야 하는 상황이 생겼는데요.
파일 크기가 200MB라서 깃허브에 바로 올리기가 힘들었습니다.
깃허브 업로드 용량 제한사항
무료 플랜: 저장소당 총 용량 제한 100GB
단일 파일 크기 제한: 100MB
Git LFS 사용시 최대 2GB
먼저 Git LFS를 사용했습니다
Git LFS는 대용량 파일을 효율적으로 관리할 수 있게 해주는 Git 확장 기능입니다.
대용량 파일을 별도의 서버에 저장하고, Git 저장소에는 파일에 대한 참조만 저장합니다.
😅 시도했던 방법들
1. Git LFS 시도
# Git LFS 설치 및 설정
git lfs install
git lfs track "*.splat"
git add .gitattributes
git commit -m "Git LFS 설정 추가"
# 파일 추가 시도
git add public/data/*.splat
git commit -m "대용량 파일 추가"
git push
결과: 실패 😭
기존에 사용중이던 레포지토리라 이전에 lfs를 사용하려다 실패한 이력이 있어서
더 문제를 해결하는데 어려움이 있네요
remote: error: File public/data/model.splat is 202.05 MB; this exceeds GitHub's file size limit of 100.00 MB
결국 AWS S3를 사용하기로 했습니다.
aws s3 계정생성 및 버킷 생성
버킷을 로컬과 배포서버에서 불러오기위해선
아래와같이 버킷 CORS 설정과 정책을 설정해줘야됩니다.
1. S3 버킷 CORS설정
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET"],
"AllowedOrigins": [
"http://localhost:3001",
"https://your-domain.vercel.app"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSpecificOrigins",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://localhost:3001/*",
"https://your-domain.vercel.app/*"
]
}
}
}
]
}
이와같이 설정하니 정상적으로 버킷 스토리지에 있는 파일을 불러올 수 있었습니다
성능 비교
로컬 vs S3 로딩 속도 비교
로컬 환경: 50MB 파일 렌더링 시간 0.8초
S3 환경: 50MB 파일 다운로드 + 렌더링 시간 평균 15초
이같이 s3로 사용하자니 파일 다운로드시간이 대폭 상승해 사용하기엔 어려움이 발생했습니다.
200mb인 파일도 있기때문에 2분이 넘을것으로 예상해 결국 aws s3도 포기하고 다시한번
git LFS에 도전한결과
각종 캐시문제나 이전 커밋들이 방해가 된다고 판단해 새로운 레포지토리를 생성해
레포지토리 세팅을 마치고 파일을 전부 이전 레포지토리에서 다운받은 후 진행했습니다
Git LFS 설치
git lfs install
추적할 파일 확장자 설정
git lfs track "*.splat"
.gitattributes 파일 커밋
git add .gitattributes
git commit -m "Configure Git LFS"
파일 추가 및 커밋
git add your-large-file.splat
git commit -m "Add large file"
git push origin main
레포지토리를 새로 생성하니 정상적으로 깃허브에 올라간걸 확인할 수 있었습니다
이번 Git LFS를 사용하면서 느낀건 초기 설정 순서가 중요합니다
Git LFS 설치 후 .gitattributes 설정을 먼저 해야 합니다
대용량 파일을 추가하기 전에 LFS 트래킹이 제대로 설정되어 있는지 꼭 확인하세요
Git LFS를 사용하면 2GB까지의 파일을 깃허브에 안전하게 업로드할 수 있습니다
초기 설정만 제대로 하면 대용량 파일 관리가 매우 편리합니다
무료 계정의 경우 저장소 용량과 대역폭 제한이 있으므로 주의가 필요합니다