Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

체대출신 코더의 개발자 성장기

배포 - AWS S3(Simple Storage Service) 본문

카테고리 없음

배포 - AWS S3(Simple Storage Service)

미토콘크리트 2019. 6. 28. 16:00

1. S3란 무엇일까?

Simple Storage Service 즉, 간단하게 데이터를 저장할 수 있도록 도와주는 서비스이다.

S3를 이용해 데이터를 저장, 검색, 수정도 가능하다고 하는데 

어떻게 이것이 가능한 것 일까?

 

2. S3의 구성

2-1) 데이터의 바구니 '버킷'

버킷

'버킷'은 데이터가 저장되는 공간이다.

모든 '버킷'이 이름이 똑같다면, 구분이 힘들기 때문에 파란바구니, 빨간바구니 처럼 '고유의 이름'을 정할 수 있는 기능이 있다.

또한 이 안의 정보를 아무나 볼 수 없도록 '권한'을 설정 할 수가 있다. 

'버킷'은 맘대로 삭제하고 생성 할 수 도 있는데, 주의 할 점 은 삭제 후 같은 버킷을 재생성 하기 위해서는 매우 까다로운 과정을 거쳐야한다.

예를 들어, 기존에 사용하고 있던 빨간바구니를 버렸는데, 다시 사용하기 위해서는 마트에 가서 같은 제품을 사와야하는 번거로운 과정이 있다고 보면 된다.

따라서, '버킷'을 삭제할 때 는 '버킷' 자체를 삭제하기 보다는, 내부의 데이터를 다 지우고 기존의 '버킷'을 새 '버킷'을 사용하는 것 처럼 사용하는 것이 권장된다.

AWS는 매우 큰 용량의 바구니들을 제공한다. 하나의 바구니 안에는 무한에 가까운 정보들을 넣을 수 있다.. 

 

 2-2) 버킷에 담기는 데이터 '객체'

바구니에 담기는 데이터는 객체안에 담긴다. 즉 키 : value 페어의 형태로 담긴다!

매우 큰 AWS의 버킷 용량 답게, 하나의 객체안에 최대 5TB의 용량의 데이터가 저장이 가능하다. (돈을 더 내면 한 객체 안에 더더더더 많은 데이터를 저장할 수 있다!!)

그럼 왜 객체를 사용했을까? 라고 의문을 가질 수 있다.

 

자바 스크립트에서 객체는 주소값을 '참조'하여 사용한다. 

즉, 다른곳에서 원본을 사용하지 않고 원본의 '복사본'을 사용한다는 뜻이다.

S3에서 객체를 사용하는 것도 비슷한 이유로, 원본의 손상을 막기 위해서 이다.

아무리 관리 잘한 문서들도, 사람들의 손이 닿기 시작하면 변질되는 것 처럼 데이터들도 많은 접근이 있거나, 변동이 있다면 언젠가는 닳기 마련일 것이다.

하지만 복사본을 준다면, 원본의 내용을 그대로 볼 수도 있으면서 원본의 손상은 최대한으로 줄일 수 있을 것이다.

 

원본데이터의 생성 및 삭제만 지원하고 수정하는 기능은 지원하지 않는데, 수정하는 것과 비슷한 기능으로는 '덮어쓰기'가 있다.

이 덮어쓰기는 원본을 다른 원본으로 바꾸는 작업이기 때문에, 빠르지는 않다고 한다. 이점 주의 할 것!

 

또한 HTTP요청이나 데이터의 접근, 생성 등의 정보를 지닌 객체또한 존재 한다고 한다. 이를 이용해 버전관리가 용이하다.

 

3. 어떻게 사용하나요?

만약 '김태훈'이라는 이름의 s3 '버킷'에 '몸무게'라는 데이터를 가지고 오고싶다면 

김태훈.s3.amazonaws.com/몸무게  이런 식으로 버킷과 데이터 사이의 구분을 / 를 이용해 구분지어준다.

이걸 보내야하는데, s3는 https방식을 이용해 요청을 보내며, REST API를 이용한다.

 

따라서, '김태훈'이라는 이름의 s3 '버킷'에 '몸무게'라는 데이터를 가지고 오고싶다면 

https://김태훈.s3.amazonaws.com/몸무게 를 GET요청을 보내면 아마존에서 데이터를 보내준다.

 

4. 중요한 데이터가 있는데 이건 공개하고 싶지 않아요!

이런 경우에는 s3에서 정해놓은 다양한 '저장 클래스'를 이용하면 되는데

우리가 일반적으로 파일에도 접근 권한을 설정 해 놓는 것 처럼, 저장클래스를 다르게 설정하면 일정 비용을 내고 높은권한으로 데이터를 저장하는 것이 가능하다. 

이것은 버킷단위로 설정할 수도 있고, 객체 혹은 데이터로도 설정이 가능하다. 

STANDARD

자주 액세스하는 데이터

99.999999999%

99.99%

>= 3

없음

없음

없음

STANDARD_IA

수명이 길고 자주 액세스하지 않는 데이터

99.999999999%

99.9%

>= 3

30일

128KB

GB당 검색 요금이 적용됩니다.

INTELLIGENT_TIERING

변경 또는 알 수 없는 액세스 패턴으로 수명이 긴 데이터

99.999999999%

99.9%

>= 3

30일

없음

객체당 모니터링 및 자동화 비용이 적용됩니다. 검색 요금이 없습니다.

ONEZONE_IA

수명이 긴 데이터에 자주 액세스하지 않는 중요하지 않은 데이터

99.999999999%

99.5%

1

30일

128KB

GB당 검색 요금이 적용됩니다. 가용 영역의 손실에 대한 복원력이 없습니다.

GLACIER

분에서 시간 단위로 검색 시간을 지원하는 장기간 데이터 보관 99.999999999%

99.99%(객체 복원 후)

>= 3

90일

없음

GB당 검색 요금이 적용됩니다. 이 객체에 액세스하려면 먼저 보관된 객체를 복원해야 합니다. 자세한 내용은 보관된 객체의 복원 단원을 참조하십시오.

DEEP_ARCHIVE

12시간의 기본 검색 시간으로 거의 액세스하지 않는 데이터 아카이빙 99.999999999%

99.99%(객체 복원 후)

>= 3

180일

없음

GB당 검색 요금이 적용됩니다. 이 객체에 액세스하려면 먼저 보관된 객체를 복원해야 합니다. 자세한 내용은 보관된 객체의 복원 단원을 참조하십시오.

RRS(권장되지 않음)

자주 액세스하는 중요하지 않은 데이터

99.99%

99.99%

>= 3

없음

없음

없음

 

Comments