대용량 트래픽을 처리하기 위해선 기본적으로 서버의 성능이 어느정도 되는지, 낭비되는 자원은 없는지, 혹은 자원을 효율적으로 사용하지 못하고 있는지에 대해서 확인을 해봐야합니다.
이번 테스트에선 제한된 환경에서 간단한 Thread Pool 조정으로 성능을 최적화 할 수 있는 방법을 테스트해보겠습니다.
Jmeter를 사용하여 반복적으로 로그인 API를 호출하며 테스트를 진행하였습니다.
CPU Core의 개수를 2개로 제한한 상태에서 테스트를 진행하였습니다.
2. Scale-Out, Scale-up
그 외 방법
서브 쿼리 제거 및 중복 테이블 Join 제거, 검색 조건은 가능하면 인덱싱이 걸려있는 컬럼으로. 단, 운영중 무분별한 인덱스 생성은 장애로 연결되기 때문에 조심
위 방법이 안된다면 nosql 타입의 레디스같은 키-벨류로 이뤄진 DB 도입. Select 시 Join이 많이 걸리고, 자주 호출되는 API의 경우 미리 데이터를 flat하게 말아둔 상태로 저장하였다가 간단하게 조회하는 방식으로 변경. 이 과정에서 insert, update, delete 같은 CUD 가 호출될 때 mq를 활용하여 Event-Driven-Architecture로 인프라를 구성하면 좋을듯
쿼리 튜닝 및 인프라 수정을 하여도 지속적으로 트래픽이 증가한다면..? 그땐 최후의 방법으로 webflux 프레임워크를 도입하면 어떨까??
TPS 테스트 및 대용량 트래픽에 대응하기 위한 성능 향상 테스트
1. Thread Pool 및 DB Connection Pool 조정
2. Scale-Out, Scale-up
그 외 방법