일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- LG Aimers
- 지도학습
- 회귀
- Machine Learning
- supervised learning
- GPT-4
- gpt
- regression
- LG Aimers 4th
- LG
- 해커톤
- OpenAI
- AI
- 분류
- 오블완
- 티스토리챌린지
- 딥러닝
- Classification
- PCA
- deep learning
- LLM
- 머신러닝
- ChatGPT
Archives
- Today
- Total
SYDev
gRPC란? 본문
gRPC란?
- gRPC: Cloud Native Computing Foundation에서 관리하는 open source API architecture 및 system.
- Remote Procedure Call(원격 프로시저 호출) 모델을 기반으로 함
- RPC 모델은 광범위 하지만, gRPC는 특정 구현
1. Remote Procedure Call
- RPC에서 client-server 통신은 client API request가 local 작업이거나, request가 내부 서버 코드인 것처럼 작동
- request에는 직접적으로 호출할 server function과 parameter 포함
- RPC API는 HTTP, TCP 또는 UDP와 같은 protocol을 기본 데이터 교환 메커니즘으로 사용
2. gRPC
- gRPC는 몇 가지 최적화와 함께 기존 RPC를 구현하는 시스템
- ex) gRPC는 데이터 전송에 Protocol Buffer와 HTTP 2를 사용
- 개발자의 데이터 교환 메커니즘을 추상화
- ex) 널리 사용되는 또 다른 RPC API 구현인 OpenAPI를 사용할 때, 개발자가 RPC 개념을 HTTP 프로토콜에 매핑해야 함, 하지만 gRPC는 기본 HTTP 통신을 추상화 -> 이런 최적화 덕에 다른 RPC 구현보다 더 빠르고 쉽게 구현할 수 있으며 웹 친화적임
Protocol Buffer: 구글에서 개발한 구조화된 데이터를 직렬화하는 메커니즘
- 언어/플랫폼 중립적, 확장성을 갖춤
HTTP/2: HTTP protocol version 2
- HTTP/1.1과의 차이점 중 Multiplexing: HTTP/1.1에서는 한 리소스를 로드할 수 없는 경우 그 뒤에 있는 다른 모든 리소스가 차단됨 -> HTTP/2에서는 단일 TCP 연결을 사용하여 한 번에 여러 데이터 스트림을 보낼 수 있음
- 데이터를 이진 코드 메시지로 분할하고, 클라이언트가 각 이진 메시지가 속한 스트림을 알 수 있도록, 메시지에 번호를 부여
https://ko.wikipedia.org/wiki/HTTP/2
https://protobuf.dev/
- Google에서 만든 RPC(Remote Procedure Call) 프로토콜이며, 네트워크 요청을 sw 내부에 있는 함수를 호출하듯이 사용하게 도와주는 프로토콜
3. gRPC 이점
- 성능
- network request를 전송할 때, Protobuf를 직렬화(Serialization) 및 역직렬화(Deserialization)하는 작업 -> JSON 형태 직렬화/역직렬화보다 빠름
- gRPC의 network 속도가 HTTP POST/GET 속도보다 빠름
- API 우선 방식
- Protobuf를 통해 기능을 개발하기 전에 API를 먼저 정의할 수 있음
- API가 먼저 정의될 경우 개발팀이 병렬적으로 일을 진행할 수 있어, 개발 속도가 빨라지며 API를 좀 더 안정적으로 제공할 수 있음
- REST API 지원
- Protobuf로 정의된 API는 envoyproxy나 grpc-gateway 같은 gateway를 통해 REST API로 제공 가능
- gRPC로 정의된 API를 OpenAPI 프로토콜로 변환하여 REST API를 사용하는 클라이언트에도 API 우선 방식 적용 가능
참고자료
'GDGoC KHU 1th' 카테고리의 다른 글
[Go 언어로 배우는 웹 애플리케이션 개발] Chapter 18. RDBMS를 사용한 데이터베이스 처리 구현하기 (0) | 2024.11.14 |
---|---|
[Go 언어로 배우는 웹 애플리케이션 개발] Chapter 17. 엔드포인트 추가하기 (4) | 2024.11.13 |
[백엔드를 위한 GO 프로그래밍] Chapter 6. 상호 호환성 (6) | 2024.10.07 |