서버 성능의 대표적인 지표
응답 시간
- 클라이언트가 어떤 요청을 해서 그 요청에 대한 처리 결과를 받을 때까지의 시간
- 서버에서 요청을 처리하는 시간 + 클라이언트와 서버 간의 데이터 전달 시간(대기 시간)
처리량
- TPS(Transaction Per Second; 초당 처리할 수 있는 요청 개수)라는 수치로 많이 표현하는데, 이 수가 높을수록 많은 요청을 처리한다고 볼 수 있다.
TPS를 높이는 방법
- 서버 늘리기
- 쓰레드 풀 + DB 커넥션 풀 늘리기
위 방법의 한계
- 서버의 증설이 성능 향상과 비례하지도 않을뿐더러, 일정 시점부터 DB의 부하가 견딜 수 있는 임계치를 넘어가면 성능이 떨어짐
- 따라서 TPS를 높이기 위해서는 서버를 늘리는 것도 필요하지만 기본적으로 처리 시간 자체를 줄일 필요가 있다.
처리 시간 줄이는 방법
처리 시간에서 비중이 높은 대상은 다음과 같다.
DB 연동
- 쿼리 최적화
캐시
- 자주 사용되는 데이터를 메모리에 적재하여 DB에 대한 접근을 최소화
- 쓰기/읽기 DB
- 스케일 업
API 호출
- 캐시
- 외부 API호출로부터 데이터를 읽어오는 경우 캐시를 사용해 호출 빈도를 줄임
데이터 집계/계산
- 미리 계산해서 캐시나 DB에 보관하여 불필요한 처리 시간을 줄일 수 있음
대기 시간 줄이기
응답 시간은 대기 시간(Latency Time) + 처리 시간(Processing Time)으로 되어있다. 따라서 처리 시간뿐만 아니라 대기 시간도 줄일 수 있으면 좋다.
대역폭
- 대역폭(최대로 전송할 수 있는 데이터 양)이 작으면 서버에 연결하는 클라이언트 수가 증가할 때 데이터를 주고받는 속도가 급격히 느려진다.
응답 크기 줄이기
- 응답 자체를 압축하거나 이미지 품질을 낮추는 등 파일 크기를 줄여서 응답 크기 자체를 줄인다.
트래픽 분리하기
- 이미지, JS와 같은 정적 파일을 서버에서 제공하지 않고 외부 CDN을 통해 제공하도록 변경
- CDN은 이러한 정적 파일을 제공하는 데 특화된 서비스
- 이는 다른 방식으로 응답 크기를 줄이는 것으로, 이미지 파일의 품질이나 응답 크기 자체를 압축시키지 않아도 됨
대역폭 늘리기
- 대역폭 자체를 늘리는 것(인스턴스 사양 올리기)
- 비용이 많이 듬
참고
https://loosie.tistory.com/794
CDN