Amazon S3(Simple Storage Service)파일을 저장하기 위한 스토리지로, REST API 를 인터페이스로 제공되는 File System 이라고 할 수 있다.

마치 Dictionary 혹은 Hash Table 자료구조 처럼 Key 를 갖고 있으며 해당 Key 에 대한 파일을 Object 형태로 제공하는 구조로 되어있다.

이런 형태의 Object storage는 파일 1개당 1byte부터 5TB 까지의 용량의 저장이 가능하다

Directory와 유사한 개념으로 Bucket이라는 개념을 갖으며 S3에 대한 데이터 신뢰도는 3Copy 사용시 99.99%를 보장한다.


 앞서 언급한대로 S3 에 접근하기 위한 인터페이스로는 File IO가 아닌 REST/HTTP 프로토콜을 지원한다.

즉, 웹사이트에 접근하듯 HTTP url 로 원격저장소의 파일에 접근할 수 있다. 예를 들어 다음 주소를 봐보자.


http://mybucket.s3.amazonaws.com/photos/garden.jpg


위와 같은 주소에서 mybucket은 버킷 이름을, photos/gargen.jpg는 해당 사진 파일에 대한 Key를 의미한다.

얼핏보면 흔한 홈페이지의 주소로 보이지만, 위의 주소는 S3 저장소에 저장되어 있는 사진 저장소의 garden.jpg 파일을 나타낸다. 즉, 해당 주소로 접근함으로써 우리는 garden.jpg 파일을 다운로드받을 수 있다. 마치 "내문서" 의 garden.jpg 처럼 말이다! 

접근할 수 있는 형태로 AWS는 2가지 방식을 지원한다.

 

- 경로 방식

 http://s3.amazonaws.com/버킷이름/키이름


- 가상 호스팅 방식

 http://버킷명.s3.amazonaws.com/키이름

> 여기서 Region이 설정되어 있다면 s3 s3-regioncode 와 같이 바꿔주면된다. 예를들어 서부 유럽의 경우 s3-eu-west-1이 된다.



그 외에도 S3 는 파일시스템 이상으로 제공하는 부가기능으로써 다음과 같은 특징을 갖는다.


(1) Retaining (저장 기간이 지나면 자동으로 삭제), Versioning (파일에 대한 버전 관리), Encryption (Http/Server/Client 단의 암호화) 등과 같은 파일시스템 관리 서비스를 제공한다.


(2) S3는 데이터의 Prefix를 이용해 Partitioning을 수행하는데 이를 통해서 파일을 분산 저장한다. 이는 파티션 당 물리적인 IO를 줄임으로써 성능의 향상을 가져온다.


(3) S3 Multipart uploading Singlepart uploading 방식을 모두 지원한다.

여기서 싱글파트 업로드 방식은 클라이언트가 서버로 하나의 파이프를 통해 파일을 전송하는 방식이고멀티파트 업로드 방식은 클라이언트 서버 간의 여러 개의 파이프로 파일을 블록 단위로 쪼개서 전송하는 방식이다

멀티파트로 전송하게 되면 성능이 향상되고 블록 전송 실패시 해당 블럭만 재전송함으로써 에러 처리에도 뛰어남과 효율성을 보인다.


(4) S3 는 EC2 Repository 에 대한 Access 를 제공하는 서비스이기도 하다. EC2 또는 웹의 어디에서나 Data를 저장하고 관리할 수 있도록 지원하고, 웹 규모의 컴퓨팅 작업을 수행할 수 있도록 설계되어 있다.

또한 EC2 AMI(Amazon Machine Image) 저장을 위해 S3가 사용되며 AMI를 통한 인스턴스 실행저장 및 복구 등 비즈니스 지속성을 달성 가능하다. EC2는 스냅샷(백업 사본역시 S3를 사용해서 저장하고 관리 및 확장한다.


(5) S3는 정적 저장소이기 때문에 설계 시에 Application 이 사용하는 Region 과 Bucket Region 은 같게 맞춰주는 것이 성능 측면에서 좋다.

 

S3를 이용하여 App 설계 시 고려 사항에 대해 Amazon 3가지 정도로 제시한다.


(1)  Internal Errors 에 대한 재시도

Internal Error 가 발생했다면 이것은 Amazon S3 환경 내 오류로 요청을 재시도 할 것을 권고한다.


(2)  Slowdown 오류에 대한 어플리케이션 튜닝

Slowdown 은 리소스 초과에 대한 보호 매커니즘이 자주 요청될 때 발생하는 현상으로 요청 빈도를 줄이면 오류가 사라진다.


(3)  오류 격리

HTTP 오류코드보다 Amazon S3 오류코드가 많은 정보를 내포하므로 격리해서 이 오류 로그를 활용한다.


+ Recent posts