JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] 병목 지점(DB) 해결하기

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
부하테스트
createdAt
Dec 6, 2025
series
대규모 트래픽 처리를 위한 부하테스트 입문/실전
slug
exercise-fix-db-bottleneck
type
post
updatedAt
Dec 6, 2025 04:46 AM
🎯
[실습] 내가 구성한 인프라는 1초당 몇 개의 요청을 견뎌낼 수 있을까?
🎯
[실습] 부하 테스트를 통해 병목 지점 진단하기
이전 실습에서 부하 테스트를 했을 때 Throughput이 3 TPS임을 측정했고, RDS가 병목 지점이라는 것까지 확인했다. 지금부터 RDS의 병목 지점을 해결해서 성능 개선을 시도해볼 것이다.
 

✅ 인덱스를 활용해 RDS 성능 개선

  1. 성능 개선 방향성 판단하기
    1. DB를 성능 개선 할 때는 크게 4가지 방향성이 있다고 설명했었다. 그 중 비효율적인 쿼리 개선을 가장 먼저 시도해봐야 한다.
    2. 비효율적인 쿼리 개선하기 (인덱스 활용, SQL문 튜닝, 역정규화 등)
    3. 수직적 확정
    4. 읽기 전용 데이터베이스(Read Replica) 도입하기
    5. 캐시 서버 도입하기
    6.  
  1. 인덱스 생성하기
    1. Spring Boot 프로젝트에 있는 GET /boards 게시글 조회에서 created_at 컬럼을 기준으로 정렬한 뒤에 조회한다. 조금 더 빠르게 조회하게 만들기 위해 created_at 컬럼을 기준으로 인덱스를 생성해주자. (SQL 튜닝에 관련된 강의가 아니기 때문에 자세한 설명은 생략한다. 이 부분에 대해 자세히 공부해보고 싶다면 이 강의를 참고하자.)
      CREATE INDEX idx_created_at ON boards (created_at); SHOW INDEX FROM boards;
       
  1. 부하 테스트 시작하기
    1. $ K6_WEB_DASHBOARD=true k6 run script.js
       
  1. k6의 웹 대시보드 확인하기
    1. notion image
      최대 Throughput은 약 4 TPS 정도로 측정된다. 기존 Throughput(3 TPS)에 비해 1.25배 정도 증가했다. 즉, 1초에 처리할 수 있는 요청량이 3개에서 4개로 증가했다는 뜻이다.
       
 

✅ 추가적인 성능 개선

원래 설정해둔 목표 Throuhgput이 4 TPS보다 더 높았다고 가정하자. 그러면 추가적인 성능 개선이 더 필요하다. 성능 개선을 하기 위해서 가장 먼저 해야 하는 건 ‘병목 지점을 찾는 것’이다. 모니터링 지표를 살펴보니 이번에는 EC2의 CPU 사용률만 100%에 가깝게 사용되고 있었다. 즉, 병목 지점이 EC2라는 걸 알 수 있다.
notion image
다음 강의에서 EC2의 병목 지점을 해결해보자.
 
author
category
부하테스트
createdAt
Dec 6, 2025
series
대규모 트래픽 처리를 위한 부하테스트 입문/실전
slug
type
series-footer
updatedAt
Dec 6, 2025 04:54 AM
📎
이 글은 대규모 트래픽 처리를 위한 부하테스트 입문/실전 강의의 수업 자료 중 일부입니다.