JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
무료 강의온라인 강의프로그래밍 과외책/전자책
유튜브블로그
후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

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

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

이용약관개인정보처리방침

대규모 트래픽 처리를 위한 부하테스트 입문/실전

부하 테스트의 기본 개념

취준생이 대규모 트래픽 처리 경험을 쌓는 방법 ?!
현업에서 부하 테스트를 왜 할까?
처리량(Throughput), 지연 시간(Latency)
부하 테스트 툴 선정 (k6)
[실습] EC2에 간단한 API 서버 셋팅하기
[실습] EC2에 부하 테스트 툴 셋팅하기
[실습] 내가 구성한 백엔드 서버는 1초당 몇 개의 요청을 견뎌낼 수 있을까?
[실습] 사용하지 않는 EC2 종료하기

부하 테스트를 통해 ‘병목 지점’ 진단하기

병목 지점 (
부하 테스트의 전체 흐름
부하 테스트 시 주의점
[실습] 부하 테스트 할 인프라 구성을 그림으로 파악하기
[실습] AWS EC2 셋팅하기
[실습] AWS RDS 셋팅하기
[실습] AWS ELB 생성하기
[실습] EC2에 백엔드 서버(Spring Boot) 셋팅하기
[실습] 내가 구성한 인프라는 1초당 몇 개의 요청을 견뎌낼 수 있을까?
모니터링(Monitoring), 메트릭(Metric)
CPU, 메모리(Memory), 디스크(Disk)
[실습] EC2 모니터링 셋팅하기
[실습] RDS 모니터링 셋팅하기
[보충 강의] ELB의 CPU, 메모리는 왜 측정하지 않나요?
[실습] 각 서버의 CPU, 메모리를 한 눈에 볼 수 있도록 셋팅하기
[실습] 부하 테스트를 통해 병목 지점 진단하기
[보충 강의] 실시간으로 CPU와 메모리를 관측하는 방법

병목 지점을 해결해 성능 개선하기

가용성(Availability), 시스템 이중화
수평적 확장, 수직적 확장, 캐싱
트래픽 증가에 따른 시스템 설계 및 확장 방법
[실습] 병목 지점(DB) 해결하기
[실습] 병목 지점(웹 애플리케이션 서버) 해결하기
부하 테스트의 전체 흐름 다시 점검
← 블로그 목록으로 돌아가기

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

JSCODE 박재성
JSCODE 박재성
2026. 04. 01.
author
JSCODE 박재성
category
부하테스트
createdAt
Dec 6, 2025 03:41 AM
isPublic
isPublic
series
대규모 트래픽 처리를 위한 부하테스트 입문/실전
slug
exercise-fix-db-bottleneck
type
post
updatedAt
Apr 1, 2026 09:00
🎯
[실습] 내가 구성한 인프라는 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의 병목 지점을 해결해보자.
 
📎
이 글은 대규모 트래픽 처리를 위한 부하테스트 입문/실전 강의의 수업 자료 중 일부입니다.