👩🏻‍💻개발공부

백앤드 성능 테스트 전, 기초 지식 정리!

리미32 2025. 6. 14. 13:51
728x90

안녕하세요! API를 만들고, 서버를 운영하며 과연 제가 만든 API는 성능이 어떨까 궁금해졌습니다.

그래서!!! 성능테스트를 하기로 마음 먹었습니다.

오늘은 성능테스트에 대해서 공부한 겸, 공부한 내용을 정리해볼까합니다.


 

성능 테스트를 왜 할까?

 개발을 하다 보면 “우리 서버는 몇 명까지 감당할 수 있을까?” “어떤 API가 병목일까?“와 같은 고민을 하게 됩니다.

이를 확인하기 위해 필요한 것이 바로 성능 테스트입니다.

 

 

성능을 어떻게 측정할까?

1.  Latency (지연 시간)

  • 요청자가 보낸 요청이 응답을 받을 때까지 걸리는 시간
  • 예: 고속도로의 제한 속도에 비유할 수 있어요.

2. Throughput (처리량)

  • 서버가 단위 시간 안에 처리한 요청의 수 (RPS: Request Per Second)
  • 예: 고속도로 차선 수, 즉 동시에 몇 대의 차가 지나갈 수 있는지

 

테스트 도구 소개

1. wrk / wrk2

wrk -t4 -c10 -d5s http://localhost:8080/api/test

 

  • -t: 쓰레드 수
  • -c: 동시 접속 수
  • -d: 지속 시간
  • Latency, RPS 확인 가능
  • wrk2는 개선된 버전으로, 고정된 요청 속도 유지에 강점이 있음

2. JMeter (Apache)

  • 다양한 프로토콜 지원 (HTTP, FTP, DB 등)
  • 단점: 복잡한 UI, 메모리 많이 씀, 고성능 테스트 시 어려움

3. k6 (Grafana)

  • JavaScript 기반 스크립트
  • 장점: 간결한 문법, 낮은 메모리 사용
  • 단점: 대규모 트래픽 테스트는 유료 or Kubernetes 필요

4. nGrinder (네이버)

  • 자바 유사 스크립트 지원, 한글 GUI
  • 장점: 직관적이고 친절한 설계
  • 단점: Controller/Agent 분리, IDE 미지원

실제 테스트 종류

테스트명 설명

스모크 테스트 최소 부하로 시스템 정상 동작 여부 확인
스파이크 테스트 갑작스러운 사용자 증가 시 안정성 확인
부하 테스트 목표 부하까지 시스템 성능 유지 여부 확인
스트레스 테스트 시스템 최대치를 초과한 상황에서의 동작 관찰
내구 테스트 장시간 일정 부하를 주어 시스템 안정성 확인
중단점 테스트 임계점까지 점진적 부하 증가로 한계점 측정

 

 

테스트는 계획 수립하기

1. 단건 성능 테스트

  • 특정 API를 1회 실행
  • 실행된 SQL 수, 각 쿼리 속도, 총 응답 시간 체크

2. 동시성 부하 테스트

  • API를 100~1000회 동시에 호출
  • 평균/최대 응답 시간, 에러율, 리소스 고갈 여부 확인
  • DB connection pool, 서버 CPU 모니터링 (CloudWatch, Grafana 연동 추천)

3. DB 쿼리 자체 테스트

  • API 내 SQL을 직접 실행
  • 인덱스 적용 여부, 쿼리 실행 계획(Explain), 복합 조건에서 성능 확인

 

4. 충돌 테스트 (동시성)

  • 여러 API가 같은 데이터에 insert/update 시도
  • 데이터 무결성, deadlock 발생 여부 검증

5. 시나리오 기반 통합 테스트

  • 회원가입 → 로그인 → 데이터 저장 등 실 사용 흐름 전체 테스트
  • API 간 병목, 상호 영향 여부 분석

테스트 결과 분석하기

성능 테스트를 통해 우리가 궁금한 건 결국 “서버가 얼마나 많은 요청을 어느 속도로 안정적으로 처리할 수 있는가?”입니다.

 

예를 들어,

 

  • Throughput이 낮아지면 병목 지점이 발생했다는 뜻!
  • Latency가 증가하면 사용자가 대기하게 됩니다.

 

예시 결과 해석

“100명의 사용자가 5초 동안 요청을 보내자, 평균 응답 시간은 210ms, 최대 응답 시간은 740ms였다.”
→ 최대 지연 시간이 300ms 이상이면 사용자 이탈률이 높아진다고 알려져 있으므로, 개선 필요!

 


서버 성능을 올리려면?

  1. 서버 대수 늘리기
    • nginx, mongoDB는 고성능 서버 → 병목은 주로 nodejs 서버
    • 요청을 처리하는 부분을 더 늘려야 한다.
  2. 코드 최적화
    • 불필요한 로직 제거
    • 비효율적인 쿼리 개선

테스트 계획 세우기

1. 응답 시간 목표 설정

최대 0.3초 (300ms)를 넘지 않게 하자!
1초 이상 지연 → 이탈률 7%
3초 이상 지연 → 이탈률 40%

 

2. 최대 사용자 수 추정

예: 평소 100명 접속 → 200명도 문제 없이 처리 가능하도록 여유 있게!

 

API 성능 테스트는 단순히 수치로 끝나는 것이 아니라, 실제 서비스 품질을 결정짓는 중요한 작업입니다.

 

  • 어떤 테스트를, 어떤 도구로, 어떤 기준으로 진행할지 명확히 정하고
  • 결과를 바탕으로 병목을 찾아 개선하는 과정까지가 성능 테스트의 핵심입니다.

다들 API 성능 측정 파이팅입니다!

728x90