강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của eedys12341972
eedys12341972

câu hỏi đã được viết

Khóa học hoàn thiện về Thiết kế hệ thống Big Tech Hoa Kỳ và Đóng góp thực tế cho mã nguồn mở – Những kỹ năng không thể thay thế trong kỷ nguyên AI

Thiết kế hoàn hảo cho việc lưu trữ tệp quy mô lớn, xử lý chunk và đồng bộ hóa với Blob Storage (feat. Dropbox, AWS S3) [Cập nhật]

Blob Storage에서 파일 업로드에 대한 동시성을 어떻게 제어할 수 있을까요?

Đã giải quyết

Viết

·

82

0

용량이 큰 파일의 binary를 기반으로 해시화해서 동시 업로드 할 경우 동일한 파일이 업로드 될 수 있을 것 같습니다.
이럴 경우 해결책이 있을까요?

소프트웨어-설계시스템-디자인

Câu trả lời 2

0

americasnail님의 프로필 이미지
americasnail
Người chia sẻ kiến thức

안녕하세요. 이정환님,

답변이 늦어 죄송합니다. 좋은 질문 감사드립니다.

Blob Storage 또는 AWS S3처럼 객체 저장소에 용량이 큰 파일을 업로드할 때, 동일한 파일이 동시에 여러 번 업로드되는 문제는 실제로 많이 발생합니다. 이를 해결하기 위해 많이 사용하는 방식이 바로 Pre-Signed URL 기반 업로드입니다.

Pre-Signed URL + 조건부 요청 조합으로 해결할 수 있습니다.

  1. 서버에서 업로드 전에 파일의 해시(SHA-256 등)를 계산합니다.
    이 해시를 기반으로 S3 또는 Blob Storage에 저장할 파일의 이름(Key)을 정합니다.
    예: uploads/1a2b3c4d5e...

  2. 이미 동일한 해시의 파일이 존재하는지 확인합니다.
    존재할 경우 → 업로드 생략 (중복 방지)
    존재하지 않을 경우 → Presigned URL을 발급하여 클라이언트에게 전송

  3. 클라이언트는 해당 URL로 직접 업로드합니다.
    이때 If-None-Match: 헤더를 사용하면,

    동일한 키에 파일이 이미 존재할 경우 업로드가 거부(HTTP 412)되어 중복 업로드가 자동 방지됩니다.

     

  • 대용량 파일이라면 Multipart Upload + 각 파트별 Pre-signed URL 조합으로 병렬 업로드도 가능합니다.

  • Presigned URL은 짧은 유효시간, 최소 권한 설정으로 보안도 안전하게 유지할 수 있어요.

     

결론적으로, 해시 기반 파일명 지정 + Pre-signed URL + 조건부 업로드 조합은 Blob Storage 환경에서 동시 업로드 충돌 방지와 중복 업로드 최소화에 효과적인 방식입니다.

0

안녕하세요, 인프런 AI 인턴입니다. 이정환님께서 질문해주신 Blob Storage에서의 파일 업로드 동시성 제어에 대한 답변을 드리겠습니다.

문제 상황 이해

파일 업로드 시, 특히 용량이 큰 파일의 경우, 동일한 파일이 여러 번 업로드되는 것을 방지하려면 동시성을 제어할 필요가 있습니다. 일반적으로 파일의 해시 값을 생성하여 이를 파일의 유일한 식별자로 사용하면, 동일한 파일을 여러 번 저장하는 것을 방지할 수 있습니다.

해결 방안

  1. 해시 기반 식별자 사용:

    • 파일을 업로드할 때 먼저 파일의 해시를 생성합니다. 이 때 사용되는 해시 알고리즘으로는 주로 SHA-256이나 MD5를 사용합니다.
    • 해시 값을 기준으로 Blob Storage나 데이터베이스에서 검색하여 이미 존재하는 파일인지 확인합니다.
    • 이미 존재하는 파일이라면 업로드를 중단하고 기존 참조를 반환합니다.
  2. 분산 락 시스템 사용:

    • 파일이 업로드되기 전에 해시 값으로 락(lock)을 생성하여, 락이 걸린 파일은 중복 업로드를 방지합니다. 여러 클라이언트가 동일한 파일을 업로드하려는 경우, 먼저 락을 획득한 클라이언트만 업로드를 처리할 수 있도록 합니다.
    • 락은 잠시 동안만 유지되며, 이후 자동으로 해제되도록 설정하여 데드락을 방지합니다.
  3. 멀티 파트 업로드와 체크포인트:

    • 큰 파일은 멀티 파트로 업로드하여 각 파트를 병렬로 처리합니다.
    • 멀티 파트 업로드 시, 각 파트에 대해 체크포인트를 저장하고 이를 통해 중단된 업로드를 재개하거나 복구할 수 있습니다.

추가 참고 자료

비슷한 상황에 대해 논의된 질문을 참고하시면, 보다 심층적인 이해를 도울 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của eedys12341972
eedys12341972

câu hỏi đã được viết

Đặt câu hỏi