성능 테스트
성능이란
도서 실무로 배우는 시스템 성능 최적화에선 성능을 다음과 같이 정의한다.
고객의 특정 업무를 대상으로 운영환경하에서 고객이 수긍할 수 있는 응답시간 내에 처리할 수 있는 거래량
동일한 도서에서 다음과 같은 구절도 나온다.
응답시간은 사용자의 특성과 환경에 따라 요구하는 수준이 다르므로 동일한 응답 시간에 대해 고객마다 만족도는 다르게 나타난다. 이는 모든 시스템과 사용자에게 일률적으로 적용할 수 있는 응답시간의 기준은 없다는 것을 의미한다.
또 다른 도서 전문가가 알려주는 웹 퍼포먼스 튜닝에선 부하 테스트의 계획 단계에서 제시한 개요에는 시나리오가 포함된다. 시나리오의 내용은 다음과 같다.
어떤 부하를 가할지 결정
(어떤 동작을 하는 사용자를 몇 %로 가정하는가)
여러 시나리오를 준비하거나 동시에 병렬로 진행
예 : 로그인 → 달력 표시 → 예약 범위 선택 → 확인 화면 → 예약 실행이라는 동작을 하는 사용자 중 다시 한 번 실행하는 사용자가 5%
위 두 내용을 종합했을 때 서비스 개발자가 테스트해야 할 성능은 서비스 사용자가 서비스를 제대로 사용하기 위해 필요한 응답시간을 만족하면서 처리할 수 있는 거래량이다.
성능의 평가
도서 실무로 배우는 시스템 성능 최적화에선 TPS의 T에 대해 다음과 같이 언급한다.
TPS(Trsansaction Per Second)의 T를 고객의 업무 처리 건수가 되는 것이 고객과의 의사소통을 위해서나 업무 시스템을 평가하는 데 적합하다.
그러나, 시스템을 설계하고 분석하는 엔지니어 입장에서는 서버가 인식하는 트랜잭션 또한 시스템을 이해하고 개선 방향을 수립하는데 중요한 의미를 가진다.
요청 사용자 수가 증가하면 서버가 처리 해야할 요청이 많아지므로 응답시간이 점점 늘어난다. 하지만, 시스템 자원의 여유가 많다면 응답시간의 증가 폭 보다 처리하는 요청 수 증가 폭이 더 커서 TPS가 점점 늘어난다. 그러다가 시스템의 CPU의 약 70%정도를 사용하는 시점에서 시스템의 자원이 부분적으로 부족해 TPS는 일정 수치 내외를 유지한다. 최종적으로 CPU의 약 90%정도를 사용하는 지점부터는 시스템의 자원이 부족해 TPS가 떨어지게 된다.
TPS 증가가 멈추는 지점을 임계점이라 한다. 일반적으로 임계점에서의 동시 요청자 수를 늘리는 것을 목표로 하지만, 서비스의 특성에 따라 TPS가 일정하게 유지되는 구간을 늘리는 것을 목표로 하기도 한다.
서비스 런칭 전의 성능 테스트
앞서 서술한 것 처럼, 서비스의 특성과 서비스를 사용하는 사용자가 여러 기능들을 어느정도 비율로 사용하는지 가정하에 성능 테스트가 수행된다. 서비스가 런칭된 상태라면, 서버의 로그를 분석해 이 비율을 특정해 시나리오를 작성하고 테스트를 수행할 수 있다.
그러나, 서비스 런칭 전에는 로그가 없기 때문에 추론에 기반을 두고 시나리오를 정하게 된다. 이 시나리오는 서비스 기획시 상정한 페르소나, 홍보 계획, 서비스의 주요 기능의 사용 흐름, 경쟁 서비스의 통계 등을 기반으로 추론해야 한다. 메인 페이지에서는 보통 그 서비스의 대표적인 컨텐츠에 대한 진입점을 제공하기 때문에, 대부분의 사용 시나리오의 시작이 된다. 메인 페이지에서 어떤 컨텐츠를 이용할지 고민하는 시간을 가진 뒤 이를 이용하는 흐름을 생각해 볼 수 있다. 정리하면 아래와 같다.
메인 페이지 접속 → 생각 시간 → 컨텐츠 진입 → 생각 시간 …
예시로 현재 진행중인 데벨업 서비스를 기준으로 생각해보자.
메인 페이지에 접근하면 아래와 같은 화면이 나온다.
대부분의 사용자는 여기서 가장 큰 공간을 차지하는 배너를 누를 것이라 추측할 수 있다. 물론, 다른 추측도 가능하다. 배너를 쭉 내리면 아래 화면이 나온다.
여기서 버튼을 누르면 메인 페이지로 이동한다. 즉, 다음과 같은 이동이 발생한다.
메인페이지 → 어바웃 페이지 → 메인 페이지
이때 미션 목록이 화면에 노출된다. 따라서 다음 이동은 높은 확률로 미션 조회 페이지일 것이다.
메인페이지 → 어바웃 페이지 → 메인 페이지 → 미션 조회 페이지
이런 흐름을 따라온 사용자는 미션을 풀거나 다른 미션들을 조회할 것이다. 미션을 푸는 사용자들은 사용 흐름상 사이트를 오랫동안 벗어나게 되므로 별도의 시나리오에 포함되는 것이 타당하다.