2021. 4. 15. 00:48ㆍSpring Micro Services/gRPC
성능 테스트를 위해서 Apache Benchmark 프로그램을 통하여 동시요청과 동시접속자수를 설정하여서 부하테스트를 진행하였다.
테스트 프로그램
사용자로부터 임의의 숫자를 입력받은 후 받은 숫자 만큼 제곱을 구한 후 반환 하는 프로그램을 작성하여서 테스트 진행
예를 들어 사용자가 100 이라는 파라미터를 전달하면 1부터 100까지 루프를 돌면서 서버를 호출하여서 계산결과를 반환 받은 후에 Map 저장하여서 최종적으로 반환한다.
테스트 결과
하드웨어 사양
프로세서 Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz 2.40 GHz
RAM 8.00GB
REST 테스트 파라미터
- 총접속자수 : 300
- 동시접속자수 : 100
- 입력파라미터 : 500
■ REST 테스트 결과
동시요청수를 300 이상으로 했을 경우 테스트 불가능
■ gRPC Unary 테스트 결과
■ gRPC Bi-Directional 테스트 결과
※ 테스트 결과 요약
동시접속자수와 Percentage 응답속도
동시접속자수(300) | 50% | 90% | |
REST | 20 seconds | 13 seconds | 20 seconds |
gRPC Unary | 20 seconds | 6.7 seconds | 17.3 seconds |
gRPC Bi-Directional Stream | 8 second | 2.1 seconds | 7.8 seconds |
위의 그래프와 표를 보았을때 gRPC Bi-Dirctional 가장 좋은 성능을 나타냈으며 동시접속자수를 봤을때 150명 까지는 gRPC Unary의 경우 REST 보다는 좋은 성능을 나타 내었지만 300명인 경우 별 차이가 없음을 알 수 있었다.
마지막으로 gRPC Bi-Dirctional Stream 테스트를 파라미터를 변경해서 해보았다
테스트 파라미터
- 총접속자수 : 1000
- 동시접속자수 : 1000
- 입력파라미터 : 1000
동시접속자수(300) | 50% | 90% | |
REST | 20 seconds | 13 seconds | 20 seconds |
gRPC Unary | 20 seconds | 6.7 seconds | 17.3 seconds |
gRPC Bi-Directional Stream | 8 second | 2.1 seconds | 7.8 seconds |
동시접속자수(1000) | 50% | 90% | |
gRPC Bi-Directional Stream | 45 seconds | 17 seconds | 28 seconds |
생각보다 좋은 성능을 나타내는 거 같다.
gRPC를 사용 하는 이유는 위에서 본 성능이외에도 proto 파일을 통하여서 규격화된 서비스를 클라이언트에게 제공할 수 있다.
보통은 서버쪽의 프로그램을 개발 한 후 인터페이스 정의서와 같은 문서를 작성하여서 호출 URL 및 IN/OUT 을 정의하여서 클라이언트에게 제공 하는게 일반적이였다. 이 과정에서 실수가 있을수가 있을 수 있기 때문에 관리가 힘들수 있었다.
하지만 proto 파일을 제공하게 되면 소스코드 생성 후 규약에 맞게 코드를 작성하게 됨으로서 서비스 관리의 효율성 및 통일성을 가져갈 수 있을 것이다.
앞으로 주문서비스라는 예제를 통하여서 실제 DB 까지 저장해 보고 다시 한번 성능 테스트를 진행 해보도록 하자.
위의 예제 소스 및 Apache Benchmark 툴은 아래 사이트에서 받으시면 됩니다.
github.com/roopy1210/spring-msa-with-grpc
위의 예제는 udemy 강의 예제 였으며 아래 사이트를 참고 하세요.
www.vinsguru.com/grpc-vs-rest-performance-comparison/
Apache Benchmark 명령 옵션
httpd.apache.org/docs/2.4/programs/ab.html
'Spring Micro Services > gRPC' 카테고리의 다른 글
gRPC VS REST 성능 테스트II (0) | 2021.05.20 |
---|---|
proto module (0) | 2021.05.08 |
Spring Micro Service with gRPC 프로젝트 설정 (0) | 2021.04.13 |