시스템 설계, 기술 면접 대비

파일 업로드 시스템 설계 면접 퀴즈

파일이 어디를 지나가는지가 확장 한계를 정한다

팀 파일 공유 서비스 하나를 요구사항부터 끝까지 설계합니다. 업로드 경로, 서명 직접 업로드, 멀티파트, 재개, 정합성, 중복 제거, 검증을 하나의 제약 안에서 다룹니다.

로그인 없이 풀어보기
18개 문제, 무료

학습할 핵심 개념

요구사항 정리와 범위 자르기
업로드 경로와 그 한계
서명된 주소로 직접 업로드
멀티파트와 청크 업로드
재개와 재시도
메타데이터와 저장소 정합성
중복 제거와 콘텐츠 해시
검증과 용량 제한

핵심 개념 미리보기

파일 업로드 시스템 설계 면접에서 꼭 나오는 개념을 미리 확인하세요

요구사항 정리와 범위 자르기

핵심

시스템 설계는 요구사항을 기능비기능으로 나누고 범위 밖을 먼저 잘라내는 것에서 시작합니다. 이 토픽은 아래 하나의 요구사항을 끝까지 풉니다.

항목
서비스팀 파일 공유 서비스
파일 크기평균 20MB, 최대 50GB
업로드하루 200만 건, 합계 약 40TB
사용자월 활성 500만, 모바일 60퍼센트
우선순위가용성. 업로드 실패보다 잠깐 늦게 보이는 편이 낫다

기능 요구사항과 범위 밖

구분내용
이번에 만든다파일 업로드, 다운로드, 링크 공유
범위 밖실시간 협업 편집, 버전 관리, 전문 검색, 권한 그룹 관리

범위 밖을 말하는 것이 실력입니다. 다 만들겠다고 하면 무엇도 깊게 못 하고, 면접에서는 우선순위를 못 정하는 것으로 읽힙니다.

비기능 요구사항이 설계를 정한다

비기능 요구사항 네 개가 각각 어떤 설계 결정을 정하는지 비기능 요구 정해지는 설계 최대 50GB 멀티파트가 필수 하루 40TB 앱을 통과시킬 수 없다 모바일 60퍼센트 재개와 멱등이 필요 가용성 우선 최종 일관성을 받는다 평균 20MB 는 반대로 작동한다. 대부분의 파일에는 멀티파트가 과설계다

숫자를 그냥 적어두면 장식입니다. 각 숫자가 어떤 결론을 강제하는지까지 가야 요구사항 정리가 끝난 것입니다.

숫자강제하는 것
최대 50GB멀티파트단일 요청 크기 상한을 넘는다. 대안이 없다
하루 40TB직접 업로드앱 서버가 통과시킬 수 있는 양이 아니다
모바일 60퍼센트재개와 멱등끊김이 예외가 아니라 정상 상황이다
가용성 우선최종 일관성쓰기를 막기보다 잠깐 어긋나는 편을 택한다

평균값은 반대로 읽는다

평균 20MB 라는 숫자는 과설계를 막는 쪽으로 씁니다. 최대가 50GB 라서 멀티파트가 필요하지만, 실제 파일 대부분은 한 번에 올려도 됩니다.

그래서 설계는 하나가 아니라 두 갈래가 됩니다. 작은 파일은 단순 경로로, 큰 파일만 멀티파트로 보냅니다. 최대값만 보고 모든 파일을 멀티파트로 처리하면 대부분의 요청에 불필요한 왕복과 상태 관리를 붙이는 셈입니다.

용량 산정은 자릿수만 맞으면 된다

하루 200만 건 를 초로 환산하면 약 23건입니다. 피크를 평균의 다섯 배로 잡아도 초당 100건 남짓입니다. 쓰기 자체는 크지 않고, 문제는 건수가 아니라 바이트입니다.

이 구분이 설계를 바꿉니다. 초당 100건은 어떤 데이터베이스든 받아냅니다. 하루 40TB 는 앱 서버가 통과시킬 수 없습니다. 그래서 병목은 메타데이터가 아니라 파일 전송 경로입니다.

면접에서 이렇게 나옵니다
  • Q.파일 공유 서비스의 요구사항을 어떻게 정리하시겠습니까
  • Q.이 요구사항에서 병목은 어디라고 보시나요
  • Q.최대 파일 크기가 50GB 인데 모든 업로드를 멀티파트로 처리하면 되나요

업로드 경로와 그 한계

핵심

파일 업로드 설계는 파일이 어디를 지나가는지로 갈립니다. 앱 서버 디스크에 두는 방식에서 오브젝트 스토리지로, 다시 클라이언트가 스토리지로 직접 올리는 방식으로 올라갑니다. 각 칸이 앞 칸의 특정 결함을 고칩니다.

업로드 경로 세 단계. 앱 서버 디스크에 저장, 앱 서버를 거쳐 오브젝트 스토리지로, 서명만 받고 스토리지로 직접 1 앱 서버 디스크에 저장 클라이언트 파일 앱 서버 2 앱 서버를 거쳐 오브젝트 스토리지로 클라이언트 파일 앱 서버 파일 스토리지 3 서명만 받고 스토리지로 직접 앱 서버 클라이언트 서명 요청 파일 스토리지

1번 칸이 왜 깨지나

앱 서버 디스크에 저장하면 세 가지가 동시에 문제가 됩니다.

문제언제 드러나나
용량디스크가 차면 배포가 아니라 장애가 된다
소실인스턴스를 교체하거나 오토스케일로 줄이면 파일이 사라진다
서버 상태서버마다 다른 파일을 갖게 되어 무상태가 깨진다. 로드밸런서가 다른 서버로 보내면 파일이 없다

마지막이 가장 비쌉니다. 서버를 늘리는 것만으로 해결되지 않는 문제가 되기 때문입니다.

2번 칸이 남기는 것

파일을 오브젝트 스토리지에 두면 용량과 소실과 무상태가 한 번에 풀립니다. 서버는 파일을 들고 있지 않으므로 언제든 교체할 수 있습니다.

그런데 파일이 여전히 앱 서버를 통과합니다. 앱이 받아서 다시 보내므로 대역폭과 메모리를 앱이 내고, 요청 하나가 오래 붙잡히므로 동시 업로드가 늘면 스레드가 먼저 바닥납니다.

요구사항의 숫자가 이 칸의 한계를 보여줍니다. 하루 40TB 가 앱을 통과해야 하고, 최대 50GB 파일 하나가 요청 하나를 아주 오래 붙잡습니다. 파일을 저장하지 않아도 지나가게 하는 것만으로 앱이 병목입니다.

3번 칸으로 올라가는 이유

앱 서버는 권한을 확인하고 서명된 주소만 내려줍니다. 파일은 클라이언트가 스토리지로 직접 보냅니다. 앱 서버가 지나가는 경로에서 빠지므로 파일 크기가 앱의 부담과 무관해집니다.

대신 새 숙제가 생깁니다. 파일이 앱을 거치지 않으니 앱은 업로드가 끝났는지 모릅니다. 검증도 못 하고 메타데이터도 기록하지 못합니다. 이 숙제를 푸는 것이 다음 개념들입니다.

사다리를 오르지 않아도 되는 경우

3번이 항상 정답은 아닙니다. 하루 열 건에 100KB 짜리 설정 파일이라면 1번으로 충분하고, 서명 발급과 완료 통보를 만드는 것이 오히려 손해입니다. 선택을 정하는 것은 기술의 새로움이 아니라 파일 크기와 동시 업로드 수입니다.

면접에서 이렇게 나옵니다
  • Q.파일 업로드를 설계할 때 무엇부터 정하나요
  • Q.앱 서버 디스크에 파일을 저장하면 무엇이 문제인가요
  • Q.오브젝트 스토리지에 저장하면 무엇이 남나요

서명된 주소로 직접 업로드

핵심

앱 서버는 권한을 확인하고 서명된 주소만 내려줍니다. 파일은 클라이언트가 스토리지로 직접 보내고, 스토리지가 그 서명을 검증합니다. 앱이 경로에서 빠지므로 파일 크기가 앱의 부담과 무관해집니다.

그 대가로 앱은 업로드를 보지 못합니다. 서명이 무엇을 담고 무엇을 못 하는지를 아는 것이 이 개념의 전부입니다.

서명이 담는 것과 서명이 해결하지 않는 것의 비교 서명이 담는 것 만료 시각 허용 크기 상한 콘텐츠 타입 대상 경로와 메서드 스토리지가 서명을 직접 검증한다 서명이 못 하는 것 내용 검증 메타데이터 기록 완료 여부 통보 중복 판정 앱이 경로에서 빠졌으니 따로 만들어야 한다

서명에 조건을 박는다

서명은 단순한 접근 허가가 아니라 조건이 붙은 허가입니다. 조건을 서명에 넣으면 스토리지가 대신 거절해 줍니다.

조건넣지 않으면
만료주소가 유출되면 영구 업로드 권한이 된다
크기 상한100GB 를 올려 요금과 디스크를 태울 수 있다
콘텐츠 타입이미지 자리에 실행 파일이 들어온다
대상 경로남의 경로에 덮어쓸 수 있다

만료는 짧게 잡습니다. 업로드를 시작할 시간만 있으면 되고, 큰 파일은 시작 후 오래 걸려도 됩니다. 서명이 만료돼도 진행 중인 전송은 끊기지 않기 때문입니다.

앱이 모른다는 문제

파일이 앱을 거치지 않으니 앱은 세 가지를 모릅니다. 업로드가 끝났는지, 무엇이 올라갔는지, 그것이 유효한지입니다.

그래서 완료 통보 경로를 따로 만듭니다. 방법은 둘입니다.

방법동작약점
클라이언트가 알린다업로드 후 앱에 완료 요청을 보낸다클라이언트가 죽으면 통보가 안 온다
스토리지가 알린다객체 생성 이벤트를 앱이 받는다지연이 있고 이벤트 유실 대비가 필요하다

실무에서는 둘을 함께 씁니다. 빠른 경로는 클라이언트 통보, 안전망은 스토리지 이벤트입니다. 한쪽만 두면 통보를 못 받은 파일이 스토리지에만 남습니다.

클라이언트 검사는 통제가 아니다

서명을 발급할 때 클라이언트가 보낸 파일명과 크기를 그대로 믿으면 안 됩니다. 클라이언트는 고쳐 보낼 수 있는 쪽입니다. 조건은 서명 안에 박아야 스토리지가 강제합니다.

이 구분이 면접에서 자주 갈립니다. 크기 제한을 화면에서만 하고 서명에 넣지 않으면, 요청을 직접 만들어 보내는 것으로 우회됩니다.

면접에서 이렇게 나옵니다
  • Q.서명된 주소로 직접 업로드하는 방식을 설명해주세요
  • Q.서명 만료를 짧게 잡아도 큰 파일 업로드가 끊기지 않나요
  • Q.직접 업로드에서 앱은 업로드 완료를 어떻게 아나요

더 많은 개념과 문제는 가입 후 이용할 수 있어요

먼저 5문제 맛보기

파일 업로드 시스템 설계 면접 빈출 질문

실제 면접에서 자주 나오는 질문들입니다

Q.

파일 공유 서비스의 요구사항을 어떻게 정리하시겠습니까

요구사항 정리와 범위 자르기 개념 정리 보기
Q.

이 요구사항에서 병목은 어디라고 보시나요

요구사항 정리와 범위 자르기 개념 정리 보기
Q.

최대 파일 크기가 50GB 인데 모든 업로드를 멀티파트로 처리하면 되나요

요구사항 정리와 범위 자르기 개념 정리 보기
Q.

가용성을 일관성보다 우선한다는 것이 이 설계에서 무엇을 뜻하나요

요구사항 정리와 범위 자르기 개념 정리 보기
Q.

파일 업로드를 설계할 때 무엇부터 정하나요

업로드 경로와 그 한계 개념 정리 보기
Q.

앱 서버 디스크에 파일을 저장하면 무엇이 문제인가요

업로드 경로와 그 한계 개념 정리 보기
Q.

오브젝트 스토리지에 저장하면 무엇이 남나요

업로드 경로와 그 한계 개념 정리 보기
Q.

직접 업로드가 항상 더 좋은 선택인가요

업로드 경로와 그 한계 개념 정리 보기

이런 점이 좋아요

하나의 요구사항을 끝까지 설계하는 훈련

제약에서 설계를 도출하는 판단력

과설계를 구분하는 기준

지금 바로 시작하세요

무료로 파일 업로드 시스템 설계 퀴즈를 풀고, AI 오답 분석으로 실력을 키우세요.