티스토리 뷰
Showpot 서비스 운영을 계획 중이다. 현재 준비 작업 중에 있으며, 서버의 경우 기능 구현은 거의 완료된 상황이다.
2024-12-04 기준 어플이 앱스토어에 등록되지는 않았다. (서비스 특성 상 웹사이트로 클라이언트를 만들지 않았다.)
예상되는 초기 유저 수를 고려해 부하를 견딜 수 있는지 확인하기 위해 성능 테스트를 진행하였다.
예상 유저 수: 100명
원하는 처리량: 50 ~ 100tps
사용 중인 인스턴스: aws t2.micro (프리티어)
메모리: 1GB + swap memory 2GB
vCPU: 1
- 성능 테스트 툴의 경우, Locust를 선택하였다.
- 지속적으로 부하를 발생시키는데에 적합하며, 각 API에 우선순위를 지정할 수 있다는 장점이 있기에 선택했다.
시나리오
- 각 유저는 초기 1회 로그인을 시도한다.
- 이후 백엔드 서버의 모든 API를 1 ~ 2 초에 1번씩 랜덤하게 호출하며, 쓰기 API에 비해 읽기 API를 비교적 높은 우선순위로 호출한다.
- 실제 서버 운영을 하게 되면 읽기 작업이 더 많을 것으로 예상했다.
스크립트 예시
- 스크립트의 경우 다음 Repository에 정리해두었다.
- 글의 상단에 작성해둔 AWS 인스턴스에 약 10분 가량 부하를 주었고, 결과는 다음과 같다.
전체 API와 vus 현황
- 요청을 꾸준히 보냈을때 에러는 발생하지 않았으며, API Latency가 안정적으로 유지되었다.
각 API 기록
- API 들을 고르게 요청 중임을 알 수 있다.
- Requests 가 적은 API의 경우 url path가 매번 달라져 다르게 나타나는 것이며, Locust 특성 상 이렇게 보여줄 뿐이다.
- AWS의 하드웨어 자원 사용량 또한 확인했다.
- 10분 동안 호출하는 작업을 두 번 진행했으며, 두 번 모두 20% 이하의 cpu 사용률을 보였다.
- 크게 문제 되지 않을 수치라고 판단했다.
AWS CPU 사용량 (18.4%)
AWS CPU 사용량 (18.9%)
결론
- 현재 인프라로 원하는 tps를 만족한다는 점을 확인했다.
- 서비스 초기 단계에서 예상한 수치 기반으로 테스트한 부분임으로, 예상보다 많은 호출이 발생하거나 유저가 빠르게 늘어나는 등의 상황이 생길 때의 대처 방안도 추후 고민해보고자 한다.
'프로젝트 탐구 > Showpot' 카테고리의 다른 글
조회수 카운팅 동시성 이슈 해결과 비동기 처리 (0) | 2024.12.04 |
---|---|
커스텀 메트릭 수집을 통한 모니터링 (1) | 2024.12.04 |