-
Notifications
You must be signed in to change notification settings - Fork 2
운영 서버 배포 사전 성능 테스트
JunsuPark edited this page Feb 4, 2025
·
3 revisions
Showpot 서비스 운영을 계획 중에 예상되는 초기 유저 수를 고려해 부하를 견딜 수 있는지 확인하기 위해 성능 테스트를 진행하였다.
예상 유저 수: 100명
원하는 처리량: 50 ~ 100tps
Latency : 평균 500ms 이하
사용 중인 인스턴스: aws t2.micro (프리티어)
메모리: 1GB + swap memory 2GB
vCPU: 1
- 성능 테스트 툴의 경우, Locust를 선택하였다.
- 지속적으로 부하를 발생시키는데에 적합하며, 각 API에 우선순위를 지정할 수 있다는 장점이 있기에 선택했다.
- 부하 테스트를 하며 가상 유저에 따른 Latency와 처리량을 보고 싶었는데 해당 수치를 심플한 UI를 통해 확인할 수 있다.
- 각 유저는 초기 1회 로그인을 시도한다.
- 이후 백엔드 서버의 모든 API를 1 ~ 2 초에 1번씩 랜덤하게 호출하며, 쓰기 API에 비해 읽기 API를 비교적 높은 우선순위로 호출한다.
- 실제 서버 운영을 하게 되면 읽기 작업이 더 많을 것으로 예상했다.
- 스크립트의 경우 다음 Repository에 정리해두었다.
showpot-archive-BE/load-test/locustfile.py
- 글의 상단에 작성해둔 AWS 인스턴스에 약 10분 가량 부하를 주었고, 결과는 다음과 같다.
- 요청을 꾸준히 보냈을때 에러는 발생하지 않았으며, API Latency가 안정적으로 유지되었다.
- API 들을 고르게 요청 중임을 알 수 있다.
- Requests 가 적은 API의 경우 url path가 매번 달라져 다르게 나타나는 것이며, Locust 특성 상 이렇게 보여줄 뿐이다.
- AWS의 하드웨어 자원 사용량 또한 확인했다.
- 10분 동안 호출하는 작업을 두 번 진행했으며, 두 번 모두 20% 이하의 cpu 사용률을 보였다.
- 크게 문제 되지 않을 수치라고 판단했다.
- 현재 인프라로 원하는 tps를 만족한다는 점을 확인했다.
- 서비스 초기 단계에서 예상한 수치 기반으로 테스트한 부분임으로, 예상보다 많은 호출이 발생하거나 유저가 빠르게 늘어나는 등의 상황이 생길 때의 대처 방안도 추후 고민해보고자 한다.