성능 향상을 위한 EC2 Scale-Up
💬 전체 조회에서 QueryDSL, DB Index 적용 등을 하고 나서도 원하는 성능(TPS 500건)이 나오지 않는다고 했습니다. 입찰 기능에서도 HikariCP 병목 현상으로 문제를 겪고 있었습니다. 이 두 가지를 모두 개선할 수 있는 방법으로 Scale-Up이 있었기에 적용을 해보기로 했습니다. 현재 사용하고 있는 EC2 Instance t2.micro(cpu 1 core, memory 1G)가 사양이 너무 낮은 것도 한 몫했습니다.
✔ 기준
💬 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 |
입찰 성능 향상 지표
'개발일지 > TIL' 카테고리의 다른 글
[230826] 입찰 API 병목 현상 로직 점검 (0) | 2023.08.26 |
---|---|
[230825] 입찰 테스트 중 겪은 Jmeter 한계 (0) | 2023.08.25 |
[230823] 입찰 테스트 시 HikariCP Timeout 문제 (0) | 2023.08.23 |
[230822] Jmeter에서 SSE 에러 실패로 표시하기 (0) | 2023.08.22 |
[230821] 서버에서 클라이언트로 SSE 예외 전달하기 (0) | 2023.08.21 |