객체의 data plane은 높은 처리량·내구성을, metadata plane은 version·권한·삭제의 명확한 상태 전이를 책임집니다.
F1불완전 업로드 차단
part는 staging에만 두고 complete 검증 뒤에만 visible version을 만듭니다.
F2범위 읽기
video·backup은 필요한 segment만 range GET으로 읽고 checksum을 유지합니다.
F3복구 가능한 삭제
version, delete marker, restore, physical GC의 의미를 분리합니다.
F4명시적 권한 위임
signed URL은 object·method·만료가 제한된 bearer credential입니다.
02 · HIGH-LEVEL DESIGN
metadata publish와 durable data plane을 나눈다
# 아키텍처
upload가 성공했다는 것은 data shards가 존재한다는 뜻만이 아니라, 검증된 manifest가 현재 object version으로 publish되었다는 뜻이어야 합니다.
multipart ingest → placement → version publish → repair / lifecycle SVG DIAGRAM · 정책·수치는 설계 예시
정합성 경계: disk 또는 shard write의 ACK는 object publish가 아닙니다. client가 읽을 수 있는 version은 root checksum·part 순서·조건부 head mutation까지 끝난 metadata 결과이며, 실패한 staging 바이트는 TTL sweep 대상입니다.
03 · REQUEST FLOW
재개 가능한 parts를 검증한 뒤 version을 전진한다
# 요청 흐름
01Session
quota·policy를 확인하고 upload ID와 part size를 발급합니다.
02Ingest
각 range와 per-part hash를 검증하고 받은 part inventory를 저장합니다.
논리 바이트 외에 physical overhead, versions, abandoned parts, request, retrieval, egress와 repair traffic을 합산합니다.
bytes × overhead × retention
면접 모드 · 추가 질문06:00
“12+4 EC cold tier에서 한 zone의 여러 shard가 느려져 reconstruction queue가 폭증했습니다. GET p99를 지키면서 어떤 객체를 먼저 repair하고, replica promotion·rate limit·capacity 경보를 어떻게 적용하시겠습니까?”
bucket·key·version의 metadata plane과 immutable segment의 data plane을 분리한다.
multipart part는 staging에 쓰고 전체 checksum·정책 검증 뒤 manifest를 원자 publish한다.
complete 재시도는 idempotency key로 같은 version을 반환하며 다른 payload는 conflict로 격리한다.
hot replica와 cold EC는 failure domain·repair bandwidth·용량 여유를 포함해 선택한다.
delete marker·retention·physical GC와 checksum scrub·repair를 서로 다른 완료 상태로 추적한다. 이번 선택: 불변 data segment와 강한 metadata manifest를 결합해 부분 객체가 namespace에 나타나지 않게 한다. 깨지는 신호: head가 존재하지 않는 segment를 가리키거나 complete 재시도가 새 version을 만든다. 다음 검증: 응답 유실·part 중복·metadata failover·EC repair 폭주를 주입해 publish 원자성과 GET p99를 함께 측정한다.
INTERVIEW ↔ PRACTICE · 면접과 실무의 차이
multipart publish를 설명하고 orphan·repair·GC를 운영하기
INTERVIEW · 면접
part ACK와 visible object publish가 다른 성공이라고 답합니다.
received-parts·checksum·root manifest 검증을 설명합니다.
conditional head CAS와 idempotent complete를 말합니다.
replica·EC·delete marker·retention 경계를 답합니다.
PRACTICE · 실무
응답 유실과 metadata failover에서도 한 version만 공개되는지 확인합니다.
head-to-segment 참조와 checksum error를 관측합니다.
staging orphan이 grace 뒤 안전하게 수거되는지 검사합니다.
repair queue가 GET p99와 failure-domain 여유를 침범하지 않는지 검증합니다.