99클럽 18일차 TIL: gRPC

2024. 4. 21. 11:4999클럽/TIL

728x90
반응형

#1. 오늘의 학습 키워드

자바 Spring Boot에서의 gRPC 에 대해서

  • MSA 구조에서 service 간 통신에서 REST API 를 쓸 수도 있지만 gRPC 를 쓸 수도 있다.
    • Spring Boot 에서 이미 gRPC 를 지원해주는 라이브러리가 존재하기 때문.
    • 일반적으로 REST API 는 단일 request 단일 response 이기 때문에, 여러 response 반환을 원할 경우, 그만큼의 request 를 보내야 해서 네트워크 통신 비용이 많이 소모된다.
      • 그래서 gRPC 가 성능적인 관점에서 REST API 를 사용하다 좋은 대체제로 대두된다.

#2. 공부한 내용

  • gRPC
    • google, Remote Procedure Calls
    • 구글에서 개발한 원격 프로세저 호출을 위한 시스템.
    • REST 처럼 HTTP 통신의 단일 호출 단일 응답이 아닌, 데이터를 주고 받기 위한 프로토콜을 ‘서비스’ 라는 규칙으로 나타냄
      • gRPC 를 통해 gRPC 서버에서 만든 함수를 gRPC 클라이언트가 사용할 수 있음
      • 양 쪽에서 서로 만든 함수를 제공할 수 있도록, 통신 인터페이스를 작성하여 미리 양쪽에 제공한다.
  • gRPC 특징
    • HTTP / 2 기반, RPC 프레임워크
      • HTTP/1.1 과 달리 하나의 연결에 여러 개의 메시지를 주고 받을 수 있는 양방향 통신 가능 프로토콜이다
    • 서버 내부 간 통신에서 사용하기 좋음 (MSA 구조 내 모듈 간 통신 등)
    • 통신 용량이 절감되고, 파싱이 간소화되기에 빠름.
      • Protobuf (프로토콜 버퍼, protocol buffers) 직렬화 / 역직렬화를 사용하여 통신하기 때문
    • proto3 syntax 를 적용하여 선언형으로 통신 인터페이스를 작성할 수 있음
      • Spring Boot 등에서 이 proto 3를 사용할 수 있음.
      • 즉 직접 인터페이스를 구현할 필요가 없고, 자동으로 생성해주는 수단을 활용하면 좋다.
  • gRPC 적용 순서
    1. .proto 라는 파일을 서버와 클라이언트가 공유
    2. .proto 에 있는 내용으로 자바 파일 생성 (gradle build)
    3. 서버는 위에서 생성된 자바 파일에 메서드를 override 하여 기능 구현
    4. 클라이언트는 생성된 자바 파일을 기준으로 서버에 연결한 stub 객체를 사용하여, 서버의 원격 메서드를 호출하는 클라이언트 코드 작성


#3. 오늘의 회고

  • gRPC는 Google에서 개발한 오픈 소스 원격 프로시저 호출(RPC) 프레임워크다.
    • 아래와 같은 주요 이점들이 있다
      • 효율적인 통신 (ProtoBuf 사용)
      • 양방향 통신 지원 (HTTP 2)
      • 개발 효율 향상 (proto3 - 서버 및 클라이언트 스켈러톤 코드 자동 생성)
  • 개발에도 딱 .proto 파일 작성 / 서버 측 메서드 override / 클라이언트 측 원격 메서드 호출 코드만 구현해주면 된다.
728x90
반응형

'99클럽 > TIL' 카테고리의 다른 글

99클럽 20일차 TIL: SOLID  (0) 2024.04.23
99클럽 19일차 TIL: WebSocket  (0) 2024.04.22
99클럽 17일차 TIL: Spring Webflux: Mono, Flux  (2) 2024.04.20
99클럽 16일차 TIL: Spring Webflux  (0) 2024.04.19
99클럽 15일차 TIL: N+1문제  (0) 2024.04.18