[소개] AWS EC2 Network성능에 대해

  • Post category:AWS / Compute
  • Post author:

오늘은 AWS EC2 Network성능에 대해 얘기해보고자 합니다.

AWS EC2 Inatance 서버를 운영하면서 가장 많이 이슈가 되는것 중 하나가 바로 EC2 Network 성능입니다.

AWS에서는 각 EC2 instance type별 그리고 각 size별로 제공하는 Network 성능이 다르기 때문입니다.

이러한 특성으로 사용중인 EC2 Instance Type에 성능이 원하는 네트워크성능이 나오지 않아  DownTime을 감수하고 Instance Type을 증가 시켜야하는 경우가 발생할 수도 있습니다.

한가지 사례를 통해 말씀드리겠습니다.

EC2 instance서버에 FTP서버용으로 windows Server2008버전의 OS를 사용하는 고객이 있습니다.

사양은 C4.large 였고 약 500MB용량의  파일을 약20,000명의 유저들이 한번에 다운로드 받아가는 대규모 업데이트를 진행하고자합니다.

업데이트는 오후 6시부터 진행하여 다음날 아침8시 까지 약 14시간안에는 다운로드가 완료가 되어야 하는 상황입니다.

위에서 주어진 상황에 얼만큼의 네트워크성능이(Gbps) 필요할까요?

정답은 아래와 같습니다.

500MB * 20,000명 = 약 9,766GB

14시간 = 14 * 60 * 60초 = 50,400초

따라서 9,766 GB / 50,400초  = 0.19 GBytes/s = 1.55 Gbit/s 의 네트워크성능이 필요합니다.

그럼 과연 C4.large가 1.55 Gbit/s 의 성능을 커버할 수 있을까요?

EC2 instance type 별 네트워크 성능에대해서 AWS 문서를 찾아 보겠습니다.

https://aws.amazon.com/ec2/instance-types/?nc1=h_ls

아.. 아…네 문서를 보니 네트워크 성능은 적당하거나 높거나 10Gbit 라고 나오네요.

AWS문서에는 정확한 네트워크 성능 수치를 공개하지 않고 있습니다.

따라서 실제로 C4  instance type이 얼만큼의 네트워크 성능을 내는지 테스트를 진행하였습니다.

아래는 그 결과 입니다.

INSTANCE
TYPE 
Baseline (Gbit/s)Baseline (Byte/5m)
c4.large0.62          24,964,497,408
c4.xlarge1.24           49,928,994,816
c4.2xlarge2.48           99,857,989,632
c4.4xlarge4.96         199,715,979,264
c4.8xlarge9.85         396,613,386,240
c5.large0.74           29,796,335,616

위 자료에서 단위를 Gbit/s 와 Byte/5m 로 표시하였습니다.

그 이유는 일반적으로 네트워크성능 단위는 Gbit/s 또는 Gbps로 많이들 표기 합니다.

그런데 사실 AWS cloudwatch의 Metric 에서 EC2의 Network out 되는 데이터량을 살펴보면 Byte/5m 으로 확인되기 때문입니다.

( Byte/m 단위로 살펴 볼수도 있지만 EC2 instance에서  Detailed Monitoring 옵션을 활성화해야 1분 단위로 확인이 가능합니다.)

다시 본론으로 돌아와 우리가 필요한 네트워크성능은 1.55 Gbit/s 입니다. 하지만 실제 테스트해본 결과 C4.large는 0.62 Gbit/s의 성능 밖에 보여주지 않고있습니다.

위 표를 보니 1.55 Gbit/s 의 네트워크를 커버하려면 C4.2xlarge 를 사용해야 겠군요. 결국 down time을 감수하고 C4.2xlarge로 사양을 증가시켰습니다.

해당 인스턴스의 Cloudwatch Metric을 살표보겠습니다.

Networkout되는 데이터의 총량을 확인해봐야하기 때문에 Static은 Sum으로 설정하였으며, Detailed Monitoring 옵션이 활성화되지 않았기 때문에 Period는 5분으로 설정하였습니다. 그래프를 살펴보면 약 11시 50분 부터 18시40분 까지 23.2GByte/5m 이상 치고 올라가지 못합니다.

그렇죠 저희가 자체적으로 측정한 대로 C4.large의 Baseline은 24,964,497,408 Byte/5m = 23.25GByte/5m 이기 때문에 그이상 성능이 나오지 않는 것입니다.

이런 이슈를 약 7시간 동안 이를 감지하지 못하였습니다.  미리 예상되는 네트워크 성능을 파악하고 AWS EC2 instance의 성능을 높혔더라면 서비스의 지연을 피했을 것입니다.

이렇게 EC2 instance의 네트워크 성능에 Baseline이 존재한다는 것을 인지하고 있는 것은 AWS Cloud를 운영하실 때 매우 매우 중요한 포인트입니다. 또한,  AWS Cloudwatch에서 해당 metric을 파악할 수 있어야 서비스 지연의 원인이나 장애의 원인을 파악할 수 있습니다.

그럼 여기까지 AWS EC2 Network성능에 대해 살펴보았습니다. 다음에 기회가 된다면 각 OS및 버전별로 네트워크 최대 성능에대해 알아 보면 좋을거 같습니다. EC2 Instance Baseline에 상관없이 OS의 Network  driver 성능에 따라서 성능이 안나올 수 있기 때문이죠.