본문 바로가기

개발일지/TIL

[230824] 성능 향상을 위한 EC2 Instance Scale-Up

성능 향상을 위한 EC2 Scale-Up

💬 전체 조회에서 QueryDSL, DB Index 적용 등을 하고 나서도 원하는 성능(TPS 500건)이 나오지 않는다고 했습니다. 입찰 기능에서도 HikariCP 병목 현상으로 문제를 겪고 있었습니다. 이 두 가지를 모두 개선할 수 있는 방법으로 Scale-Up이 있었기에 적용을 해보기로 했습니다. 현재 사용하고 있는 EC2 Instance t2.micro(cpu 1 core, memory 1G)가 사양이 너무 낮은 것도 한 몫했습니다. 

 

전체 조회 및 HikariCP 병목 현상 발생했을 때 하드웨어 지표

 

✔ 기준

💬 Scale-Up 할 EC2 Instance을 선정하기 위해서 기준이 필요했습니다.
     ➡ 프로젝트에 가용할 수 있는 금액이 총 28만원 이었기에 Redis, RDS 등에 드는 비용을 제외하고 약 16만원(2/3) 책정
     ➡ 책정된 금액에서 2~3대의 Instance 생성 가능 여부 ( 상황에 따라 애플리케이션, SSE 서버가 분리 or Scale-Out )

 

✔ 후보군

💬 AWS EC2 Instance Family 중 CPU가 강력해서 데이터 처리가 빠르며 동시성 처리에 능한 C(Compute Optimized) Family를 기준으로 후보군을 선정했습니다.

 

인스턴스 이름 vCPU Memory Network 2주간 가격
c5.xlarge 4 8G 10Gigabit 86,308
c6i.xlarge 4 8G 30Gigabit 97,000
c5.large 2 4G 10Gigabit 48,840
c5n.xlarge 4 10.5G 25Gigabit 119,096

 

✔ 결정

💬 Instance 2대로 가정했을 경우 4개의 후보군 모두 어느 정도 비용이 더 부담을 해야겠지만 충분히 가능했습니다. 하지만 저희는 애플리케이션 서버 2대(Scale-Out), SSE 서버 1대를 해보고 싶다는 의견이 모아져서 c5.large으로 결정하게 되었습니다. 

 

✔ 결과

💬 Scale-Up 전에는 10,000건도 에러율이 23.33% 발생하며 처리를 제대로 하지 못하는 것을 확인할 수 있습니다. Scale-Up 이후에는 40,000건까지 에러율이 0.1% 이하이며 500 TPS가 나오는 것을 확인할 수 있습니다. 이를 통해 Scale-Up을 통한 성능 향상이 명확하게 보이는 것을 확인할 수 있습니다.

 

조회 성능 향상 지표

건수 서버 에러율 TPS Average Latency
5,000건 t2.micro 0% 83.3/sec 21ms
c5.large 23.33% 123.4/sec 4929ms
10,000건 t2.micro 0% 82.3/sec 19ms
c5.large 0% 167.1/sec 41ms
20,000건 c5.large 0.03% 328.7/sec 184ms
30,000건 c5.large 0.03% 494.7/sec 40ms
40,000건 c5.large 0% 499.4/sec 29ms

입찰 성능 향상 지표

Scale-Up 전
Scale-Up 후