IT STUDY LOG
[성능 테스트] 02. 부하 테스트 기본 본문
# 학습 목표
- 시스템의 가용성과 확장성을 평가할 수 있다.
- 부하 테스트의 목적을 이해할 수 있다.
- Throughput과 Latency의 개념을 이해할 수 있다.
- 시스템의 병목이 발생하는 주요 원인과 대책을 이해할 수 있다.
- SLO를 설정하고, 이를 기반으로 부하 테스트를 진행하고, 달성 여부를 파악할 수 있다.
# 학습 내용
1. 부하 테스트의 목적
클라우드 환경에서의 부하 테스트 목적
- 시스템 확장성을 가졌는지 확인
- 성능을 개선하기 위해 확장해야 하는 시스템이 무엇인지 파악
- 부하가 많이 발생할 때 문제 상황 개선
- 각 시스템의 병목 지점을 예측하고 진단 및 개선
어떤 부분을 확장할 것인가? : 확장성에 대한 특징 파악
- Throughput은 시간당 처리량으로, 시스템의 성능 지표는 RPS(request per second), TPS(transaction per second)와 같은 단위로 표현됨
- Throughput은 데이터 전송량에 포커스를 맞춘 성능 지표
- 한편 볼륨의 성능을 측정할 경우에는 IOPS(Input/Output per second)라는 단위를 사용합
- 성능을 측정할 때는, 인프라 내의 구성요소(티어)로 구분된 각 요소를 구분하지 않고 통합해서, 특정 작업이 얼마만큼의 Throughput을 갖는지를 측정
확장할 때 고려할 수 있는 부분
- 1000rps에서 2000rps로 성능을 두 배 개선하기 위해서는, 웹서버를 확장해야 할까? DB 서버를 확장해야 할까?
- 시스템 구성 변경 시 다운타임은 얼마나 허용되는가? 서비스 정지 없이 가능한가?
- 현재 시스템에서 낼 수 있는 최대 성능(limit)은 어디까지인가?
부하가 많이 발생할 때의 문제 상황 개선
부하가 많이 발생할 때 시스템에 일어나는 문제 요소
- 응답 속도(Latency) 저하
- 시스템 잠금(Lock) 경합
- 부하 발생 시 애플리케이션 또는 서버 에러 발생
- 데이터 일관성 문제와 손실
- 위 문제 사항을 해결할 수 있을 만큼의 부하 수용 범위 파악 필요
병목 지점을 예측하고 진단 및 개선
2. Throughput과 Latency
- throughtput과 latency는 시스템 성능 지표의 주요 메트릭이며 부하 테스트에서 이 두가지 지표를 활용해 평가
Throughput
- 시간당 처리량을 의미
웹 애플리케이션 성능 지표로서의 throughput의 대표적인 예
- 1초에 처리하는 HTTP 요청 수 (rps)
- (동영상 스트리밍 서비스와 같이 대역폭이 중요한 경우) 네트워크로 전송되는 데이터 전송 속도
Latency
- 처리 시간을 의미
- 사용자가 어떤 웹페이지를 보기 위한 Latency는 사용자의 인터넷 환경, 브라우저 등의 개별 환경에 대한 변수가 존재함. 즉, "네트워크를 통한 데이터 왕복 시간"도 포함
- but, 성능 테스트를 진행할 때에는, 사용자 환경에 따른 변인을 통제하거나, 애초에 네트워크 상황을 고려하지 않고 테스트를 진행
- 이후 언급하는 Latency는 네트워크 상황을 고려하지 않은 시스템이 요청을 받고 응답을 줄 때까지의 시간만을 의미
하위 시스템으로 구성된 경우에서의 Throughput과 Latency
고속도로의 비유를 통한 Throughput과 Latency 이해
- 하위 시스템은 서울/대구/부산 각각의 도시를 의미
- 각 도시 간에는 서로 다른 Throughput과 Latency를 가진 고속도로 두 개가 존재한다고 가정
- 이때 Latency는 대기 시간을 포함한, 각 하위 시스템 처리 시간의 총합으로 계산
- 반면 Throughput은 하위 시스템 Throughput 중 최소값을 전체 시스템의 Throughput으로 계산
- 서울-부산 간 Latency: 각 구간의 소요 시간 합계인 5시간
- 서울-부산 간 Throughput: 각 구간에 도달하는 차량 대수 중 최소값인 800대/시간
'devops bootcamp 4 > DevOps 인프라 관리' 카테고리의 다른 글
[성능 테스트] 04. 부하 테스트 도구와 활용 (1) | 2023.06.06 |
---|---|
[성능 테스트] 03. 병목 찾기 (2) | 2023.06.06 |
[성능 테스트] 01. 가용성과 확장성 (0) | 2023.06.06 |
[서비스 모니터링] 04. 서비스 수준 목표 (0) | 2023.06.05 |
[서비스 모니터링] 03. Prometheus + Grafana (0) | 2023.06.02 |