네이버클라우드아카데미 Literacy 1기

[NCloud 1기] Object Storage와 버킷(Bucket)의 개념 완벽 정리

hwangsoojin 2025. 11. 20. 19:59

클라우드 서비스를 처음 접하면 파일을 저장하기 위한 다양한 저장소(Storage) 개념이 등장한다.
그중에서도 Object Storage(오브젝트 스토리지)는 대용량 파일 저장에 최적화된 핵심 서비스인데,

AWS S3부터 Naver Cloud Platform(NCP)까지 거의 모든 클라우드에서 공통된 구조를 사용한다.

 

이번 글에서는 Object Storage의 핵심 구성 요소인 버킷(Bucket) 개념을 중심으로,
왜 버킷이 필요한지, 어떻게 동작하는지 직관적으로 정리해보았다.


1. Object Storage란 무엇인가?

Object Storage는 파일(이미지, 영상, 로그 등)을 ‘오브젝트’ 단위로 저장하는 대용량 저장 공간이다.
전통적인 파일 시스템처럼 디렉터리-파일 구조를 갖고 있는 것처럼 보이지만, 실제 내부 구조는 전혀 다르다.

 

오브젝트는 다음 세 가지로 이루어진다:

  1. 데이터(Data) – 실제 파일의 바이너리 데이터
  2. 메타데이터(Metadata) – 파일 크기, MIME 타입 등의 정보
  3. 오브젝트 키(Object Key) – 오브젝트의 경로를 나타내는  문자열 

예를 들어 다음 경로가 있다면:

original/2025/11/20/d4a1f3-image.jpg

 

이 문자열 전체가 오브젝트 키이며, 실제 파일(데이터)과 메타데이터가 함께 저장된다.

 

✔ 즉, Object Storage는 **파일을 단순히 저장하는 공간을 넘어 “키-값 기반 저장 시스템”**이다.
✔ 이미지 서버, CDN, 백업, 로그 저장 등 다양한 서비스의 기반이 된다.


2. 버킷(Bucket)이란 무엇인가?

Object Storage의 개념을 이해할 때 가장 중요한 키워드가 바로 버킷(Bucket)이다.

 

버킷을 한 문장으로 정의하면:

버킷은 오브젝트들을 저장하는 최상위 컨테이너이자 논리적인 저장 단위이다.

 

쉽게 말하면,
클라우드에서 "파일이 들어가는 가장 큰 폴더"가 바로 버킷이다.

✔ 버킷의 특징

  • 모든 오브젝트(파일)는 반드시 하나의 버킷 속에 저장된다.
  • 버킷 이름은 전 세계적으로 유일(unique) 해야 한다.
  • 버킷마다 별도의 URL·권한·암호화·정책이 설정된다.
  • 버킷 안은 폴더처럼 보이지만 사실은 경로  문자열 을 통한 가상 구조이다.

3. 버킷과 폴더의 관계

Object Storage의 구조는 다음처럼 보이지만:

image-platform-bucket
 └─ original/
      └─ 2025/11/20/
           └─ a8f3c112.jpg

 

여기서 실제로 존재하는 것은 파일(오브젝트)뿐이다.
폴더(original/, 2025/, 11/, 20/)는 “경로 문자열의 일부”일 뿐이다.

 

즉:

  • 버킷 = 저장 공간의 최상위
  • 폴더 = 오브젝트 키를 구분하기 위한 문자열 구조
폴더가 물리적으로 존재하는 것이 아니라,
오브젝트 키를 /로 구분해서 트리처럼 보이게 하는 것뿐이다.

4. 버킷 단위로 제어되는 것들

버킷은 단순한 폴더가 아니라 정책의 단위이기도 하다.

다음 기능들이 버킷 단위로 적용된다:

▪ 버킷 전체 공개 여부

버킷을 공개하면 누구든지 버킷 내 파일 리스트를 조회할 수 있게 된다.
(보안상 "공개 안함"이 권장됨)

▪ 접근 제어(ACL)

파일을 업로드할 때 개별 오브젝트만  public-read  로 만들 수도 있다.

▪ 암호화 설정

버킷에 저장되는 파일을 자동 암호화할지 여부를 결정.

▪ 라이프사이클 정책

예: "30일 뒤 자동 삭제", "Cold Storage로 이동" 같은 규칙 적용.

▪ 버전 관리

같은 파일을 여러 버전으로 관리할 수 있다.

즉, 버킷은 단순히 "파일을 넣는 폴더"가 아니라
보안, 정책, 라이프사이클을 관리하는 저장소 단위이다.


5. 왜 버킷을 프로젝트별로 따로 만들까?

프로젝트를 진행할 때 보통 아래 이유로 버킷을 분리한다:

  • 다른 프로젝트의 파일과 섞이지 않도록
  • 비용을 버킷 단위로 추적하기 쉽도록
  • 보안 정책을 프로젝트별로 다르게 적용하기 위해
  • 이미지 Optimizer·CDN 등과 연동하기 쉽게 하기 위해

예를 들어 이미지 업로드 서비스라면:

image-platform-bucket   ← 이미지 전용 버킷
logs-bucket             ← 로그 저장용 버킷
backup-bucket           ← 백업 전용 버킷

 

이런 식으로 구성한다.


6. 실제로 어떻게 쓰이는가? (간단 예시)

다음과 같은 흐름을 떠올려보자.

1) 사용자가 Web에서 이미지 업로드

2) WAS(Spring Boot)가 Object Storage 버킷에 파일 업로드

3) 업로드된 파일의 URL을 DB 또는 클라이언트에 전달

4) Web 또는 Image Optimizer가 URL로 파일을 바로 사용

 

이 모든 파일 처리의 시작점이 바로 버킷이다.


마무리

Object Storage는 클라우드에서 대용량 데이터를 저장할 때 가장 널리 사용하는 서비스이다.
그리고 그 중심에는 “버킷”이라는 구조가 있다.

 

👉 버킷 = 파일을 저장하는 최상위 단위 = 정책 관리 단위
👉 폴더는 가짜이며, 단순히 키 문자열의 일부일 뿐
👉 버킷의 보안·권한·암호화 정책이 전체 파일 처리 흐름을 좌우

 

이 개념만 정확히 이해하면
이미지 업로드, 백업 시스템, CDN 구축, 로그 저장 등
Object Storage 기반 모든 시스템을 쉽게 설계할 수 있다.