forked from boostcampwm-2024/web17-juchumjuchum
-
Notifications
You must be signed in to change notification settings - Fork 1
성능 테스트와 부하, 스트레스 테스트
KWAKMANBO edited this page Jan 8, 2025
·
2 revisions
- 부하테스트를 알기전에 성능 테스트에 대해서 먼저 알아보자
- 성능 테스트는 특정 상황에서 시스템의 구성 요소가 어떻게 수행되는지를 확인하기위해서 수행되는 테스트를 의미한다.
- 성능 테스트를 통해서 시스템의 자원의 사용량, 확장성, 신뢰성 등을 검증할 수 있다.
- 위 사진처럼 성능 테스트는 다른 테스트를 모두 포함하는 광범위한 테스트로, 대부분의 테스트의 상위집합을 성능 테스트라고 할 수 있다.
- 간단하게 성능 테스트에 속하는 테스트들에 대한 정의는 아래와 같다.
테스트 | 정의 |
---|---|
부하테스트 | 예상되는 최대 사용자수를 시물레이션 하며 성능 측정 |
스트레스 테스트 | 시스템이 한계치 이상으로 과부하 상태에서 어떻게 반응하지는 확인 |
내구성 테스트 | 장시간에 걸친 사용 중 시스템의 성능을 측정 |
스파이크 테스트 | 짧은 시간동안 급격한 변화를 주어 시스템의 반응을 측정 |
볼륨 테스트 | 대량의 데이터를 처맇라 때 의 시스템 성능을 측정 |
- 부하테스트와 스트레스 테스트는 헷갈리는 개념으로 아래에서 조금더 다뤄볼 예정이다.
- 시스템의 부하를 지속적으로 증가시켜 시스템이 부담할 수 있는 임계치를 측정하는 테스트를 의미한다. 간단하게 말하면 시스템의 성능을 테스트하는 것이라고 보면된다.
- 부하테스트는 유저의 수와 초당 API 요청 등을 증가시켜 시스템의 내구성을 테스트하고 결과를 모니터링하며 애플리케이션의 한계를 찾아내는 것을 목표로한다.
- 버퍼 오버플로우, 메모리 누수 및 잘못된 메모리 관리와 관련된 응용 프로그램의 결함을 노출한다.
- 부하 테스트의 결과로 발견되는 문제는 로드 밸런싱 문제, 대역폭 문제, 기존 시스템의 용량 등이 포함될 수 있음
- 애플리케이션이 부하를 관리할 수 있도록 데이터베이스, 하드웨어, 네트워크 등 모든 구성요소의 상한을 결정하기 위해서 부하테스트를 수행
- 얼핏보면 부하 테스트와 스트레스 테스트는 같다고 생각이든다. 나도 당연히 처음에는 같은 뜻이라고 생각했고 그저 사람마다 부르는게 다를뿐이라고 생각했다. 하지만 스트레스 테스트와 부하 테스트는 엄연히 차이가 있다고 한다.
- 부하 테스트는 위에서 언급했듯 시스템의 부하를 지속적으로 증가시켜 시스템이 부담할 수 있는 임계치를 측정하는 테스트를 의미한다.
- 스트레스 테스트는 기존 자원에 초과 작업으로 과부하를 주는 다양한 활동을 수행하며 시스템이 정상 작동이 안되도록 부하를 줬을때 어떤 동작을 보이는지 확인하는 테스트를 의미한다.
- 시스템이 커버할 수 없는 과부하를 가했을 때 모니터링 도구는 정상적으로 복구되는지, 시스템 장애 조치를 하는지, 보안상의 문제가 발생하는지등을 확인한다.
성능 테스트 | 부하 테스트 | 스트레스 테스트 | |
---|---|---|---|
도메인 | 부하, 스트레스 테스트의 상위집합 | 성능 테스트의 하위 집합 | 성능 테스트의 하위 집합 |
범위 | 부하 테스트, 스트레스 테스트, 용량 테스트, 볼류 템스트, 내구성 테스트 등 넓은 범위를 가짐 | 볼륨 테스트 및 내구성 테스트를 포함 | soak테스트 및 스파이크 테스트를 포함 |
주요 목표 | 애플리케이션 성능의 벤치마크의 표준을 설정 | 시스템의 상한선을 확인하기 위해서 SAL(서비스 수준 계약)를 설정하고 시스템이 과부하 볼륨을 처리하는 방법을 확인 | 시스템이 과부하에서 작동하는 방식과 장애로부터 복구하는 방식을 테스트하면서 알아내는데 목적이 있음, 앱이 기본적으로 예기치 않은 트래픽 급증에 다운되지 않도록 대비 |
부하 제한 | 임계치 이전과 초과된 경우 모두 테스트 | 임계치 이전까지 테스트 | 임계치를 초과해서 테스트 |
학습된 속성 | 리소스 사용량, 안정성, 확장성, 리소스 사용량 , 응답 시간, 처리량, 속도 | 과부하 수준에서 최대성능, 서버 처리량, 응답 시간, 하드웨어 환경의 적절성, 처리할 수 있는 사용자 요청 수, 부하 분산 요구사항 | 대역푝 용량, 응답 시간 이상의 안정성 |
테스트 결과 | 런타임 팽창, 최적화 범위, 속도, 지연시간등 성능과 관련된 모든 것 | 부하 분산 문제, 대역폭 문제, 시스템용량 문제, 응답 시간 부족, 처리량 문제등 | 과부하, 과부하 상황에서의 데이터 손상 문제, 속도 저하, 메모리 누수 등의 보안 허점 등 |
- [1주 2일차 합동 개발 일지](marketCap 데이터 null 이슈 해결)
- 인터셉터를 이용한 로거 개발기
- 배포 환경에서 웹 소캣 연결 실패 문제 해결
- Github Actions를 이용한 CI CD 구축
- nGrinder 테스트 시나리오
- nGrinder TPS가 측정되지 않는 문제
- 메트릭 수집에 필요한 툴들 설치하기
- Node Exporter 연결 안되는 문제
- StockService에서 Repository 계층 분리하기
- Server와 Grafana연동하기
- Guest 로그인 중복 문제 해결
- 뉴스요약 AI 프롬프팅
- 주식 학습 도우미 AI 프롬프팅
- 뉴스 요약 클로바 API 연동하기
- 샘플 뉴스 데이터를 활용한 Clova 요약 성능 확인
- 공동 개발 일지 - 뉴스 요약 AI 기능 도입 시도
- [AI 뉴스 요약]네이버 뉴스 크롤링 기능을 구현해보자
- AI 요약결과 db 저장
- 크롤링시 뉴스 카테고리 필터링 기능 추가하기
- 클로바 API 응답 형식 오류 해결
- 클로바 API 응답 형식 검증하기
- 주식 상세 페이지 차트 버그 해결하기
- NewsSummaryService를 위한 커스텀 에러 구현
- 실시간 주식 데이터 스로틀링 구현
- AI 기반 주식 뉴스 처리 시스템의 안정성 개선