작성자**:** 정지성
, 진유록
nGrinder Controller/Agnet 실행 환경
- 로컬 환경에 설치해서 EC2 서버에 요청을 보내는 방식으로 테스트
- nGrinder Controller/Agent를 실행하는 비용도 존재하기 때문에 서버와 동일한 환경에 설치해서 진행하는것은 바람직하지 않고, 서버 환경에 대한 스펙은 명시하되 Controller/Agent가 실행되는 환경의 스펙은 명시하지 않아도 무관하다.
서버 스펙에 대한 참고사항
t2.micro: amazon linux 2023 ami / 1 vCPU / 1 GiB memory
위 서버 스펙은 aws freetier 스펙인데 실무에서는 4vCPU, 16GiB 환경을 주로 쓴다고 한다. 본 프로젝트는 학습의 목적이 크기 때문에 낮은 스펙으로 시작해 스펙을 올려가면서 테스트를 진행하고자함
- 고민해본 결과 spring application은 실행 시키기만 해도 메모리를 800mb나 잡아먹기 때문에 위 스펙으로 테스트를 진행했을시에 기대하는 테스트를 진행할 수 없을 것으로 판단. 테스트 머신의 최초 스펙은 아래와 같이 설정하고 시작하는 것으로 결정.
- t3.medium: amazon linux 2023 ami / 2 vCPU / 4 GiB memory
1. HotDeal 동시성 테스트
- 테스트 개요
- 재고가 100개인 핫딜 상품에 대해 3000명의 사용자가 거의 동시에 (약 7.5초)구매 요청을 하는 시나리오. 동시성 처리 및 데이터베이스 무결성확인을 중점으로함
- 테스트 환경
- 서버 환경: AWS EC2 > DockerImage로 구동되는 Spring서버
- t2.medium: amazon linux 2023 ami / 2 vCPU / 4 GiB memory
- Docker 24.0.7, Spring Boot 3.2.1
- 테스트 시나리오 설계
- 3000명의 사용자가 약 7.5초 이내로 3개씩 핫딜 상품구매 요청을 보내는 테스트 진행
- 테스트 주소는
Post: [<http://13.125.46.61:8080>](<http://13.125.46.61:8080>)/api/hotdeals/purchase
로 진행
- 각 요청은 사용자, 상품 정보를 포함한 Groovy
스크립트
를 작성해서 서버에 전송
- 기대하는 테스트 결과
- 재고 관리 정확성: 모든 구매 요청이 처리된 후, 핫딜 상품의 재고 수량이 정확하게 1이 되어야 합니다.
- 동시성 처리 능력: 시스템은 동시에 들어오는 대량의 요청을 효율적으로 처리할 수 있어야 합니다.
- 데이터 무결성: 데이터베이스의 무결성이 유지되며, 어떠한 경우에도 재고가 음수가 되지 않아야 합니다.