WiseN

[Re2020] 새로운 EBS 볼륨 유형(GP3)이 발표되었습니다 (Feat. Amazon EBS 업데이트 이모저모)

Jan 02, 2021   |   AWS

작성자_최준승

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

​안녕하십니까. 이번 포스팅에서는 Amazon EBS 볼륨과 관련된 업데이트를 한데 모아서 살펴보도록 하겠습니다. 

 

EBS 볼륨과 관련하여 간단한 예습 하나 해보시죠. EBS에서 제공하는 볼륨 타입은 크게 2가지가 있죠? 네 정답입니다. SSD와 HDD가 있구요. 이어 SSD로 범위를 좁히면 또 어떤 타입이 있을까요? '20년 2분기까지는​ (원하는 iops 성능을 미리 정의하느냐에 따라) "gp2"와 "io1"이 있었습니다. 그리고 지난 '20년 8월에 "io2"라 불리는 볼륨 타입이 출시되었구요. 이번 Re2020 기간에 "gp3"와 "io2 block express"라는 볼륨 유형이 새로 출시되었습니다. io2 block express는 아직 preview 상태니 차후 GA가 되면 다시 살펴보기로 하고, 오늘은 "gp3"와 관련된 내용을 위주로 기존 유형과의 차이점을 알아보겠습니다.


상세한 스펙을 비교하기 전에, 실제 볼륨 생성시 콘솔 화면이 어떻게 다른지부터 살펴보도록 하겠습니다. 이게 볼륨 특성을 파악하는 또 다른 방법일 수 있으니까요. 자, 먼저 gp2 볼륨을 생성할때의 콘솔 화면을 보시죠.




볼륨 유형 선택 항목을 제외하면, 사용자가 지정하는 것은 볼륨 크기(Size) 하나입니다. 하단 설명에서 알 수 있는 것처럼 해당 볼륨에서 제공하는 IOPS 성능은, 앞에서 지정한 볼륨 크기에 따라 다소 복잡한(?) 메커니즘에 따라 동작합니다. 이 부분은 깊게 들어가면 Baseline 성능과 Credit 개념을 설명해야 하기 때문에 혹시 궁금하신 분은 AWS 공식 문서를 참고하시구요. "gp2 볼륨 유형은 설정한 볼륨 크기에 따라 성능값이 좌지우지된다" 정도로 이해하고 넘어가셔도 됩니다. 이번엔 gp3 볼륨을 생성할때의 콘솔 화면을 보시죠.




gp2와 무엇이 다른가요? 이번엔 사용자가 지정해야 되는 값이 두개 더 늘었네요. 하나는 IOPS, 다른 하나는 Throughput입니다. 마치 io계열처럼 볼륨의 성능값을 사용자가 별도로 지정할 수 있게 되어 있습니다. 이것이 일단 gp2 유형과의 가장 큰 차이점입니다. 기본적으로 볼륨의 크기와 상관없이
(일부 비율 제한이 있긴 하나)​ 해당 볼륨의 성능값을 정의할 수 있습니다. 또한 볼륨 크기가 아무리 작더라도 최소 3,000 IOPS와 125 MiB/s의 consistent한 성능을 기본적으로 제공합니다. 즉, 기존 gp2 환경에서 성능때문에 어쩔 수 없이 볼륨 크기를 늘려 썼던 상황이 있었다면, gp3를 사용할 경우 볼륨 크기를 필요한 만큼 지정하고 별도로 성능값을 정의할 수도 있다고 생각하면 되겠죠. 선택지가 늘어난 셈입니다. 스펙 비교표를 한번 보시죠.




보시다시피 대부분의 단위 성능 limit은 gp2와 gp3 모두 비슷해 보입니다. (표에서는 빠져있지만 기본적으로 보장하는 볼륨 내구성 수준도 동일합니다) 다만 가격 정책에서 다른 부분이 보이는데요. gp3는 설정한 GB당 요금이 gp2에 비해 20%정도 저렴한데 반해, 일정 수준 이상의 성능값(IOPS, Throughput)을 초과하는 부분에 대해 별도 과금하는 항목이 있네요. 가격 측면에서 사용자에게 어떤 것이 유리할지는 크기 및 성능값의 조합에 따라 달라지므로 상황에 맞게 계산해봐야 합니다.


마지막으로 gp3에서 설정하는 값과 관련된 제약사항을 2가지 정도 언급하고 마치도록 하겠습니다. "지정한 IOPS값:볼륨 크기" 비율은 500:1을 초과할 수 없습니다. 그리고 "지정한 Throughput값:지정한 IOPS값" 비율은 0.25(MiB/s):1을 초과할 수 없습니다. 예를 들어 "볼륨당 지정할 수 있는 최대 IOPS값"이 16,000인데 500:1의 비율을 고려하면 볼륨 크기는 최소한 32GiB 이상으로 만들어야 합니다. 마찬가지로 "볼륨당 지정할 수 있는 최대 Throughput값"이 최대 1,000 MiB/s인데 0.25:1 비율을 고려하면 IOPS 값는 최소 4,000 이상을 설정해야 합니다. 그렇게 되면 또한 볼륨 크기는 8GiB 이상으로 만들어야 한다는 계산이 나옵니다.


다음은 io2와 관련된 업데이트 몇가지를 덧붙여 살펴보려고 합니다. 먼저 io2의 일부 과금항목이 계단식 단가 체계로 변경되었습니다. 예를 들어 기존에는 지정한 IOPS당 과금 항목이 flat하게 "IOPS당 10원"이었다면, 이번 업데이트로 32,000 IOPS까지는 IOPS당 10원, 그 이후 64,000 IOPS까지는 IOPS당 8원, 그 이후 구간에서는 IOPS당 6원 이런식으로 변경된 것이죠. 공식 가격 페이지를 한번 보시죠.

 


 

따라서 기존에 io2 볼륨 유형으로 32,000 이상의 IOPS값을 설정해서 썼던 사용자의 경우, 이번 업데이트로 더 낮은 가격을 지불하게 됩니다. 사실 io1/io2와 같은 piops 계열을 실제 사용해보면 "볼륨 크기 과금"보다 "설정한 IOPS값에 따른 과금"이 상대적으로 부담스러운 경우가 많았습니다. 그리고 io1 유형과 io2 유형은 (기본적인 내구성이나 몇몇 제약사항에서 차이가 있었지만) 단순히 단가 측면으로 볼때는 차이가 없었는데요. 이번 업데이트로 인해 가격적인 측면에서도 (특정 상황에서​) io2가 io1에 비해 경쟁력이 있다고 볼 수 있게 되었습니다. 다른 여느 AWS 서비스가 그렇듯, 딱히 이전 세대의 유형을 고수할 필요가 없어진 셈입니다.


이제 정리할 시간입니다. io2 유형과 관련된 업데이트 소식은 2가지 정도 더 있는데요. io1/io2에 비해 높은 수준의 성능을 지원하는 "io2 Block Express"라는 볼륨 유형이 추가되었습니다. ('21년 1월 기준 Preview 상태) 또한 io2 유형에서 기존에 (io1과 달리) 지원하지 않았던 multi-attach 기능을 지원하기 시작했습니다.


참고로 gp3 유형의 경우에는 모든 상용 리전에서 즉시 활용이 가능합니다. 또한 단순히 새로운 볼륨을 만드는 것 뿐만 아니라, gp2로 되어 있는 기존 볼륨을 modify volume을 통해 gp3 유형으로 변경하는 것도 지원합니다.


마지막으로 "현재 자원을 적정하게 프로비저닝하고 있는지를 ML 기반으로 분석/추천"해주는 Compute Optimizer라는 서비스에서 분석 대상에 EBS 볼륨이 추가되었습니다. 해당 서비스를 활성화하면 내가 만든 gp3/io1/io2 볼륨이 적당하게 프로비저닝되어 있는지를 쉽게 판단할 수 있습니다. gp3가 나오고 특정 성능값을 사용자가 지정하기 시작하면서, 그 값이 적정하냐를 판단하는 측면도 이전보다 더 중요해지겠죠? 좀 더 자세한 내용은 아래 개별 링크를 참조하시기 바랍니다.

 

https://aws.amazon.com/about-aws/whats-new/2020/12/introducing-new-amazon-ebs-general-purpose-volumes-gp3/
https://aws.amazon.com/about-aws/whats-new/2020/12/aws-announces-tiered-pricing-for-input-output-operations-per-second-iops-charges-for-amazon-elastic-block-store-ebs-io2-volume-reducing-the-cost-of-provisioning-peak-iops-by-15-percent/
https://aws.amazon.com/about-aws/whats-new/2020/12/multi-attach-support-now-available-on-amazon-ebs-provisioned-iops-volume-type-io2/
https://aws.amazon.com/about-aws/whats-new/2020/12/aws-compute-optimizer-supports-amazon-ebs-volume-recommendations/​