우아콘, 첫날/ 서버 성능 테스트, 클릭 한 번으로 끝내볼 수 있을까?
My Note/Developer's Note

우아콘, 첫날/ 서버 성능 테스트, 클릭 한 번으로 끝내볼 수 있을까?

서버 성능 테스트, 클릭 한 번으로 끝내볼 수 있을까?  SPEAKER 김덕수 배민서비스개발팀

우아콘 객석을 다운받아 가상배경으로 적용해서 인증샷도 남겨야 한다공

강의노트는 아래에~!

클라우드 환경에서 서버 성능테스트를 진행할 때, 테스트 환경을 구축하고, 테스트를 수행하고, 결과 지표를 기록하는 일들을 반복해서 해야 합니다. 고된 반복 작업을 자동화하여 테스트에 들어가는 비용을 줄이고, 실제 운영중인 서버의 성능을 측정하는 데에 적용해 본 경험을 공유합니다.

배민 앱에서 사용자들에게 노출되는 가게 관련 정보들을 제공하기 위해 API 서버를 개발하고 있습니다. 6000TPS 이상의 높은 트래픽을 처리해야 하는 서버를 안정적으로 운영하기 위해 노력하고 있습니다.


 
 
가장 관심있던 서버 성능테스트 세션
배민에서는 온 프로미스로 서버 자원을 직접 관리하지않고 AWS 클라우드 에서 관리하고 있다고 한다. CLI에서 서버 자원 조작할 수 있는 환경을 갖춘것을 전제로 발표한다고 함

 

서버 성능테스트란 ?

virtual client를 많이 만들어서 서버가 잘 돌아가는지 검증하고 싶을 때 수행하는 테스트이고, 성능 테스트 스트레스 테스트 부하 테스트 등으로 나눠지기도 하는데 이런 테스트를 포괄하는 단어로 서버 성능 테스트라고 통칭하기로 함.

 

그럼 성능 테스트를 하는 이유는?

요청을 얼마나 잘 처리하는가?, 요청을 잘 처리하지 못할 때 병목이 되는 지점을 찾기 위해서.!!

 

서버 성능 테스트 언제 할까?

새로운 서비스를 오픈하는 경우, 기존 서비스에 병목 가능성이 있는 변경사항이 생기는 경우, 평소보다 트래픽을 훨씬 많이 받아야 하는 경우에 한다고 한다.

실제로 부하 발생시켜서 관측한다는 점이 중요하다고 하고, 테스트할 시간이랑 장비만 있음 자주 할수록 좋다고 한다. 또한 virtual client 만들고 부하 발생하는 것, 모니터링 보드에 대한 자동화가 많이 되어있다고 한다. 그래도 어려운 점이 많았는데 

서버 환경을 scale up, scale down 등 여러 번 재구축하는 과정에서 변경을 한 번 하면 시간이 오래 걸려서 힘들다고 한다. 또한 테스트할 때마다 지표 관측하고 기록하는 것도.. 사람이 직접 신경 써서 해야 하고 시간도 오래 걸린다고 

 

그래서 나온 클릭 한 번으로 환경도 구축해주고, 성능 테스트도 돌려주고 결과 지표도 기록해주면 얼마나 좋을까? 이런 아이디어를 냈다고 한다. 

 

성능 테스트의 과정은 보통 어떻게 될까?

1. 성능테스트 시나리오 구상 : 시스템의 어느 부분에 어떻게 부하를 줄 것인지 결정(Input), 부하 상황에서 시스템 동작 예측할지 기댓값(Output) 설정해주어야 한다 그리고 필요한 데이터 준비 등 사전 작업.!

2. 테스트 환경 구축 : 서버 수, 서버 스펙 결정. (scale 조절하는 작업)

3. 성능 테스트 생성 및 수행 : 준비된 시나리오에 따라 실제 요청 발생

4. 테스트 결과 지표 관측 및 기록 : 부하 상황에서 모니터링 보드 관측 기록

5. 테스트 결과 분석 : 요청을 잘 처리했는지 시스템이 기대하던 대로 동작했는지..!!

추가로 테스트 더 필요하다면 2~부터 반복!

 

-> 그렇다면 2~4번은 준비된 시나리오대로 단순히 반복 수행하면 되는 순차적인 파이프라인 구조라고 볼 수 있다. 보통은 이런 과정에서 쏟는 노력과 시간이 절반 이상이 될 때도 있다고 그런데 이런 부분은 자동화 가능하며 해야 하는 부분이라고 말한다.

그리고 개발자가 시간을 쏟고 집중해야 할 부분은 자동화가 어려운 부분 1, 5번이다. 창의적이고 복잡한 사고를 필요로 하는 성능 테스트 시나리오 구상, 테스트 결과 분석 부분이라고 강조한다.

다른 ci 툴을 이용하기도 한다. 구현에 있어서 어떤 언어 툴 사용하느냐 보다 어떤 생각을 가지고 어떻게 문제를 푸느냐가 더 중요

 

slack 메세지  작은 결과 보고서가 나옴.

어떻게 구현할 지에 대해서도 ppt화면을 첨부한다.

두 개의 job을 적절히 조립해서 성능 테스트 1차를 만들 수 있게 된다.. 성능테스트 1차 2차 등등 이어 붙인 스크립트를 클릭 한 번으로 수행할 수 있다

 

 

 

 


자동화를 통해 얻을 수 있는 이점으로는 실수 없는 성능 테스트를 여러 번 재현 가능하고, 옆에서 기록하며 지켜보는 일을 하지 않아도 되는 등 불필요한 자원 낭비를 줄일 수 있다고 한다. 



시험적인 단계지만, 개발에 집중할 수 있는 시간을 줄 거라고 믿고, 다양한 시나리오에 대한 테스트를 수행하고  기록 그리고 장애 상황에 대한 시뮬레이션을 해서 팀의 자산으로 남기는 일을 할 것이라고 이야기해주셨다..


 

느낀 점


사실 어떤 것을 구현하면서 어떤 언어, 어떤 툴  어떤 도구 사용하느냐 보다 어떤 생각을 가지고 어떻게 문제를 푸느냐가 더 중요할 때가 많다는 것에 공감한다. 그래서 이렇게 구현해야 한다 라는 것보다는 이런 문제의식을 가지고 자동화를 하기 위해 노력했다는 점, 이런 식으로 자동화가 가능하다는 점을 배울 수 있고 이런 자동화를 통해 얻을 수 있는 이점에 대해 생각해볼 수 있었다.

회사에 입사해서도 개인 사이드 프로젝트, 스터디 등 하고 싶은 게 많았는데, 회사 업무 내에서도 효율적으로 리소스를 사용하기 위한 고민을 하는 시간으로 보내면 더 좋겠다는 생각이 들었다. 구현하는데 급급한 개발자가 아닌, 충분히 고민하고, 문제 해결을 하면서도 질문과 생각을 멈추지 않는 습관을 들여야겠다. 문제 해결을 위해 어떤 시도를 해보느냐도 나중에 큰 차이를 만들어낼 수 있겠다는 생각도 들었다 

 

 

 

출처 : https://woowacon.com/ 

 

Woowacon 2021

 

woowacon.com

12월 10일까지 열려있다 하니 관심 있는 기술 세션  계속 참고하고 저장해두어야지