gRPC VS REST 성능 테스트I

2021. 4. 15. 00:48Spring 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 이상으로 했을 경우 테스트 불가능

 

 

REST 성능테스트 결과

 

 

 

REST 테스트 통계 정보

 

 

■ gRPC Unary 테스트 결과

 

gRPC Unary
gRPC Unary 테스트 통계 정보

 

■ gRPC Bi-Directional 테스트 결과

 

gRPC Bi-Directional 테스트 결과
gRPC Bi-Dirctional 통계 정보

 

※ 테스트 결과 요약

 

동시접속자수와 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

 

gRPC Bi-Dirctional 테스트 결과
gRPC Bi-Dirctional 통계 정보

 

  동시접속자수(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

 

roopy1210/spring-msa-with-grpc

Contribute to roopy1210/spring-msa-with-grpc development by creating an account on GitHub.

github.com

위의 예제는 udemy 강의 예제 였으며 아래 사이트를 참고 하세요.

www.vinsguru.com/grpc-vs-rest-performance-comparison/

 

gRPC vs REST Performance Comparison | Vinsguru

This tutorial explains developing both gRPC and REST based microservices and do the gRPC vs REST  Performance Comparison.

www.vinsguru.com

Apache Benchmark 명령 옵션

httpd.apache.org/docs/2.4/programs/ab.html

 

ab - 아파치 웹서버 성능검사 도구 - Apache HTTP Server Version 2.4

ab - 아파치 웹서버 성능검사 도구 이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요. ab는 아파치 하이퍼텍스트 전송 프로토콜 (HTTP) 서버의 성능을 검사하는(benc

httpd.apache.org

 

반응형

'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