SpringBoot를 활용한 Wep Application server 를 만든 후, 내가 만든 서버의 안전성 및 가용성을 확인하기 위해 부하 툴과 모니터링 툴을 활용해 알아보려고 합니다. 성능측정에 필요한 개념부터 직접 성능을 테스트 하고 어떤 점들을 개선했는지 적어보도록 하겠습니다.
Index
- scouter를 활용한 성능측정을 위한 기본 세팅 및 아키텍처
위 그림을 보면 scouter를 사용하기 위해 필요한 것들을 알 수 있다. 간단하게 나의 말로 설명해보자.
scouter 공식 다운로드 깃헙
Scouter Java Agent
내가 사용할 Java 프로그램의 붙여서 사용할 Scouter Agent이다. 내가 사용하는 Java Application의 상태가 어떤지 수집해서 Scouter Collector에게 전달해주는 역할을 한다.
사용법은 간단하게 scouter 공식홈페이지에서 다운을 받고,scouter폴더 내부의 server, agent.java, agent.host의 config 세팅을 하고 사용하면 된다.
나는 스프링 부트의 .jar 파일을 javaagent를 붙여서 사용했다.
아래와 같이 하면 된다. 경로는 상대경로를 잘 세팅해줘서 사용하면 된다.
java -javaagent:scouter/agent.java/scouter.agent.jar -jar ./build/libs/{사용할.jar}
기존의 스프링 부트가 뜨기전에, scouter 실행 로그가 나올 것이다.
디렉토리 구조를 간단하게 사진으로 첨부하겠다.
Scouter Host Agent
Scouter Collector
Scouter Client
#cf) 뭐이렇게 켜야할게 많아 이럴 수 있지만 세팅을 하나씩 차분히 하다보면 결과에 도달할 수 있다.
필자의 경우
이렇게 총 3대의 컴퓨터를 활용해서 공유기를 써서 내부 망으로 환경을 구축했다.
(컴퓨터가 여러대가 아니라면, aws cloud를 활용해서 하는 것도 방법이겠다.. 기타 네트워크 포트열고하는 작업들을 해줘야 한다.. 내부망은 그런건 필요 없었다.. 돈이 얼마나 나올지..?)
( 환경세팅만 거의 하루 반정도 걸린거 같다. 도커로 띄워보기도 하고 이것저것 테스트를 많이 하다보니 시간이 순삭..)
Gatling
마지막으로 부하를 줄 툴로 Gatling을 선택했다.
부하를 줄 컴퓨터를 따로 뒀어도 좋았겠지만, 컴퓨터의 개수의 한계로.. 가장 사용량이 적을거 같은 모니터링하는 곳에서 같이 부하를 주기로 했다.
Gatling을 다운받고 원하는 언어로 script를 짜고 부하를 주면된다. 이 부분은 구체적으로 부하테스트를 진행하고 이어서 작성해보도록 하겠다.
강의하신 분에 설명에 따르면 단일 노트북으로 부하를 줄 때, 적당한 툴이라고 알려주셨다. 이전에 ngrinder로 부하주다가 컴퓨터가 먹통이 된적이 있었는데, Gatling으로 테스트를 간단하게 해봤을 때, 잘 작동했다. 이런 꿀팁을 받는것이 강의의 장점이 아닌가 싶다..
마지막으로 아키텍처 그림을 간단하게 그려보았다..