2021. 5. 20. 23:14ㆍSpring Micro Services/gRPC
이번 성능 테스트의 목적은 실제로 DB에 값을 저장할 때 성능 차이가 있는지 확인할려는 목적이 있다.
성능테스트시 결재서버에서는 0.3초 정도 delay 를 주고 테스트를 수행한다.
Delay를 주는 이유는 DB에 저장시 별다른 성능 차이가 나지 않았었다. 카드결제를 한다고 가정한다면 실제로 결재서버에서는 카드사와 승인정보를 교환할 것이다. 이러한점을 감안하여서 delay를 주었다.
성능테스트는 프로젝트설정에 보면 3가지 아키텍처에 대한 설명이 있을 것이다.
3가지 아키텍처에 대한 성능 테스트를 진행하였다.
성능테스트는 앞에서 수행한거와 마찬가지로 Apache Benchmark로 테스트 진행한다.
01. 아키텍처1
테스트 수행을 위해서 payment-rest-server, order-app 을 서버를 실행한다.
성능테스트수행
① AB테스트
실행명령: ab -kc 2000 -n 20000 -g rest.dat http://localhost:6100/bm/order/P01
② DB 적재 결과
전체 2000건은 정상 적재 되었으면 총 3분이 걸렸다.
02. 아키텍처2
테스트 수행을 위해서 payment-grpc-server, order-app 을 서버를 실행한다.
성능테스트수행
① AB테스트
실행명령: ab -kc 2000 -n 20000 -g grpc.dat http://localhost:6100/bm/order/P02
② DB 적재 결과
전체 2000건은 정상 적재 되었으면 총 2분이 걸렸다.
03. 아키텍처3
테스트 수행을 위해서 모듈별로 서버를 실행해준다.
성능테스트수행
① AB테스트
ab -kc 2000 -n 20000 -g grpc_lb.dat http://localhost:6100/bm/order/P03
② DB 적재 결과
전체 2000건은 정상 적재 되었으면 총 5분이 걸렸다.
Kibana 로그
Kibana 로그를 보면 첫번째 그래프 부분이 아키텍처1에해당하는 부분이고 두번째 부부이 아키텍처2 부분이고 마지막 부분이 아키텍처3 부분이다.
예상했던 결과와 달랐던 점은 로드밸런싱을 사용하면 요청 처리가 분산되어서 더 좋은 성능을 보일거라 예상했지만 그렇지 않았던 점은 의외였다.
실제로 운영환경에서는 어떨지는 모르겠지만 이러한 아키텍처 검증을 하는 것도 중요한 일인거 같다.
전체소스
https://github.com/roopy1210/spring-msa-with-grpc
'Spring Micro Services > gRPC' 카테고리의 다른 글
proto module (0) | 2021.05.08 |
---|---|
gRPC VS REST 성능 테스트I (0) | 2021.04.15 |
Spring Micro Service with gRPC 프로젝트 설정 (0) | 2021.04.13 |