PoC(Proof of Concept) 담당자로 프로젝트 수행 시 검토했던 사항을 정리하였습니다.

일부 개념은 'Apache JMeter 오픈소스로 대용량 웹 서비스 성능 테스트하기' 책 내용 발췌하였습니다.

 

1. 성능 테스트란?

서비스 및 시스템의 성능을 확인하기 위해 실제 사용 환경과 비슷한 환경에서 테스트를 진행하는 것을 말합니다.

성능 테스트를 통하여 응답시간(Response Time), 처리량(Throughput), 병목 구간 등을 확인할 수 있고,

얻은 정보로 서비스나 시스템의 문제점을 확인하고 이를 개선(Tuning)하여 보완할 수 있습니다.

그럼 성능 테스트는 왜 해야 할까요? 

프리호스트닷컴, 웹사이트 로딩 속도가 사용자 행동에 미치는 영향에 대한 조사 결과 발표
인터넷 사용자 67% “웹사이트 로딩 속도 중요”
https://www.gttkorea.com/news/articleView.html?idxno=12159
 
조사 결과에 따르면 웹사이트 로딩 속도 "1초"가 빨라지면 아래와 같은 효과가 있습니다.
 

1) 아마존 판매량 1% 증가

2) 구글 검색량 0.2% 증가

3) 월마트의 전환율이 2% 증가

 

즉, 웹 서비스의 응답 시간은 사용자 서비스 사용률과 밀접한 연관이 있는 것을 볼 수 있습니다.

 

2. 성능 테스트 유형

일반적으로 테스트 유형은 4가지로 정의합니다.

1) Load Test 
  - 동시 사용자 또는 프로세스 수에 의해 생성되는 트랜잭션의 요청으로 시스템 성능 측정

  - 비정상 상태가 발생하는 임계점을 찾아내고 튜닝

2) Stress Test 
  - 임계값 이상의 요청이나 비정상적인 요청을 보내 처리 상태 모니터링

  - 시스템의 최고 성능 한계를 측정하기 위한 테스트

3) Spike Test 
  - 갑자기 사용자가 몰렸을 때 요청이 정상적으로 처리하는지 측정

  - 업무 부하가 줄어들 때 정상적으로 반응하는지를 확인

4) Scalability Test / Soak Test

 - 긴 시간 동안 테스트를 진행해서 시간에 따른 시스템의 메모리 증가, 성능 정보의 변화 등을 확인

3. 테스트 시나리오

3.1) 시나리오 작성

​1) 웹페이지 접속 
2) 로그인 - 로그인 세션 유지 필요 (Cookie 관리)
3) 특정 화면으로 리다이렉트 (Redirect) 
4) 사용자 CRUD Action 

 

3.2 테스트 성능 목표치 선정

Average(평균 응답 시간): 3초 이내
Error(에러율): 1% 이내

 

Apache JMeter 오픈소스로 대용량 웹 서비스 성능 테스트하기

 

4. 테스트 Tool 선정

여러 테스트 Tool 중에서 Jmeter 를 선정한 이유는 다음과 같습니다.

  • GUI 기반 오픈소스
  • Http Header, Body(Request / Response) Cache 관리 용이
  • Web 브라우저 로그인 시나리오 테스트 강점

 

 

5.  마무리

테스트 진행에 대한 내용은 차후에 블로그로 정리하도록 하겠습니다.

이번 성능테스트를 통해 ECS 서비스 CPU 사용량, Memory 사용량, Request 수 지표를 분석하였으며

아래와 같은 유의미한 작업을 진행하였습니다.

1) 예상되는 DAU 및 지표 기반으로 ECS 성능을 구성하여 인프라 비용 최적화
  - 메모리 OOM 발생으로 응답시간 지연 방지
  - ECS 성능 부족으로 인한 CPU 과부화 방지
2) 오토스케일링 정책 도입
3) 부하 발생되는 서비스 구간 로직 튜닝
4) Back-end Spring 환경설정 최적화
 - 성능에 맞게 환경설정을 적용하지 않으면 Spring 성능을 효율적으로 사용하지 못함.

 

성능 테스트는 한번으로 끝나는 것이 아니고 지속적인 모니터링을 통하여 꾸준히 개선해가야 합니다.

또한 인프라 환경 개선 관점만 보지 말고 쿼리 튜닝에 대하여 진지한 고민이 필요할 것입니다.

 

읽어주셔서 감사합니다.

 

레퍼런스
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기