AWS HTTP 프로토콜과 연동되는 스토리지 S3

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

S3Simple Storage Service는 인터넷 스토리지 서비스입니다. 용량에 관계 없이 파일을 저장할 수 있고 웹(HTTP 프로토콜)에서 파일에 접근할 수 있습니다.

프리 티어에서 사용 가능
S3는 프리 티어에서 무료로 사용할 수 있습니다. 2014년 8월 기준으로 표준 스토리지 5GB, 매달 Get 요청 20,000건, Put 요청 2,000건을 무료로 사용할 수 있습니다.


그림 11-1 S3과 HTTP 프로토콜

S3을 써야 하는 이유는 성능과 비용에 있습니다. 대용량의 파일 저장을 EC2와 EBS를 통해 구축한다면 상당히 많은 비용이 들고, 노력이 요구됩니다. 하지만 S3는 저장 용량이 무한대이고 파일 저장에 최적화 되어 있기 때문에 용량을 추가하거나 성능을 높이는 작업을 하지 않아도 됩니다. 비용 또한, EC2와 EBS로 구축하는 것보다 훨씬 저렴합니다.

또한, EC2와 EBS로 정적 웹 서비스(HTML과 JavaScript로만 구성된 웹사이트)를 구축한다면 일일이 EC2와 EBS를 생성하여 높은 요금을 낼 필요 없이 S3에서 바로 정적 웹 서비스(정적 웹 호스팅)를 사용하면 됩니다. S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때처럼 자동 횡적 확장Auto Scaling이나 부하 분산Load Balancing에 신경 쓰지 않아도 됩니다.

동적 웹 페이지(ASP, JSP, PHP, Ruby on Rails 등)와 정적 웹 페이지가 섞여 있다면 동적 웹 페이지만 EC2에서 서비스하고 정적 웹 페이지는 S3을 이용하면 성능도 높일 수 있고 비용도 절감할 수 있습니다.

S3은 요즘 흔히 볼 수 있는 웹하드 서비스와 비슷하다고 볼 수 있습니다. 하지만 웹하드 서비스와 S3은 큰 차이점이 있습니다. 웹하드 서비스는 별도의 클라이언트를 설치하거나 ActiveX를 통하여 파일을 업로드/다운로드해야 하지만 S3은 파일 업로드/다운로드를 모두 HTTP 프로토콜로 처리합니다. 따라서 별도의 클라이언트나 ActiveX 설치 없이 웹 브라우저에서 바로 사용할 수 있습니다. 또한, 앞서 설명한 것처럼 S3 자체로 정적 웹 서비스가 가능한 것도 큰 특징입니다.

다음은 S3 기본 개념입니다.

  • 객체(Object): S3에 데이터가 저장되는 최소 단위입니다. 이 객체는 파일과 메타데이터로 구성됩니다.
  • 기본적으로 키(Key)가 객체의 이름이며 값(Value)이 객체의 데이터 입니다.
  • 객체 하나의 크기는 1바이트부터 5테라바이트(TB)까지입니다.
  • 메타데이터는 HTTP Content-Type 형식(MIME) 입니다. 파일의 확장자에 따라 자동으로 설정되며 임의로 설정할 수도 있습니다. 키-값(Key-Value) 형식이며 S3 전용 메타데이터 및 사용자 정의 메타데이터도 저장됩니다.
  • 버킷(bucket): S3에서 생성할 수 있는 최상위 폴더(디렉터리)입니다. 버킷은 리전별로 생성해야 합니다. 단 버킷의 이름은 모든 S3 리전 중에서 유일해야 합니다. 계정 별로 100개까지 생성할 수 있습니다
  • 버킷 안에 객체가 저장됩니다.
  • 폴더(디렉터리) 생성 가능이 가능합니다(실제로는 객체 이름이 디렉터리 경로까지 포함하고 있습니다).
  • 저장 가능한 객체의 개수는 무제한입니다.
  • 저장 가능한 용량은 무제한입니다.
  • 접속 제어 및 권한 관리가 가능합니다.
  • http://examplebucket.s3.amazonaws.com/helloworld.jpg 처럼 URL로 접근이 가능합니다. 여기서 examplebucket은 버킷, helloworld.jpg은 객체입니다.
  • 내구성과 가용성: 1년 기준으로 99.999999999% 내구성, 99.99% 가용성을 가지고 있습니다. 내구성은 데이터가 유실되지 않는 것을 뜻하며 가용성은 언제나 정상적으로 사용 가능한 상태를 말합니다.
  • 요금: 저장 용량과 데이터 전송량, HTTP 요청(Request) 개수로 책정됩니다. 자세한 요금은 AWS 사이트의 요금표(http://aws.amazon.com/ko/s3/pricing/)를 참조하기 바랍니다.

S3에는 내구성이 다른 두 가지 스토리지 옵션이 있습니다. 이 옵션은 객체(디렉터리)별로 설정할 수 있습니다.

  • 표준 스토리지(Standard Storage): 일반적인 스토리지 옵션입니다. 99.999999999% 내구성을 가지고 있지만 AWS 내부적으로도 이런 높은 내구성을 유지하려면 그만큼 비용이 많이 들게 되고 요금도 높아집니다. 따라서 유실이 되면 안 되는 중요한 데이터 저장에 권장합니다.
  • 낮은 중복 스토리지(RRS, Reduced Redundancy Storage): 표준 스토리지보다는 낮은 99.99%의 내구성을 가지고 있습니다. 이름 그대로 데이터를 복제한 사본의 수를 줄여 비용을 낮추었기 때문에 요금이 저렴합니다. 2014년 8월 기준으로 표준 스토리지 대비 약 20% 가량 저렴합니다. 원본 데이터를 다른 곳에 가지고 있거나, 동영상이나 이미지의 썸네일 등 원본에서 다시 생성할 수 있는 데이터 저장에 적합합니다.

스토리지 옵션에 따른 자세한 요금은 AWS 사이트의 요금표를 참조하기 바랍니다. 이번에는 S3 버킷을 생성하고 세부 설정을 하는 방법과 S3을 정적 웹 서버로 사용하는 방법에 대해 알아보겠습니다.

Amazon S3 FAQ 낮은 중복 스토리지(RRS)
http://aws.amazon.com/ko/s3/faqs/#rrs_anchor


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.