반응형
서버 성능테스트, 클릭 한 번으로 끝내볼 수 있을까?
배민서비스개발팀 김덕수 님
전제사항
- 클라우드 환경. CLI로 클라우드 서버를 조작할 수 있어야 함
- 서버 자원을 시각화할 수 있고, 모니터링할 수 있는 수단을 갖추고 있음.
서버 성능테스트? API 요청이 많은 상황에서 서버가 어떻게 동작하는지 확인하기 위해 수행하는 테스트. 목적에 따라 성능테스트 / stress test / 부하 테스트 등 용어가 다르지만, 세분화된 용어 정의는 이 발표에서 중요하지 않으므로 '성능테스트'로 통일.
- 요청을 얼마나 잘 처리하는가?
- 병목현상이 되는 지점은?
가상의 클라이언트를 만들고, 서버 부하를 발생시켜서 상황을 관측한다.
트래픽 많이 들어오는 게 무서운 서비스... 사전에 확인하기 위해서.
가상 클라이언트를 생성하는 부분은 자동화가 잘 되어 있는 편이다.
테스트 환경을 세팅하고, 모니터링한 결과를 기록하는 일이 고됨.
성능테스트 과정의 도식화
- 사전작업
- input : 어느 부분에 어떻게 부하를 줄 것인지.
- output : 시스템은 어떤 결과를 내야 하는지.
- 테스트 환경 구축
- 서버 개수 / 스펙 결정
- Scale 조절작업
- 성능테스트 생성, 수행
- 모니터링 보드의 지표 관측, 기록
- 결과 확인
- 요청 처리는 잘 이루어졌는지
- 시스템은 기대하던 대로 동작했는지
필요하다면 반복시행이 가능하도록.
이 파이프라인에는 두 가지 성격이 혼합되어 있음.
- 개발자가 집중해야 하는 부분은 시나리오 구상, 테스트결과 분석이다.
- 하지만 여기에 쏟는 시간이 생각보다 많이 걸림.
- 자동화가 가능하다면 자동화해야 하지 않을까?
- nGrinder, AWS CLI, Jenkins 사용.
- HTTP 요청으로 테스트 생성 / 수행
- CLI로 인프라 제어
- Groovy Script로 jenkins에 사용.
환경 세팅
테스트 시나리오 / 테스트 스크립트까지 준비되었다고 가정하면
- 성능테스트 환경구축 시작
- ASG (AutoScaling Group) 사용해서 인스턴스를 추가하거나 replica 노드를 증가시키는 작업 등을 수행
- nGrinder Agent 세팅
- health check 확인.
- nGrinder에 API 요청. 신규테스트 생성 / 실행
- 인스턴스에 부하
- Jenkins는 테스트 시간 측정
- 테스트 완료되면 Notification은 슬랙 메시지로 전송.
- 리소스 정리.
nGrinder 테스트 -> 수행결과는 nGrinder에서 제공하는 레포트 사용, 인프라 모니터링은 그라파나 사용.
- 테스트 input, output을 빠르게 확인할 수 있으며
- 결과가 기록되어 언제든 확인할 수 있다는 것.
방법은 여러 가지가 있다.
'어떻게 해당 기능을 수행하도록 할 것인가'가 더 중요하다.
- 자동화하는 건 좋지만, 모든 시스템에 전부 유용하게 사용될 수 있는 영역은 아님.
- 비용을 들여서 구축할 만큼 자주 사용하고, 그럴만한 가치가 있을 때 유용함.
- 발표 기준으로 개발된 지 3개월 된 프로덕트로, 실험 단계라고 보고 있음.
- 다양한 시나리오 테스트 / 장애상황 시뮬레이션하면서 기록하면 자산이 될 것이라 생각함.
반응형
'강연' 카테고리의 다른 글
KubeCon 2022 Europe - Crack the FaaS Cold Start and Scalability BottleNeck (0) | 2022.06.21 |
---|---|
KubeCon 2022 Europe - Empower Autonomous Driving with Cloud Native Serverless Technologies (0) | 2022.06.16 |
If Kakao 2021 - Cloud Native의 미래 (0) | 2021.11.18 |
카카오 Ground X Social-Impact Summit (1) | 2018.06.11 |
블록체인, 실리콘밸리의 최신 동향과 이슈 by 오태림 '글루와' 대표 (0) | 2018.04.17 |