toy/북챌린지 2

500만 건 데이터의 페이징 API 성능 최적화: TPS 4.3에서 219로 개선하기

문제 사항 1. 책 조회 페이징 API (TPS 4.3)책 조회에 대한 페이징 API를 구현한 뒤, Ngrinder를 통해 TPS를 확인해보니 4.3 으로 매우 낮은 상태였습니다. 책 ID(클러스터 인덱스)로 조회했을 때 최대 TPS는 약 230에 비해 현저히 낮은 상태였습니다. 이 문제점을 개선하기 위해 다음과 같은 과정을 진행했습니다. 테스트 환경NCLOUD 애플리케이션 서버 (2CPU / 2GB)NCLOUD ngrinder 에이전트 및 컨트롤러 서버 (2CPU / 2GB)MySQL 마스터 / 슬레이브 이중화로 구성 (Book 테이블에는 500만건의 더미데이터 생성) 개선 전 상태 API를 호출하면 쿼리문이 2번 나갑니다. 처음은 OFFSET 방식으로 쿼리가 나가고, 그다음은 총 개수를 얻기위해 카운..

toy/북챌린지 2024.09.22

클라우드 환경에 내 로컬 DB 연결하기

문제 사항애플리케이션 서버를 배포한 후, 성능 테스트를 수행하려면 반드시 데이터베이스(DB)가 필요합니다.  하지만 다음과 같은 어려움이 있습니다: RDS를 이용한 성능 테스트: 쿼리 당 비용이 발생하여 예산이 제한적인 상황에서는 적합하지 않습니다.개발 서버용 EC2에 MySQL 설치: EC2 프리 티어의 1CPU 1GiB 사양으로는 MySQL을 원활하게 운영하기 어렵습니다.로컬 환경에서의 성능 테스트: 로컬 PC에서 Tomcat과 MySQL을 실행하여 테스트할 수 있지만, localhost 내에서 수행되므로 실제 네트워크 환경을 반영하지 못해 의미 있는 성능 테스트가 어렵습니다.해결방안로컬에 MySQL 도커 컨테이너를 설치하고 외부 접속이 가능하도록 설정하고 DDNS 도메인을 만들면, EC2에서 안정적..

toy/북챌린지 2024.08.26