ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [매일읽기] Understanding gRPC
    개발자 라이프/매일읽기 2020. 9. 2. 10:58
    반응형

    원문 : medium.com/better-programming/understanding-grpc-60737b23e79e

     

    Understanding gRPC

    And the differences between REST vs. RPC architectures

    medium.com

    gRPC에 대해 간략히 알아본다. 또한 웹 애플리케이션과 통신하는 기존 프로토콜 혹은 아키텍처와 gRPC 간 비슷한 점과 다른 점을 알아본다.

    gRPC란 무엇인가?

    • gRPC는 서비스 간 고 성능 통신을 하기 위한 RPC(Remote Procedure Call) 프레임워크
    • 서로 다른 언어로 작성된 서비스들을 연결
    • 로드 밸런싱, 추적(tracing), 헬스 체크, 인증을 위해 필요에 따라 쓸 수 있음(pluggable)
    • 기본적으로 구조화된 데이터를 직렬화 하는 것에 프로토콜 버퍼(protocol buffer) 기술을 사용함
    • MSA에서 REST 통신의 대체재로 유력함
    • g는 gRPC를 개발한 google의 앞머리에서 따옴

    gRPC 구조

    • RPC의 의미처럼 gRPC는 원격 서버의 함수나 메서드를 실행할 수 있다는 개념을 기초
    • RPC 프로토콜은 어디서 그 함수나 메소드를 실행시켰든 항상 같은 포맷의 결과를 얻을 수 있도록 함
    • 즉, API를 퍼블릭 메소드로 구현하고, 그 메서드를 아규먼트들과 함께 호출함
    • HTTP API의 맥락 상 메소드는 URL에, 아규먼트는 쿼리 스트링이나 바디에 포함되어 요청
      • REST :
        • method : DELETE
        • URL : /resource/1
      • gRPC :
        • method : POST
        • URL : /deleteResource
        • body : { "id" : 1 }

    gRPC가 다시 뜨는 이유

    • gRPC의 가장 중요한 특징은 직렬화 혹은 통신을 위해 프로토콜 버퍼를 사용한다는 점
      • 프로토콜 버퍼는 interface definition language 역할
    • 프로토콜 버퍼는 구조화된 데이터나 그 데이터를 생성하거나 파싱 하기 위한 코드를 나타냄
      • 이로 인해 서로 다른 언어로 작성된 서비스들 간에 통신이 가능
    • 바이너리 데이터로 통신하는데, 이는 훨씬 가볍고 빠름
      • REST는 텍스트 기반의 JSON 포맷이기 때문에 훨씬 무거움
    • 물론 gRPC 데이터 포맷에 프로토콜 버퍼 외에도 다른 것을 사용할 수 있지만 프로토콜 버퍼가 가장 선호됨
    • gRPC는 HTTP/2 기반으로 설계됨
      • 기존 요청/응답과 함께 쌍방향 통신이 가능
      • 멀티 플랙싱이 가능
      • gRPC는 서버-클라이언트 간 결합도를 낮춤

    읽고나서

    • gRPC의 특징을 간략하게 알아볼 수 있어서 좋았음
    • 프로토콜 버퍼와 HTTP/2 특징에 대해서 알아봐야겠음
    반응형

    댓글

Designed by Tistory.