응답과 처리량

성능 문제의 두 가지 원인

시스템 성능 문제는 대부분 사용자 불만을 통해 인지하게 된다.

표현은 모두 다르지만 같은 얘기를 하고 있다. ‘사양이라서 어쩔 수 없어요’라고 대답할 수 없는 것이 인프라 기술자의 운명이다. 그러면 이런 불만이 있을 때 인프라 관점에서는 다음 사항을 사용자로부터 확인해야 한다.

시스템 성능을 가리킬 때 응답(Response)과 처리량(Throughput)이라는 지표가 자주 사용된다. 응답은 처리 하나당 소요 시간을 의미하며, 처리량은 단위 시간당 처리하는 양을 의미한다. 일상에서도 사용하는 용어이지만, 이 두 가지를 혼동해서 사용하는 경우가 많아서 명확히 구별하는 것이 중요하다.

예를 들어, 검색 엔지에서 키워드를 입력해서 ‘검색’ 버튼을 누른 후 검색 결과가 표시되기까지 걸리는 시간이 응답 시간(Response Time) 이다. 응답에 걸리는 시간으로, 명칭 그대로다. 한편 처리량은 이 검색 엔진이 초당 받아 들이는 사용자 수에 해당한다. 응답은 ‘서비스를 이용하는 한 명의 사용자’ 관점 지표인 반면, 처리량은 ‘서비스 제공자’ 관점의 지표라고 할 수 있다.

아래 그림은 편의점을 예로 들고 있는데, 조금 더 자세히 설명하겠다. 이 가게에는 계산대가 두 곳에 있으며, 계산 담당자 두 명의 능력이 동일하다고 가정한다. 그리고 고객이 두 계산대에 균등하게 줄을 서 있다고 하자. 이때 줄의 끝에 선 후 계산이 끝나기까지 걸리는 시간이 응답 시간이다. 또한, 한 대의 계산대에서 한 명당 1분이 걸린다고 하자. 계산대가 두 개이기 때문에 1분당 두 명분을 정산할 수 있다. 이것을 처리량이라고 한다.

image.png

이어서 아래 그림은 편의점 예를 시스템 구성도로 표현한 것이다. 웹/AP/DB 서버를 한 세트로 하는 시스템이 시스템 전체에서 1분간 10000HTTP 요청을 처리하는 처리량을 가지고 있다고 하자. 응답 시간은 한 명의 사용자가 본 지표이기 대문에 사용자가 웹 브라우저에서 특정 조작을 한 후 눈에 보이는 결과가 반환되기까지의 시간이다. 이것은 웹 서버의 응답뿐만 아니라 AP 서버나 DB 서버의 응답도 포함한다는 것에 주의하자.

실제 시스템에서는 단일 사용자 응답 시간만으로는 부족하기 때문에 여러 사용자의 평균값을 이용한다. 이때 통계학에서 사용되는 ‘퍼센타일(Percentile)’ 개념을 이용한다. 극단적으로 응답 시간이 긴 사용자는 다른 문제를 내포하고 있을 수 있기 때문에 오차라고 생각하고 평균값에 포함하지 않는다. 10%의 사용자 값을 버리고 나머지 90% 사용자의 평균 응답 시간을 이용하는 형태다.

image.png