gRPC 탐구 생활 (1)

네트워크 통신

로컬 컴퓨터의 프로세스 ↔️ 서버 컴퓨터의 프로세스의 IPC 통신이다.

시작 (21. 10. 29.)

한 달 전에 gRPC에 관심이 생겨서 Docs를 찾아보고, 내용을 정리하여 글을 작성했었다.

오늘 프로토콜 관련 강의를 듣다가, HTTP는 Header에 많은 데이터가 들어가서 현업에서 무겁다는 평가를 받고 있다는 소식을 들었다.

이 때 gRPC가 계속해서 강조해오던 빠른 데이터 처리, 편리하고 유연한 환경이 떠올라 gRPC Quick Start를 통해 실행해 본 과정과 결과에 대해 작성하려 한다.

Quick Start (21. 10. 29)

설치 전 환경 설정

issue : gradle과 자바 버전

gRPC는 JDK 버전이 7 버전 이상이어야 사용할 수 있다. 나는 16 버전을 사용하고 있어서, 당연히 사용할 수 있을 줄 알았다.

결과적으로 설치 이후에는 16 버전을 사용해도 상관없었다.

gRPC가 안내한 방법에는 gradle을 통한 설치 방법이 나와있는데, gradle은 아직 자바 16 버전을 지원하지 않고 있다. 설치 시 General error during semantic analysis: Unsupported class file major version 60 오류가 발생하였다.

7 이상 15버전 이하를 사용하면 gradle을 통해 설치할 수 있고, 버전을 다운로드 받은 후 환경 변수를 설정해주면 된다.

Mac OS 환경변수 설정법 확인
  1. cd /Library/Java/JavaVirtualMachines 로 이동
  2. ls -al 을 통해 설치되어있는 jdk 버전 확인

Big sur 버전 이상 : vi $HOME/.zshrc
Bir sur 버전 미만 : vi ~/.bash_profile

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk폴더이름/Contents/Home 입력

설치

원하는 폴더로 이동하여 git clone을 통하여 설치하거나, zip 파일을 다운로드하여 압축 해제를 해주면된다.

  1. 원하는 폴더로 이동한다.
  2. $ git clone -b v1.41.0 https://github.com/grpc/grpc-java를 입력하여 파일을 받는다.
  3. cd grpc-java/examples 를 통해 폴더를 이동해준다.
  4. ./gradlew installDist로 설치를 해준다.

테스트

gRPC는 서버와 서버 간의 통신에서 자주 사용된다.

테스트도 위와 같은 상황에서 진행을 해보았다. 이를 위해 터미널 2개를 켜놓고 실행해주어야 한다.

1개는 Client, 1개는 Server의 역할을 해줄 것이다. 아래 예제 코드는 grpc-java의 하위 폴더 example에서 실행해주어야 한다.

1. Server 역할 Terminal

$ ./build/install/examples/bin/hello-world-server

위 명령어를 실행하면

INFO: Server started, listening on 50051 라는 메세지가 나타난다.

50051번 포트를 열어 놓고 서버 측에서 대기를 하고 있게 된다.

2. Client 역할 Terminal

$ ./build/install/examples/bin/hello-world-client

위 명령어를 실행하면

INFO: Will try to greet world …

INFO: Greeting: Hello world 메세지가 나타난다.

REST, HTTP와는 다르게 server 쪽의 메서드를 Client단에서 호출했다. 이렇게되면 gRPC를 통하여 Client-server 어플리케이션을 실행한 것이다.

Author

Inwoo Jeong

Posted on

2021-10-29

Updated on

2021-10-30

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

댓글