99클럽 18일차 TIL: gRPC
2024. 4. 21. 11:49ㆍ개발 공부
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를 사용할 수 있음.
- 즉 직접 인터페이스를 구현할 필요가 없고, 자동으로 생성해주는 수단을 활용하면 좋다.
- HTTP / 2 기반, RPC 프레임워크
- gRPC 적용 순서
- .proto 라는 파일을 서버와 클라이언트가 공유
- .proto 에 있는 내용으로 자바 파일 생성 (gradle build)
- 서버는 위에서 생성된 자바 파일에 메서드를 override 하여 기능 구현
- 클라이언트는 생성된 자바 파일을 기준으로 서버에 연결한 stub 객체를 사용하여, 서버의 원격 메서드를 호출하는 클라이언트 코드 작성
- 참조:
#3. 오늘의 회고
- gRPC는 Google에서 개발한 오픈 소스 원격 프로시저 호출(RPC) 프레임워크다.
- 아래와 같은 주요 이점들이 있다
- 효율적인 통신 (ProtoBuf 사용)
- 양방향 통신 지원 (HTTP 2)
- 개발 효율 향상 (proto3 - 서버 및 클라이언트 스켈러톤 코드 자동 생성)
- 아래와 같은 주요 이점들이 있다
- 개발에도 딱 .proto 파일 작성 / 서버 측 메서드 override / 클라이언트 측 원격 메서드 호출 코드만 구현해주면 된다.
728x90
반응형
'개발 공부' 카테고리의 다른 글
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 |