0과 1을 공부하다.

[Cloud] Naver Cloud - Object Storage 사용법 및 예제 본문

Study/ETC

[Cloud] Naver Cloud - Object Storage 사용법 및 예제

Developer_Jay 2023. 1. 22. 00:12
728x90

Object Storage 서비스 소개

 

  네이버 클라우드의 Object Storage 서비스는 Object Storage 기반의 스토리지 서비스이다.

  

 아래 네이버 클라우드 Object Storage 서비스 소개 페이지에서 특징을 요약한 내용은 아래 가.특징 과 같다.

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

 

가. 특징

- 네이버 클라우드 플랫폼 '콘솔'을 통해 데이터를 직접 저장하거나 Restful API로 데이터를 저장할 수 있다. 

- Amazon S3와 호환되는 API를 제공하여 S3 상품을 기준하여 작성한 응용프로그램을 그대로 이용할 수 있다.

- 데이터 저장소는 최대 페타바이트(PB) 단위까지 가능하며, 단일 파일 크기는 최대 10테라바이트(10TB)까지 가능하다.

- 객체 / 폴더 / 버킷 단위로 권한을 지정할 수 있다.

 

서비스 소개 페이지에서 요약한 과금은 아래와 나. 과금 과 같다.

 

나. 과금

(1) 데이터 저장량

사용량 구간 과금기준 단위 요금
1PB 이하 월 평균 저장량 GB 28 원
1PB 초과 월 평균 저장량 GB 26 원

 

(2) API 요청 수

구분 과금단위 요금
PUT, COPY, POST 또는 LIST 건당 0.0045 원
GET 및 기타 모든 요청 건당 0.0004 원
DELETE 건당 0 원

ex.) 1개월동안 POST 요청 20,000건, GET 15,000건, DELETE 500건을 수행하였다면 과금은 96원이다. ((20000 X 0.0045) + (15000 X 0.0004) + (500 X 0))

 

(3) 네트워크 전송

구분 과금단위 사용량 구간 요금
인바운드 트래픽 GB 전구간 동일 무료
아웃바운드 트래픽
인터넷을 이용한 트래픽 - (다른 리전으로 공인 IP를 이용한 트래픽 포함)
GB 0GB 초과 5TB 이하 100원
GB 5 TB 초과 ~ 10 TB 이하 90원
GB 10TB 초과 ~ 30TB 이하 80원
GB 30TB 초과 70원

 

 

Storage 구분

 

  데이터 저장소에는 오브젝트 스토리지(Object Storage), 파일 스토리지(File Storage), 블록 스토리지(Block Storage)가 있다. 

 

가. 오브젝트 스토리지(Object Storage)

  오브젝트 스토리지는 '오브젝트'로 불리는 각각의 데이터 단위가 개별 단위로 저장되는 데이터 저장소 유형이다. 이러한 오브젝트는 PDF, 비디오, 오디오, 텍스트, 웹사이트 데이터나 기타 다른 파일 유형 등 사실상 거의 모든 데이터 유형이 될 수 있다.

 모든 오브젝트는 파일 스토리지에서 사용되는 중첩된 계층 구조와 달리 평면 주소 공간에 저장된다. 또한 모든 기본 및 사용자 지정 메타데이터는 고유 식별자가 있는 평면 주소 공간에 별도의 파일 시스템 테이블이나 색인의 일부가 아닌 오브젝트 자체로 저장되므로 색인과 접근이 더 쉬워진다. 클라우드 기반 저장소에서 꽤 일반적이며, 매우 높은 확장성과 신뢰성을 바탕으로 콘텐츠의 관리, 처리 및 배포에 사용할 수 있다. 

 오브젝트 스토리지 방식은 주차에 비유하는 공간 활용을 최대로 활용하는 특성으로 '대리주차' 에 비유한다. 장점으로는 평면구조로 데이터 접근이 빠르고 확장성이 좋다는 점이 있지만 단점으로는 일관성 유지를 위해 파일 수정이 힘들다는 점이 있다. 

 

나. 파일 스토리지(File Storage)

  파일 스토리지는 일반적인 PC에서 사용하는 방식이다. 어떠한 파일이 있다면 계층 형식으로 폴더를 구분하여 파일을 검색하는 방식이다.

 파일 스토리지 방식은 주차에 비유하면 '주차장 건물'에 비유한다. 주차장 건물과 같이 계층형으로 차량(파일)을 쌓아 올리는 형태로 저장되는 구조이다.

 파일 스토리지 방식의 장점은 일반적으로 많이 사용하는 방식으로 사용자 친화적이며 표준화가 발달되어 있지만 단점으로는 파일 계층이 복잡해지고 데이터 양이 많아 질수록 성능이 저하된다는 단점이 있다.

 

다. 블록 스토리지(Block Storage)

  블록 스토리지는 정해진 블록 안에 데이터를 저장하는 방식이다. 각 블록이 서로 다른 고유 주소를 가지며 서로 독립적으로 존재한다. 파일 스토리지와 다르게 계층 구조 없이 각 공간이 서로 다른 주소를 갖고 있어 읽어야 할 경로가 여러개 갖기 때문에 매우 빠르게 데이터를 검색 할 수 있다.

 블록 스토리지 방식을 주차에 비유하면  '주차장'에 비유한다. 주차장에 각 차량을 주차할 수 있는 주차칸이 존재하는 것처럼 정해진 공간에 데이터를 저장하는 구조이다.

 장점으로는 다양한 접근 경로로 신속한 검색이 가능하다는 점과 다른 OS에도 엑세스 가능하다는 점이 있지만 단점으로는 APP 수준에서 대부분 처리해야 함에 따라 고비용 APP을 요구하고 DB 수준의 작업으로 관리자에게 부담이 되는 단점이 존재한다.

 

아래 사진은 각 스토리지의 이해를 돕기 위한 사진이다. 

 

 

용어 정리

 

Object Storage에서 사용하는 각 용어에 대해 간략하게 정리한다.

 

가. Bucket(버킷) 

  • Bucket은 저장된 객체에 대한 컨테이너를 의미함

나. Object(객체)

  • Storage에 저장된 데이터를 의미함.
  • 데이터를 Object Key으로 구분함.
  • Object는 Object Data와 Meta Data로 구성함.
  • Meta Data는 Key:Value 쌍으로 존재함.

다. Object Key(키)

  • Bucket 내 Object의 고유한 식별자이며, Bucket 내 모든 Object는 정확히 하나의 Key를 갖는다.
  • Bucket, Key 및 Version ID의 조합은 각 Object를 고유하게 식별함.

라. Meta Data(메타데이터)

  • 일반적으로 데이터에 관한 구조화된 데이터로, 대량의 정보 가운데에서 확인하고자 하는 정보를 효율적으로 검색하기 위해 원시데이터(Raw data)를 일정한 규칙에 따라 구조화 혹은 표준화한 정보를 의미함.
구분 내용
Accept-Ranges  응답 HTTP 헤더는 부분 요청의 지원을 알리기 위해 서버에 의해 사용되는 표식이다.
ETag 객체의 특정 버전을 나타낸다. 멀티파트 업로드로 업로드되지 않고 암호화되지 않거나 Amazon S3 관리형 키(SSE-S3)를 사용하는 서버 측 암호화를 통해 암호화된 객체의 경우 ETag는 데이터의 MD5 다이제스트이다.
Last-Modified 객체 생성일 또는 최종 수정일 중 최근 날짜를 의미한다.
Content-Length 객체 크기(바이트 단위)를 의미한다.
Content-Type 객체 유형을 의미한다.
x-amz-storage-class 객체 저장에 사용된 스토리지 클래스를 의미한다.
x-amz-meta s3 전용 메타데이터로, 사용자가 meta 이후에 마음대로 이름을 붙여서 사용할 수 있다.

 

 

AWS S3 SDK (Python)

 

  네이버 클라우드 Object Storage에서는 AWS S3에서 제공하는 Python용 SDK를 이용해 데이터를 관리할 수 있다. 

 

Python에서 사용 가능한 AWS SDK는 boto3가 있다. 아래는 boto3 모듈 설치 및 사용 방법에 대한 내용이다.

 

  • 설치
$ pip3 install boto3 # boto3 설치

 

  • 모듈 import
import boto3

 

  • 스토리지 접근 (low-level)
s3 = boto3.client('s3', endpoint_url='서비스 URL', aws_access_key_id='access key', aws_secret_access_key='secret key')

 

  • 버킷 생성
s3.create_bucket(Bucket='버킷이름')

 

  • 버킷 삭제
s3.delete_bucket(Bucket='버킷이름')

 

  • 버킷 목록 조회
s3.list_buckets()

 

  • 파일 업로드
s3.upload_file('업로드할 파일', '버킷이름', '객체이름',ExtraArgs={'Metadata': {'myKey': 'test'}})
s3.put_object(Bucket='버킷이름', Key='객체이름')

 

  • 파일 다운로드
s3.download_file('버킷이름','객체이름','내려받을경로')

 

  • 파일 삭제
s3.delete_object(Bucket='버킷이름', Key='객체이름')

 

  • 파일 목록 조회
s3.list_objects(Bucket='버킷이름', MaxKeys='최대갯수')

 

  • 파일 내용 조회
s3.get_object(Bucket='버킷이름', Key='객체이름')

 

자세한 내용은 아래 boto3 Github와 Document를 참고한다.

 

GitHub - boto/boto3: AWS SDK for Python

AWS SDK for Python. Contribute to boto/boto3 development by creating an account on GitHub.

github.com

 

Available services — Boto3 Docs 1.26.54 documentation

 

boto3.amazonaws.com

 

 

예제 모듈 작성

 

  앞서 AWS S3 SDK (Python)를 바탕으로 Object Storage를 컨트롤하는 모듈을 작성한다. 언어는 python 언어를 사용하고 사용 모듈은 boto3를 이용한다.

 

 boto3를 사용하여 Object Storage를 컨트롤하는 예제는 아래 네이버클라우드 가이드 문서에 정리되어 있다. 해당 내용을 바탕으로 하나의 모듈을 작성한다.

 

Python용 AWS SDK (Boto3)

 

guide.ncloud-docs.com

 

아래 파일은 하나의 모듈로 작성한 코드이다.

ObjectStorage.zip
0.00MB

 

해당 파일 압축을 푼 후 Authentication.py 파일에서 개인 계정의 access key와 secret key를 입력하고 저장한다.

 

ObjectS3.py 파일은 작성한 모듈이다. 별도 파일에서 import하여 사용한다.

 

사용 예제는 __main__.py 파일에 정의하였다.

 

 

참고 사이트

 

[Storage 구분]

 

[용어정리]

 

 

 

 

 

※ 본 게시글의 정보가 잘못 되었거나 부족한 부분에 대한 피드백을 환영합니다.

 

 

* CopyRight 2023. Jay Park All rights reserved.

728x90
Comments