WiseN

[Re18특집] 새로운 S3 Storage Class - Intelligent Tiering 출시

Dec 18,2018   |   AWS

작성자_최준승

페이스북 공유하기 트위터 공유하기
Blog thumbnail

여기서 다루는 내용



· 들어가며
· S3 Storage Class 최적화 이슈
· 새로운 Storage Class - Intelligent Tiering
· 정리







Intro






안녕하십니까, GS네오텍 최준승입니다.

리인벤트 2018 특집글을 연재하고 있습니다.

이번 주제는 새로 발표된 S3 Storage Class - Intelligent-Tiering 입니다.

주절주절 설명이 시작되기 전에. 결론부터 알고 싶으시다면 아래 그림을 보시죠.


※ S3 Storage Class 선택지에 새로운 뭔가가 하나 추가된게 보이시나요?





적합한 S3 Storage Class를 선택하려면?






여러분도 잘 아시다시피. S3 버킷(Bucket)은 객체(Object)를 담는 하나의 바구니고.
이 바구니 단위로 여러가지 옵션을 일괄적으로 설정할 수 있습니다.
Website Hosting이나 Replication, Bucket Policy, Lifecycle, Versioning 등 많은 선택지가 있지요.

그리고 이 바구니 안에 쏘옥 들어가는 "Object의 Storage Class"는 어디까지나 Object 단위의 문제입니다.

A라는 객체는 STANDARD로. B라는 객체는 STANDARD-IA로. C라는 객체는 One Zone-IA로.
원하는 복제 수준/범위와 가용성에 따라 적합한 Storage Class를 지정해서 업로드하거나 기존 속성을 변경하면 되지요.

근데 귀찮게 왜요?
좋은 클라스는 비싸고 좀 덜 좋은 클라스는 싸니까요.
다시 말해 용도에 적합하도록 Class 신경을 좀만 써주면. "비용-효율적"이 되기 때문입니다.

하지만 여기서 한번 더 생각해야 하는 부분은
여기서 "신경을 좀만 써주면"이라고 불리우는 영역에도 돈이 든다면 어떨까요?

S3 객체에 접근하는 패턴이. Hot인지 Cold인지 구분하는 패턴이.
단순히 "최근 OO일 내에 생성된 객체"처럼 고정되어 있다면. Lifecycle이나 쓰면 되겠지만.
그게 아니라면? 엑세스 패턴이 들쭉날쭉 하다면? 예측이 불가능하다면?

이런 분들을 위해 나온 기능이 오늘 소개드릴 "Intellient-Tiering Class" 입니다.
물론 신경은 AWS가 대신 써주니까. 신경써주는 비용을 사용자에게 약간 부과한다는 점은 유의하셔야 합니다.





새로운 스토리지 클래스 - Intelligent-Tiering Class






Intelligent Tiering Class는 다음과 같이 동작합니다.


  • 사용자는 해당 객체의 Storage Class를 Intelligent-Tiering으로 지정

  • 분류 규칙(Access 여부)에 따라 내부적으로 STANDARD와 STANDARD-IA Class 間 자동 스위칭

  • 내부적으로 존재했던 "Class - 시간" 단위로 기존 단가(STANDARD, STANDARD-IA)와 동일하게 과금




※ 그림으로 설명하면 이렇습니다

단, 여기서 S3 Select로 쿼리한 대상은 Access로 산정하지 않습니다. 즉. 변경이 발생하지 않습니다.
반면 Athena나 Redshift Spectrum에서 발생한 Access는 접근으로 인정해서 변경이 발생합니다.

또한 이 객체는 내부적으로 STANDARD와 STANDARD-IA를 오가야 하기 때문에.
각 Class가 갖고 있는 제약사항을 모두 갖고 있습니다. 특히 STANDARD-IA. 예를 들면.


  • 128KB 미만의 객체는 STANDARD-IA에 부적합하므로, STANDARD로 (유지되고) 과금

  • 생성 후 30일 전에 삭제되는 객체는 30일분 요금이 부과



과금은 크게 2가지 요소가 있습니다.


  • 내부적으로 지정된 각 Class별 시간 과금 - 기존과 동일 방식으로 부과

  • + 분류 수고비. Monitoring and Automation 과금. $0.0025/1000 objects



객체수 단위로 분류비용이 추가 과금되는 것만 주지하시면 되겠죠.

환산해보면 객체가 100만개일때 분류비용이 3천원 정도니까.
일부가 STANDARD-IA로 빠지면서. 스토리지 단가에서 절감되는 비용에 대비하면 수용할만 하다고 생각합니다.





Outro






내부적으로 보면. 크게 복잡한 로직은 아닙니다만.
제가 보기엔 사용자 입장에서 참 편리한 기능이라고 할 수 있습니다.

AWSCLI나 SDK에서 PutObject/cp를 할때. 스토리지 클래스는 기본값이 STANDARD이기 때문에.
처음부터 이 인텔리전트-티어로 지정해서 이후에는 알아서 스위칭되게 만들어 놓으면. 사용자 입장에서는 편하니까요.

물론 S3의 Lifecycle 기능과 결합해서 사용하는 것도 가능합니다.
1일 지나면 자동으로 이 새로운 Class로 변경하도록 Lifecycle로 설정해 놓으면 초기값 셋팅도 자동화할 수 있겠죠?

그럼 마칩니다.

끝!