![[부하 테스트] 처리량(Throughput), 지연 시간(Latency), 병목 지점(Bottleneck Point)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl0bje%2FbtsOm8IShmy%2Fahafb3ebiJj7u97sEwu9E1%2Fimg.webp)
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.
처리량(Throughput)
- 부하 테스트에서 서비스가 1초당 처리할 수 있는 트래픽 양을 보고 Throughput이라고 부른다.
- 단위는 TPS(Transaction Per Seconds, 1초당 처리한 트랜잭션의 수)를 많이 활용한다.
- 만약 서비스가 1초에 최대 100개의 API 요청을 처리할 수 있다면, 이 서비스의 Throughput은 100 TPS라고 말한다.
TPS VS RPS(Request Per Second)
RPS는 요청(Request) 기준이다.
단순히 서버가 1초에 받은 HTTP 요청 수를 의미한다.
예: /login, /products, /users/1 같은 API 호출 1건당 1 RPS로 측정된다.
TPS는 트랜잭션(Transaction) 기준이다.
보통 하나의 트랜잭션은 하나 이상의 요청을 포함한 논리적인 작업 단위를 의미한다.
예: /order 요청 시, 내부적으로 /products, /users, /payments 등 여러 API를 호출한다면 1 TPS지만 RPS는 3 이상일 수 있다.
지연 시간(Latency)
- 부하 테스트에서의 Latency는 하나의 요청을 보낸 시점부터 응답을 받기까지 걸리는 시간을 말한다.
- 즉, API 하나에 대해 클라이언트가 요청을 보내고, 서버로부터 응답을 받기까지의 왕복 시간이다.
- 만약 서비스에 부하 테스트를 했을 때 평균 응답 시간이 2.5초일 경우, 평균 Latency가 2.5초라고 말한다.
- 조금 더 쉽게 해석하자면 하나의 API에 요청을 보냈을 때 응답받기까지의 시간이 2.5초 정도 걸린다는 뜻이다.
병목 지점(Bottleneck Point)
- 부하테스트에서 병목 지점(Bottleneck Point)이라는 말을 많이 사용한다.
- 병목 지점(Bottleneck Point)이란, 전체 시스템에서 특정 서버 자원(CPU, Memory 등)이 한계에 도달해 전체 성능이 저하되는 구간을 의미한다.
고속 도로에 비유하자면 길이 갑자기 좁아지는 구간에서 차가 확 막히는 경우가 많다.
3차선 도로가 소화할만한 차들이 갑자기 2차선으로 몰려들면서 정체가 발생한다. 그럼 이 2차선 구간에서 발생한 정체를 보고 병목 지점(Bottleneck Point)라고 얘기한다.
전체적인 고속 도로 정체를 해결하기 위해서는 교통 정체가 일어난 곳을 해결해야 한다. 정체가 없는 3차선 도로를 아무리 더 넓혀봐야, 2차선 도로의 정체가 나아지지 않는다. 정체가 발생한 2차선 도로를 해결해야 전체적인 고속 도로 정체가 해결된다.
이와 비슷하게 시스템의 성능을 개선하려면 ‘병목 지점’을 개선해야 한다.
’병목 지점의 Throughput’이 곧 ‘전체 Throughput’이다.
A~B~C까지 1시간에 통과할 수 있는 자동차의 대수가 300대이다.
왜냐하면 A~B의 구간에서 아무리 1시간에 1,000대를 통과시킨다고 하더라도, B~C 구간에서 1시간에 300대만 통과할 수 있기 때문이다.
시스템에서도 동일하게 적용된다. 사용자 ↔ 백엔드 서버 ↔ DB의 구조에서 백엔드 서버가 1초에 1,000개의 요청을 처리할 수 있고, DB가 1초에 300개의 요청을 처리할 수 있다고 가정하자. 그러면 전체적인 시스템에서 1초당 처리할 수 있는 요청의 양은 300개이다.
위 사례를 통해 ‘병목 지점의 Throughput’이 곧 ‘전체 Throughput’이라는 걸 알 수 있다.
특정 병목 지점을 해소하면 다른 곳에서 새로운 병목 지점이 발생한다.
A~B~C 구간에서 통과할 수 있는 자동차의 대수는 시간당 300대이다.
A~B~C 구간을 통과할 수 있는 자동차 대수를 늘리기 위해 병목 지점인 B~C 구간을 아래와 같이 개선했다고 가정하자
이제는 A~B~C 구간에서 통과할 수 있는 자동차의 대수는 시간당 1,000대 이다.
B~C 구간에서는 시간당 1,500대의 자동차가 지나갈 수 있을지라도, A~B 구간에서는 시간당 1,000대의 자동차만 지나갈 수 있기 때문이다.
위 예를 통해 특정 병목 지점을 해소하면 다른 곳에서 새로운 병목 지점이 발생한다는 점을 알 수 있다.
'Back-End > 부하 테스트' 카테고리의 다른 글
[부하 테스트] 트래픽 증가에 따른 시스템 설계 및 확장 (0) | 2025.06.05 |
---|---|
[부하 테스트] 병목지점 판단 (0) | 2025.06.04 |
[부하 테스트] k6 설치 및 사용 방법 (0) | 2025.06.03 |