공부하고 기록하는, 경제학과 출신 개발자의 노트

강연

WoowaCon 2021 - 서버 성능테스트, 클릭 한 번으로 끝내볼 수 있을까?

inspirit941 2021. 12. 5. 03:27
반응형

서버 성능테스트, 클릭 한 번으로 끝내볼 수 있을까?

배민서비스개발팀 김덕수 님

 

스크린샷 2021-12-04 오후 3 23 32

전제사항

  1. 클라우드 환경. CLI로 클라우드 서버를 조작할 수 있어야 함
  2. 서버 자원을 시각화할 수 있고, 모니터링할 수 있는 수단을 갖추고 있음.

서버 성능테스트? API 요청이 많은 상황에서 서버가 어떻게 동작하는지 확인하기 위해 수행하는 테스트. 목적에 따라 성능테스트 / stress test / 부하 테스트 등 용어가 다르지만, 세분화된 용어 정의는 이 발표에서 중요하지 않으므로 '성능테스트'로 통일.

 

 

스크린샷 2021-12-04 오후 3 25 17

  • 요청을 얼마나 잘 처리하는가?

스크린샷 2021-12-04 오후 3 25 30

  • 병목현상이 되는 지점은?

가상의 클라이언트를 만들고, 서버 부하를 발생시켜서 상황을 관측한다.

 

스크린샷 2021-12-04 오후 3 28 22

트래픽 많이 들어오는 게 무서운 서비스... 사전에 확인하기 위해서.

 

스크린샷 2021-12-04 오후 3 29 10스크린샷 2021-12-04 오후 3 29 28

가상 클라이언트를 생성하는 부분은 자동화가 잘 되어 있는 편이다.

 

스크린샷 2021-12-04 오후 3 29 34스크린샷 2021-12-04 오후 3 29 41

테스트 환경을 세팅하고, 모니터링한 결과를 기록하는 일이 고됨.

 

스크린샷 2021-12-04 오후 5 59 43

 

 


 

성능테스트 과정의 도식화

 

 

스크린샷 2021-12-04 오후 6 00 40

  1. 사전작업
    • input : 어느 부분에 어떻게 부하를 줄 것인지.
    • output : 시스템은 어떤 결과를 내야 하는지.

스크린샷 2021-12-04 오후 6 03 29

  1. 테스트 환경 구축
    • 서버 개수 / 스펙 결정
    • Scale 조절작업

스크린샷 2021-12-04 오후 6 03 42

  1. 성능테스트 생성, 수행

스크린샷 2021-12-04 오후 6 04 50

  1. 모니터링 보드의 지표 관측, 기록

스크린샷 2021-12-04 오후 6 04 57

  1. 결과 확인
    • 요청 처리는 잘 이루어졌는지
    • 시스템은 기대하던 대로 동작했는지

스크린샷 2021-12-04 오후 6 06 10

필요하다면 반복시행이 가능하도록.

 


 

이 파이프라인에는 두 가지 성격이 혼합되어 있음.

 

스크린샷 2021-12-04 오후 6 07 23

 

  • 개발자가 집중해야 하는 부분은 시나리오 구상, 테스트결과 분석이다.

스크린샷 2021-12-04 오후 6 07 37

 

  • 하지만 여기에 쏟는 시간이 생각보다 많이 걸림.
  • 자동화가 가능하다면 자동화해야 하지 않을까?

 

스크린샷 2021-12-04 오후 6 10 09

 

  • nGrinder, AWS CLI, Jenkins 사용.
    • HTTP 요청으로 테스트 생성 / 수행
    • CLI로 인프라 제어
    • Groovy Script로 jenkins에 사용.

 

환경 세팅

 

스크린샷 2021-12-04 오후 6 13 23

 

테스트 시나리오 / 테스트 스크립트까지 준비되었다고 가정하면

  1. 성능테스트 환경구축 시작
    • ASG (AutoScaling Group) 사용해서 인스턴스를 추가하거나 replica 노드를 증가시키는 작업 등을 수행
    • nGrinder Agent 세팅
    • health check 확인.

스크린샷 2021-12-04 오후 6 16 42

  1. nGrinder에 API 요청. 신규테스트 생성 / 실행
    • 인스턴스에 부하
    • Jenkins는 테스트 시간 측정

스크린샷 2021-12-04 오후 6 18 37

  1. 테스트 완료되면 Notification은 슬랙 메시지로 전송.

스크린샷 2021-12-04 오후 6 19 19

  1. 리소스 정리.

nGrinder 테스트 -> 수행결과는 nGrinder에서 제공하는 레포트 사용, 인프라 모니터링은 그라파나 사용.

스크린샷 2021-12-04 오후 6 22 38

  • 테스트 input, output을 빠르게 확인할 수 있으며
  • 결과가 기록되어 언제든 확인할 수 있다는 것.

스크린샷 2021-12-04 오후 6 24 20스크린샷 2021-12-04 오후 6 24 52

 

스크린샷 2021-12-04 오후 6 24 59

 

스크린샷 2021-12-04 오후 6 25 46

 

스크린샷 2021-12-04 오후 8 07 15

 

방법은 여러 가지가 있다.

'어떻게 해당 기능을 수행하도록 할 것인가'가 더 중요하다.

 


 

스크린샷 2021-12-04 오후 8 07 43스크린샷 2021-12-04 오후 8 07 51

  • 자동화하는 건 좋지만, 모든 시스템에 전부 유용하게 사용될 수 있는 영역은 아님.
  • 비용을 들여서 구축할 만큼 자주 사용하고, 그럴만한 가치가 있을 때 유용함.

 

  • 발표 기준으로 개발된 지 3개월 된 프로덕트로, 실험 단계라고 보고 있음.
  • 다양한 시나리오 테스트 / 장애상황 시뮬레이션하면서 기록하면 자산이 될 것이라 생각함.
반응형