주요 개념
객체
Object Storage에서 모든 파일은 객체의 형태(Key-Value 구조)로 저장되며, 버킷(Bucket)이라는 객체를 담을 수 있는 컨테이너에 포함됩니다. 파일은 객체의 하위 개념으로 객체의 형태 구조에서 Value에 해당하며, 파일을 인식할 수 있는 고유 식별자인 Key를 통해 접근할 수 있습니다.
객체의 키
객체의 키(Key)는 객체 고유의 식별자로, 버킷의 파일 위치로 표현됩니다. 예를 들어, 버킷의 kakao 폴더 하위에 위치한 i 폴더에 'cloud.png'라는 파일이 위치한다면, 객체의 키는 kakao/i/cloud.png와 같이 표현됩니다. 객체의 키는 디렉터리 계층 구조를 표현하는 /
를 포함하여 432 bytes를 초과할 수 없습니다. 파일 업로드, 파일 이름 변경, 파일 이동 등 키(경로)가 변경되는 요청은 이와 같은 제약으로 실패할 수 있습니다.
Object Storage에서 실제 데이터의 저장 및 조회는 폴더 기반 디렉터리 계층 구조가 아닌 평면 구조로 작동합니다. /
로 구분하여 디렉터리 계층 구조를 나타낸 것은 사용자 편의 기능으로, 실제로는 계층과 관계없이 키에 대해 데이터가 맵핑되는 구조입니다.
객체 URL
버킷에 업로드된 파일(Value)에 접근하기 위해서는 객체 키 기반의 URL을 사용해야 합니다.
URL 구조는 https://objectstorage.{region-name}.kakaocloud.com/v1/{project-ID}/{bucket-name}/{object-key}
입니다. 파일별 URL 정보는 버킷 상세 페이지에서 확인할 수 있습니다. 자세한 설명은 객체 상세 화면을 참고하시기 바랍니다.
URL 구조
구분 | 설명 |
---|---|
region-name | 배포된 리전 이름 |
project-ID | 배포된 프로젝트의 ID |
bucket-name | 생성한 버킷의 이름 |
object-key | 업로드한 객체의 키 |
콘솔 기반 파일 관리
콘솔(웹 브라우저)에서 버킷 내 파일을 관리할 수 있습니다. 자세한 설명은 객체 관리 문서를 참고하시기 바랍니다.
메타 데이터
객체를 설명하는 메타 데이터를 설정할 수 있습니다. 메타 데이터는 객체에 대한 정보를 Object Storage 시스템에 전달하는 목적의 시스템 메타 데이터와 사용자가 임의로 등록할 수 있는 사용자 메타 데이터로 구분됩니다. 자세한 설명은 메타 데이터 설정을 참고하시기 바랍니다.
객체 태그
태그를 지정하여 객체를 분류할 수 있습니다. 객체 키(Key)와 키(Key)에 대한 값(Value)으로 구분되며 키(key)-값(value) 페어입니다. LifeCycle 규칙에 객체 태그를 이용하여 객체의 수명 주기를 관리할 수 있습니다. 자세한 설명은 객체 태그 설정을 참고하시기 바랍니다.
버킷
버킷은 객체를 담은 컨테이너로, 객체에 대한 접근 권한 및 라이프 사이클 설정의 적용 단위로 사용됩니다. 버킷 생성 및 관리에 대한 자세한 설명은 버킷 생성 및 관리를 참고하시기 바랍니다.
버킷 타입
Object Storage의 버킷은 Hot 버킷(kr-central-1)과 Standard 버킷(kr-central-2) 두 가지 타입을 제공하고 있으며, Cold 버킷(kr-central-1)을 지원할 예정입니다.
Hot 버킷은 읽기 요청이 많은 데이터를 저장하기에 적합하고 Standard 버킷은 높은 내구성과 가용성을 갖추어 자주 접근하는 데이터를 저장하기에 적합합니다. Cold 버킷은 잦은 접근이 불필요한 데이터를 합리적인 비용으로 저장하는 데 적합합니다.
라이프 사이클
버킷 라이프 사이클 정책에 따라 일정 시간이 지나면 버킷 내 파일을 자동 삭제하거나 다른 타입의 버킷으로 이동시킬 수 있습니다. 다른 타입으로 파일 이동 기능은 추후 업데이트 예정입니다. 라이프 사이클을 설정하는 방법은 Life Cycle 설정을 참고하시기 바랍니다.
버킷 공개 설정
버킷에 대해 퍼블릭 액세스를 설정하여 불특정 다수의 해당 버킷에 대한 외부 접근을 허용할 수 있습니 다. 퍼블릭 액세스 설정 시, 공개된 버킷은 읽기 전용(Read Only)으로만 제공됩니다. 자세한 설명은 버킷 권한 관리를 참고하시기 바랍니다.
파일 업로드 및 수정 등의 관리는 콘솔 또는 API를 통해서만 가능합니다.
안정성과 확장성
Object Storage에서는 버킷 용량과 객체 수에 제한이 없기 때문에, 데이터를 서로 다른 하드웨어에 분산하거나 중복으로 저장하여 안정성을 보장합니다. 또한 Object Storage는 계층화된 디렉터리 구조를 갖는 블록 스토리지(Block Storage)와 달리 Key-Value 형태의 평면 구조로 데이터를 저장해 확장이 용이합니다.
다른 설정을 하지 않아도 파일을 제한 없이 추가할 수 있으므로, 사용자는 스토리지 용량에 대한 고려 없이 서비스에 집중할 수 있습니다. 모든 데이터를 계층 구조 없이 평면에 저장하기에 계층 구조에 따른 속도 지연이 발생하지 않고, 버킷 내 파일 개수와 관계없이 빠른 접근을 보장합니다.
권한 관리
현재 일시적으로 IAM의 권한 체계와 Object Storage 권한 체계가 다르게 적용됩니다.
IAM 프로젝트 각 역할은 아래와 같은 Object Storage 역할을 부여 받습니다.
IAM 역할 | Object Storage 역할 |
---|---|
프로젝트 관리자 | 스토리지 관리자(storage.admin) |
프로젝트 멤버 | 스토리지 편집자(storage.editor) |
프로젝트 리더 | 스토리지 뷰어(storage.viewer) |
권한 설정 아키텍처
- kr-central-1
- kr-central-2
권한 범위 | 역할(Role) | 권한(Permissions) |
---|---|---|
버킷 | 스토리지 관리자 (storage.admin) | 버킷과 객체를 관리할 수 있는 전체 권한을 부여 - storage.buckets.delete - storage.buckets.get - storage.buckets.update - storage.buckets.getIamPolicy - storage.buckets.setIamPolicy - storage.objects.create - storage.objects.delete - storage.objects.list - storage.objects.get - storage.objects.update |
스토리지 편집자 (storage.editor) |