본문으로 바로가기

Contents

    개요

    AWS 인스턴스에는 사용할 수 있는 성능이 정해져 있다.

    보통 어떤 인스턴스 유형을 사용할지 정할 때 CPU나 Memory, Network Bandwidth 같은 성능을 주로 볼 텐데 간과하기 쉬운 성능인 인스턴스 → EBS 구간의 성능에 대해 알아보자.

    인스턴스의 EBS 성능

    AWS에서 대부분의 인스턴스들은 EBS에 최적화된 인스턴스로 분류된다.

    EBS 최적화 인스턴스는 인스턴스와 EBS 간의 전용 대역폭을 제공하고 트래픽 경합을 최소화하여 EBS에 최상의 성능을 제공한다.

    인스턴스 목록 표를 보면 인스턴스 유형이 나와있고 유형별로 대역폭, 처리량, IOPS가 나와있다. 이 세 가지 항목이 인스턴스와 EBS 간의 성능을 나타낸다.

    이 성능은 또 기준(Baseline) 성능과 최대(Maximum) 성능으로 나뉘게 된다.

     

    기준(Baseline) 성능

    기준 성능은 인스턴스가 보장하는 최소 성능을 뜻한다.

     

    최대(Maximum) 성능

    인스턴스가 낼 수 있는 최대 성능이다.

     

    ❗유의사항

    그러나 여기서 유의해야 할 점이 한 가지 있다. Bursting이 되었을 때만 최대 성능을 낼 수 있다는 점이다.

    Bursting을 하기 위해서는 Burst Credit이 필요하다. 그 말인즉슨 Burst Credit이 모두 소진될 경우 더 이상의 Bursting이 불가능 해지고 기준 성능까지만 낼 수 있다는 점이다. 이 점을 꼭 유의하자.

    • 최대 성능이라고 명시되어 있어서 (원문으로 봐도 Maximum) 당연히 아무런 대가 없이 최대 성능을 낼 수 있다고 이해를 했었으나 Bursting 시 최대 성능을 낼 수 있다는 사실은 인지하지 못했다.
    • 공식문서에 ‘(Bursting 시) 최대 성능’이라고 써져 있었어도 이해가 훨씬 쉬웠을 것이다.

    정리

    t3a.large 인스턴스 타입을 예시로 들어 다시 정리해 보겠다.

    • 기준 IOPS 성능은 4,000 IOPS이고 최대 성능은 15,700 IOPS이다.
    • IOPS가 기준 성능인 4,000 IOPS보다 초과되는 순간 Bursting이 되어 최대 성능까지 낼 수 있다.
    • 그러나 **Burst Credit (I/O)**이 다 소진될 경우 그 순간부터 최대 성능을 못 내게 되므로 인스턴스는 기준 성능인 4,000 IOPS까지 밖에 처리하지 못하게 된다.
    💡 Bursting 이란? : EC2, EBS, RDS, EFS와 같은 AWS의 주요 서비스에서 평상시 리소스를 사용하지 않을 때 시간에 비례하여 Credit이라는 자원을 쌓아두었다가 순간적으로 리소스가 많이 필요할 때 Credit을 소진하여 부족한 리소스를 충당해 주는 역할을 한다. (출처 : https://sarc.io/index.php/aws/2028-aws-bursting-credit)

    Bursting 관련 Cloudwatch 메트릭

    Burst Credit이 모두 소진된다면 기준 성능으로 제한되기 때문에 서비스 장애나 다름없는 상황이 발생할 수 있다. 따라서 Bursting에 대한 모니터링은 필수이다.

    AWS에서 제공해 주는 Bursting 관련 Cloudwatch 메트릭을 소개한다.

    EBSIOBalance%

    Burst Bucket에 남아있는 I/O Credit의 비율에 대한 정보를 제공하는 지표이다.

    만약, 해당 지표가 0%에 가깝다면 IOPS 성능은 인스턴스의 기준 IOPS 성능으로 제한된다.

    • 해당 지표는 인스턴스에서 사용되는 지표이다. (Nitro System 기반 인스턴스만 해당된다.)

    EBSByteBalance%

    Burst Bucket에 남아있는 Throughput Credit의 비율에 대한 정보를 제공하는 지표이다.

    만약, 해당 지표가 0%에 가깝다면 Throughput 성능은 인스턴스의 기준 Throughput 성능으로 제한된다.

    • 해당 지표는 인스턴스에서 사용되는 지표이다. (Nitro System 기반 인스턴스만 해당된다.)

    Burstbalance

    Burstbalance는 EBS의 Burst Credit 비율을 나타내는 메트릭이다.

    만약, 해당 지표가 0%에 가깝다면 EBS의 기준 수준으로 제한된다.

    • EBS에서 사용되는 지표이다.
    💡 EBS의 Bursting은 최대 3,000 IOPS로 성능을 끌어올려주는 것이라 3,000 IOPS 이상인 EBS일 경우에는 Bursting이 의미가 없다.

    마치며

    인스턴스의 기준 성능과 최대 성능이 어떤 메커니즘으로 동작하는지 잘 모르고 있어서 실서비스에 장애를 초래했다. 어쩌면 아주 기본적인 AWS의 기초적인 개념인데 나 스스로 AWS에 대해 잘 알고 있다고 자만을 해서 이런 장애를 초래한 것 같다. 다시금 기초 개념이 중요하다는 것을 깨달았다.

     

     

     

    Reference