문의 주신 내용에 맞는 전문 컨설턴트 배정 후 연락드리겠습니다.
안녕하십니까, GS네오텍 최준승입니다. 이번 글에서는 S3의 신규 Storage Class를 소개해 드리려고 합니다. S3로 한정하여, 이번 리인벤트 행사에서는 신규 클래스 출시 외에도 몇몇 자잘한 업데이트가 있었는데요. 이 내용들도 큰 그림에서 보면 다 연결되어 있는 것들이기 때문에, 겸사겸사 이번 글에서 한꺼번에 다뤄보려고 합니다.
S3의 Storage Class는 이미 다 아실만한 내용이라 굳이 소개해드릴 필요는 없을것 같습니다. 굉장히 내구성이 좋고 가격이 싼 S3라고 하는 객체 스토리지 서비스에 "객체 단위로 Storage 등급이라는 것이 있고 등급에 따라 특성이나 비용 구조가 다르다" 정도만 알고 있으면 되겠죠. 객체 스토리지(Object Storage)는 비단 AWS가 아니더라도 규모 있는 CSP의 필수 서비스이고, 이름이나 부분 기능이 다를뿐 근본적으로는 비슷한 메커니즘으로 동작하기 때문에 Storage Class 또한 매우 범용적인 개념입니다.
그렇다면 AWS가 제공하는 객체 스토리지 서비스인 S3는 타 CSP의 서비스와 비교하여 어떤 특성이 있을까요? 제 생각에는 2가지를 꼽을 수 있을것 같습니다. 1) 타 AWS 서비스와 Integration(권한 관리, 이벤트 연동 등)이 매우 잘 되어 있다 2) 꽤나 다양한 Storage Class를 제공한다 는 것입니다. 특히 후자는 안그래도 사용자에게 많은 선택지(최종 저장형태 기준으로 5가지:Intelligent Tiering 제외)를 제공했던 것이, 이번에 한가지가 더 늘어서 6가지가 되었습니다.
(S3 Storage Class 정말 많아요~)
다양한 Storage Class를 사용자에게 제공한다는 것은 어떤 의미일까요? 선택 장애를 불러일으킨다? 아닙니다. 마치 EC2 인스턴스의 Instance Type처럼, EBS의 Storage Type처럼 사용자 입장에서 선택지는 많으면 많을수록 좋은 일입니다. 다만 효율적인 선택을 위해서는 선택지의 기본 특성과 장단점을 알아둬야 한다는 것이 조금 귀찮을 뿐이죠. 그리고 그 최적화 정도에 따라 따라 누구는 더 많은 자원을 더 싸게 쓰기도 하고, 같은 성능을 더 비싸게 쓰기도 합니다.(사실 최적화 정도에 따라 가성비가 달라지는 것은 클라우드 분야에서 유난히 두드러지는 특성이기도 합니다) 암튼 결론은 S3에서 제공하는 Storage Class의 종류가 많고, 현명한 선택을 위해서는 Class별 기본적인 특성을 알아야 하며, 그것을 알기 위해서는 이 글을 잘 읽으시면 된다는 것입니다.
이번 리인벤트에 새로 발표된 Storage Class의 이름은 "Glacier Instant Retrieval"입니다. (참고로 기존 Glacier는 이번에 출시된 신규 Class와 구분짓기 위해서 이름이 Glacier Flexible Retrieval로 변경되었습니다) 보통 Glacier는 아카이빙 용도의 클래스로 이해하고 있기 때문에, 실시간으로 Access할 수 없는(즉, Access하기 위해서는 사전 꺼내기 작업이 필요한) 특징을 가지고 있었는데요. 이번에 새로 출시된 계층은 즉시(Instantly) Access가 가능하다고 하네요. 따라서 이름에도 "Instant"라는 말이 붙어 있습니다.
(미리 Restore 작업이 필요한 Glacier Flexible Retrieval과 달리, Glacier Instant Retrieval은 즉시 Get이 가능합니다!)
그럼 이쯤에서 의문이 하나 생깁니다. 보통 알기로 Glacier는 "아주 낮은 보관비용을 지불하는 대신에 즉시 Access할 수 없는.. 일종의 살(?)을 내주고 뼈를 취하는" 아카이빙용 스토리지인데, 이건 즉시 Access가 된다고? 그럼 굳이 Standard 계열의 Class를 비싼 저장비용을 줘가면서 쓸 필요가 있을까? 즉시 Access가 되는데 왜 이름은 Glacier로 지었을까? 이건 나만 궁금한걸까? 를 알아보기 전에 먼저 주요 Storage Class의 성능 특성을 한번 살펴보겠습니다.
성능 특성을 쭉 보면 Glacier Instant Retrieval은 Standard-IA와 가장 비슷해 보입니다. 두 계층간에 다른 점이 있다면, 보관 최소과금 기간(90일/30일)정도만 차이가 있습니다. 이 말은 객체를 하루만 저장하고 바로 삭제해도 30일(또는 90일) 단위로 보관비용을 받는다는 뜻입니다. 애초에 장기보관용 데이터를 넣어놓으라는 말이죠. 이번엔 Glacier Instant Retrieval의 비용 구조는 어떻게 다른지 비교해 볼까요?
S3의 비용 구조는 생각보다 복잡합니다. 단가표도 보기에 좀 어렵게 되어 있어서 편의상 Standard-IA의 단가를 100원 기준점으로 잡고, Glacier Instant Retrieval(이하 GIR)과 Glacier Flexible Retrieval(이하 GFR)의 상대적인 단가를 측정해 보려고 합니다. 먼저 보관비용은 Standard-IA가 100원이라면, GIR은 32원/GFR은 29원입니다. 꺼내기(Data retrieval) 비용은 Standard-IA가 100원이면 GIR은 300원/GFR은 Expedited:300원, Standard:100원, Bulk:무료입니다. 요청 비용(편의상 PUT 기준)은 Standard-IA가 100원이면, GIR은 200원/GFR은 300원입니다. 글로 쓰니 보기에 더 어려운것 같은데, 결론은 GIR의 비용 구조는 Standard-IA보다 GFR에 더 가깝다는 것입니다. 특히 보관비용 기준으로는 GFR(기존 이름 Glacier)와 거의 유사한 수준임을 알 수 있습니다. 좀 더 극단적으로 비약을 하면, GIR의 경우 GFR에 준하는 보관 비용을 받되, 요청시 Expedited(속성 꺼내기)의 Retrieval 비용을 더해 극단적으로 빠르게(즉시) 꺼내주는 개념이라고 보면 되지 않을까 싶습니다.
(ebs 볼륨의 gp3 type도 마치 piops 계열처럼 성능값을 지정한다)
잠깐 다른 이야기를 하면, 최근 AWS에서는 이렇게 네이밍과 성능 특성이 불일치(?)한 경우가 종종 있습니다. EBS 볼륨의 경우 보통 piops 계열만 성능값을 지정하곤 했는데, 비교적 최근에 나온 gp3 type 또한 성능값을 지정하게 되어 있죠. 반면 비용 구조를 보면 gp3는 gp2의 특성과 io2의 특성을 모두 가지고 있습니다. 보관 단가만 보면 gp2와 동일하구요. 정리하면 제 뇌피셜은 이렇습니다. AWS가 제공하는 소비자 권장가격은 원가(?)와 밀접하게 연관되어 있습니다. 그리고 원가는 서비스를 제공하기 위한 인프라풀의 관리 메커니즘과 관련성이 깊구요. 따라서 과금구조가 유사하다 ▷ 원가구조가 유사하다 ▷ 관리풀이 유사하다 는 뜻이 되고, 여기에 따라 유사한 속성들끼리 S3 Storage Class의 이름이나 EBS Type의 이름을 짓는 모양입니다.
자, 다시 S3 얘기로 돌아와서.. 앞서 새로 출시된 Storage Class를 살펴봤구요. 계층이 하나 늘어난만큼, 사용자의 선택 난이도는 더 높아졌습니다. 사실 이런 Storage Class를 수동으로 정의하고 관리하기는 매우 어렵기 때문에, AWS에서는 사용 패턴에 따라 계층이 자동으로 이동할 수 있는 툴도 제공하고 있는데요. 그 전환이 정해진 일수(Days)에 따라 1방향으로 이루어지면 S3의 Lifecycle 기능을, 엑세스 패턴에 따라 多방향으로 이루어지면 Intelligent-Tiering Class를 활용합니다. 후자의 경우 이번 업데이트로 인해, Intelligent-Tiering 내에서 전환되는 Class(Archive Instant Access Tier)가 새롭게 추가되었습니다.
(Frequent Tier에서 시작, 30일간 Access가 없으면 Infrequent Tier로, 90일간 Access가 없으면 Archive Instant Tier로 전환된다)
보충 설명을 드리면, 기존에는 Intelligent-Tiering Class 내에서 운용 가능한 계층이 총 4개가 있었습니다. 필수적으로 사용되는 계층(automatic)으로 Frequent와 Infrequent 계층이 있었고, 버킷 설정에 따라(optional) Archive 또는 Deep Archive 계층을 전환 범위에 포함시킬 수 있었습니다. 이번 업데이트로 인해, Intelligent-Tiering Class 내에서 운용 가능한 계층이 5개로 변경되었고, 필수 계층(automatic)에 Archive Instant 계층이 새로 추가되었습니다. 그리고 요금표를 보면 해당 계층은 Glacier Instant Retrieval을 활용하는 것이 분명하구요.
(문제 속에 답이 있다는..)
여전히 의문이 남습니다. S3에 새로운 Storage Class가 추가되었다는데, 그럼 나는 무엇을 선택해야 하는가? 답은 Storage Class를 선택하는 콘솔 화면에 있습니다. 만약 내가 Manual하게 Storage Class를 관리하겠다면 "분기에 한번 정도 접근하는 객체"에 Glacier Instant Retrieval을 활용하시면 됩니다. 그리고 "1달에 한번정도 접근하는 객체"라면 Standard-IA를 활용하면 됩니다.(예를 들어 1달에 한번정도 접근하고 / 한두달 내외로 유지하다 삭제하는 객체가 있다고 가정해봅시다. 이를 단순 보관단가만 보고 Glacier Instant Retrieval로 지정하게 되면, Standard-IA로 지정한 것보다 더 많은 요금이 나옵니다) 그리고 이런 작업을 수동으로 하지 않고 (자동 전환 비용을 감수하신다면) 그냥 속편하게 Intelligent-Tiering로 지정해서 계층 관리를 AWS에 위임하는 것도 좋은 방법입니다.
자, 이제 마칠 시간입니다. 이번 리인벤트에서는 S3 Price Reduction 소식도 있었는데요. 특정 리전의 특정 Storage Class에 대해 10~30% 정도의 보관비용 인하가 있었습니다. 앞서 말씀드린 내용들을 포함하여, S3 관련 업데이트와 관련된 상세 내용은 아래 링크를 참고하시면 되구요. 항상 말씀드리지만 S3는 AWS에서 워낙 핵심적인 서비스이기 때문에, AWS를 효율적으로 쓰려면 S3부터 효율적으로 써야 합니다. 오늘 소개드린 내용이 S3 서비스를 효율적으로 활용하는데 도움이 되시기를 바랍니다. 끝!
[링크]
https://aws.amazon.com/ko/blogs/aws/amazon-s3-glacier-is-the-best-place-to-archive-your-data-introducing-the-s3-glacier-instant-retrieval-storage-class/
https://aws.amazon.com/ko/blogs/storage/s3-storage-class-price-reductions/