블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 

'Object Storage'에 해당되는 글 2

  1. 2013.01.25 간단한 S3 Performance Test (3)
  2. 2012.12.06 Amazon S3 서비스 소개
 

스크립트


from boto.s3.connection import S3Connection

from boto.s3.key import Key

import time


startime=time.time()


conn = S3Connection(XXX','XXX')


bucket = conn.create_bucket('terry-s3-performance-test')

for i in range(1,100):

k = Key(bucket)

k.key = "logfile%s" % i

k.set_contents_from_filename('logfile origin')

conn.close()

endtime = time.time()


print 'Elaped time %s'% (endtime-startime)

 


위의 스크립트를 멀티프로세스로 돌려서 테스트 해본 결과

16K 파일 기준으로 (클라이언트는 같은 region에 ec2에서 수행), 클라이언트당 15TPS 정도가 나옴. 클라이언트(프로세스)수를 늘려도, 개당 15TPS가 일정하게 유지됨. 아마도 QoS를 보장하는 기능이 있는듯함


본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요

  1. eliot 2013.03.18 09:48  댓글주소  수정/삭제  댓글쓰기

    위 Python 스크립트 관련해서 질문 드립니다~
    S3에 자동 업로드 하려고 스크립트를 짜고 있는데요.(region은 미국)
    1. 웹에서 업로드하는 속도와 위 스크립트로 업로드하는 속도가 굉자히 차이가 많이 나던데 그 이유가 위에서 말씀하신 QoS랑 연관이 있는걸까요?
    2. 전 유독 미국 지역에 업로드하는건 이상이 없는데 다른 지역은 계속 S3ResponseError : 404 Not Found가 뜨더라구요. 혹시 이런 현상 겪으신적 있으 신가요?
    3. 혹시 사용중이신 Python 버전과 boto 버전이 얼마인지 알 수 있을 까요?
    감사합니다 ^^

    • 조대협 2013.03.18 10:00 신고  댓글주소  수정/삭제

      1. 이론적으로는 차이가 없어야 하는데, 잘 모르겠네요. 저는 테스트시에만 콘솔로 잠깐 올리고, 대부분 boto로 바로 쏩니다.
      2. S3 bucket은 각 region 마다 호환이 안됩니다. 즉 미국에 만드셨으면, 미국 S3로 업로드 하셔야 합니다.
      3. Python 2.7, boto 는 python 2.7에 맞는 버전을 사용합니다.

  2. eliot 2013.03.18 14:41  댓글주소  수정/삭제  댓글쓰기

    음 그렇군요. 답변 감사합니다. ^^
    2번 질문에서요. bucket을 각 region 마다 일단 생성을 하고 각 region 마다 upload test를 했습니다. 근데 특정 region에만 실패를 하더라구요.
    혹시 이런 문제도 겪으신적 있으신가요?

AWS S3 (Simple Stoage Service)는 파일을 저장하기 위한 스토리지이다. 일반적인 파일시스템의 개념과는 약간 다르고, 파일 이름을 대표하는 key와 파일 자체로 구분되는 Object Storage이다.

저장할 수 있는 파일의 크기는 개당 1byte~5TB이고, 총 저장 용량에는 제한이 없다. 디렉토리와 비슷한 개념으로, bucket이라는 개념을 가지고 있다.

S3에 접근하기 위해서는 일반적은 file io api등은 사용할 수 없으며, REST/HTTP 기반의 프로토콜만 지원한다. 그래서, 성능이 다른 파일 시스템에 비해서 느리다.

기본적으로 3 copy를 지원하여, 데이타를 복제하고, 이 복제는 Amazon availability zone (AZ) 단위로 복제가 되기 때문에 데이타 센터 장애에 대한 대응성을 가지고 있다. 단 region 간 복제는 지원하지 않는다. 복제에 관련된 옵션으로는 RRS (Reduced Redundancy Storage)라는 것이 있는데, 이 옵션을 적용하면, 2 copy (원본 + 백업)만을 저장하기 때문에, 가격이 훨씬 더 저렴하다.

3 copy를 저장할 경우, S3에 대한 데이타 신뢰도는 99.999999999% 를 보장하고, 서비스에 대한 가용성은 99.99%를 보장한다.

다른 주목할만한 기능 은 retain 기간을 지정할 수 있다. 즉 파일의 저장 기간을 지정할 수 있고, 그 기간이 지나면 자동으로 삭제가 된다.

또한 파일에 대한 versioning 기능을 가지고 있어서, 잘못되었을 경우, 기존의 파일 내용으로 roll back이 가능하다. S3 서비스는 AWS 내에서 대용량 데이타를 저장하기 가장 알맞은 저장소이다. 그래서 다른 AWS의 서비스 (EMR 나 CloudFront, Glacier 등)에 자연스럽게 연동될 수 있는 기능을 제공하며, 다른 서비스들과 상호보완적인 관계를 갖는다. 예를 들어 SQS와 같은 큐 서비스에는 큰 객체(파일)을 저장할 수 없기 때문에 이벤트 메세지는 SQS에 저장하고, 실제 큰 파일은 S3에 저장해서 레퍼런스를 하던가, Dynamo와 같은 NoSQL DB도 레코드당 데이타 한계로 인해서, 메타 데이타는 Dynamo에 저장하고, 파일과 같은 큰 바이너리 데이타는 S3에 저장하고 레퍼런스를 하게 할 수 있다.

매우 간단한 서비스이기는 하지만, 데이타 손실 가능성이 적고, 사용이 간략하며, 다른 서비스와 연계성이 높기 때문에, 필히 익혀둬야 하는 서비스이다.

본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요