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

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

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

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

[실습] 병목 지점(웹 애플리케이션 서버) 해결하기

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
부하테스트
createdAt
Dec 6, 2025
series
대규모 트래픽 처리를 위한 부하테스트 입문/실전
slug
exercise-fix-webapp-bottleneck
type
post
updatedAt
Dec 6, 2025 04:46 AM

✅ EC2의 성능 개선 방향 잡기

병목 지점이 EC2라는 건 확인했다. EC2를 성능 개선할 때는 크게 4가지 방향성이 있다고 설명했다. a와 b에 대해서는 해당 사항이 없으므로, 시스템 이중화의 장점을 가지고 있는 ‘수평적 확장’의 방식으로 성능을 개선해보자.
그 중에서 시스템 이중화의 이점을 가져가기 위해 수평적 확장을 시도해보자.
  1. 애플리케이션 로직에서 비효율적인 로직 개선하기
  1. 정적 파일 서버(S3, Cloudfront) 분리하기
  1. 로드밸런서(ELB)를 활용해 수평적 확장하기
  1. 수직적 확장하기
 

✅ EC2 수평적 확장하기

참고) EC2에는 오토 스케일링(Auto Scaling)이라는 기능을 활용해 트래픽에 따라 자동으로 수평적 확장을 해주는 기능이 있다. 하지만 학습을 위해 수동으로 수평적 확장을 할 예정이다.
  1. 이미지 생성하기
    1. 이미지(Image)란 ‘기존 EC2 인스턴스의 복제본’이라고 생각하면 이해하기 쉽다.
      notion image
      notion image
       
  1. 이미지로 EC2 인스턴스 생성하기
    1. notion image
      notion image
      notion image
      notion image
      notion image
       
  1. EC2 인스턴스로 접속해 Spring Boot 서버 실행시키기
    1. notion image
      notion image
      $ cd /home/ubuntu $ cd load-testing-server $ cd build/libs $ sudo nohup java -jar jscode-0.0.1-SNAPSHOT.jar &
       
  1. Spring Boot가 잘 실행되는 지 확인하기
    1. http://{EC2 IP 주소}/health로 접속해서 Spring Boot 서버가 잘 작동하는 지 확인해보자.
      notion image
       
  1. CloudWatch Agent 실행시키기
    1. # CloudWatch Agent 실행 $ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json # 잘 실행되고 있는 지 확인 $ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
       
  1. EC2 인스턴스에 IAM Role 연결
    1. notion image
      notion image
       
  1. ELB의 대상 그룹에 추가하기
    1. notion image
      notion image
      notion image
      notion image
      notion image
      notion image
       
  1. CloudWatch 모니터링 추가하기
    1. [EC2의 CPUUtilization]
      notion image
      notion image
      notion image
      notion image
       
      [EC2의 메모리 사용량]
      notion image
      notion image
      notion image
      notion image
 
 

✅ 부하 테스트 다시 진행하기

  1. 부하 테스트 시작하기
    1. $ K6_WEB_DASHBOARD=true k6 run script.js
       
  1. k6의 웹 대시보드 열기
    1. http://{k6가 실행되고 있는 EC2 IP 주소}:5665으로 접속하기
      notion image
       
  1. top 명령어 활용해 실시간 모니터링하기
    1. $ top
      notion image
       
  1. 부하 테스트 결과 해석
    1. 최대 Throughput은 약 7 TPS 정도로 측정된다. 기존 Throughput(4 TPS)에 비해 1.75배 정도 증가했다. 즉, 1초에 처리할 수 있는 요청량이 4개에서 7개로 증가했다.
      notion image
       
  1. 병목 지점 확인하기
    1. 추가적인 성능 개선을 하고 싶다면 아래 병목 지점을 해결한 뒤에 또 부하 테스트를 하는 과정을 반복하면 된다.
      notion image
 
author
category
부하테스트
createdAt
Dec 6, 2025
series
대규모 트래픽 처리를 위한 부하테스트 입문/실전
slug
type
series-footer
updatedAt
Dec 6, 2025 04:54 AM
📎
이 글은 대규모 트래픽 처리를 위한 부하테스트 입문/실전 강의의 수업 자료 중 일부입니다.