| [[컴퓨터공학|'''컴퓨터 과학 및 공학 {{{#!wiki style="font-family: Times New Roman, serif; display: inline;"]] | ||
| {{{#!wiki style="margin: 0 -10px -5px; min-height:calc(1lh + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px; word-break: keep-all" | <colbgcolor=#1282d7,#1282d7><colcolor=#fff,#fff> 기반 학문 | 수학(이산수학 · 수리논리학 · 선형대수학 · 대수학(환론 · 범주론) · 정수론 · 해석학 · 미적분학 · 미분방정식) · 이론 컴퓨터 과학(튜링 머신 · 정보이론 · 재귀 이론) · 암호학 · 전자공학 · 언어학(음운론 · 형태론 · 통사론 · 의미론 · 화용론) · 인지과학 |
| 하드웨어 | SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품 | |
| 시스템 | 컴퓨터 구조론 · 폰노이만 구조 · 마이크로아키텍처 · 논리 회로(논리 연산 · 카르노 맵 · 가산기 · 보수기 · 플립플롭) · FPGA · 하드웨어 가속 · 바이오스 · UEFI · ACPI · LinuxBoot · 운영체제(인터럽트 · 멀티태스킹 · 프로세스 스케줄링 · 뮤텍스 · 세마포어 · 데드락 · 식사하는 철학자 문제) · 네트워크(네트워크 포트) · 대역폭 · 와이파이 · gRPC · GPS · 임베디드 시스템 · 사물인터넷 · 슈퍼컴퓨터 · 양자 컴퓨터 | |
| 소프트웨어 | 시간 복잡도(최적화) · 이진 탐색 · 난수생성 · 컴퓨터 언어 · 기계어 · 어셈블리어 · 프로그래밍 언어(타입 이론 · 어휘 분석 · 파싱 · 컴파일러(어셈블러 · JIT) · 인터프리터 · 링커 · 난해한 프로그래밍 언어) · 마크업 언어 · 프로그래밍 패러다임(절차적 프로그래밍 · 객체 지향 프로그래밍 · 함수형 프로그래밍) · 데이터베이스(DBMS · NoSQL) · 메타데이터 · 인코딩(유니코드 · MBCS) · 소프트웨어 개발 방법론(애자일 · 워터폴) · 디자인 패턴 · 행위자 모델 · 놀람 최소화 원칙 · 버전(버전 관리 시스템) · 프레임워크 · 라이브러리 · 모듈 · API · ABI | |
| 응용 | 인공지능 · 기계학습 · 인공신경망 · 딥러닝 · 자연어 처리(기계 번역 · 음성인식) · 컴퓨터 비전 · OCR · 빅데이터 · 컴퓨터 그래픽스 · OpenGL · EXIF · HCI · UI · UX · 컴퓨터 보안 · 해킹 · 리버스 엔지니어링 · 해시(SHA · salt · 브루트 포스 · 레인보우 테이블 · 암호화폐) · 디피-헬만 키 교환 · RSA 암호화 · ROT13 · 일회용 비밀번호 |
1. 개요
gRPC 공식 홈페이지gRPC 깃허브
HTTP/2를 기반으로 하는 RPC 프레임워크이다.
함수 매서드 등의 인터페이스 정의와 데이터 직렬화는 프로토콜 버퍼를 기반으로 처리한다.
2. 특징
2.1. 일관적인 인터페이스 생성
클라이언트 코드와 서버 인터페이스를 생성해 주기 때문에 매우 편리하다. 또한 gRPC-gateway를 통해서 REST API로 변경 가능하고 Swagger를 사용하는 것도 가능하다.프로토콜 버퍼를 기반으로 하여 스키마를 자동으로 컴파일 할 수 있다. 덕분에 정해진 스키마에 맞춰서 다양한 언어 및 플랫폼에 대한 코드가 자동 생성되므로, 다양한 플랫폼이 혼합된 프로젝트에서 유용하다.
스키마를 정의하는 것의 이점은 또한 문서화가 간편해지며, 명세의 노후화가 차단된다. 명세를 따로 정의하고 매번 통신 로직을 최신화할 필요 없이 코드가 자동 생성되니 말이다.
2.2. REST 대비 경량 고성능
REST 통신의 경우 송수신하는 주요 데이터는 텍스트 형태이다. XML 혹은 JSON 형태로 통신하는 경우에도 궁극적으론 텍스트를 주고받는 것이다. 반면 gRPC는 사전 정의된 인터페이스에 맞춰서 바이너리 데이터를 직렬화·역직렬화하는 형태로 동작한다. 이덕분에 송수신에 필요한 데이터의 총량 자체가 구조상 작고, 데이터 처리 또한 빠르다.3. 플랫폼 현황
공식적으로 지원하는 언어는 다음과 같다. #- Android Java
- C# / .NET
- C++
- Dart
- Go
- Java
- Kotlin/JVM
- Node.js
- Objective-C
- PHP
- Python
- Ruby
- Web
구글의 거의 모든 서비스는 gRPC로 이루어져 있다. 이외에도 넷플릭스, 우버 등 많은 기업들이 사용하고 있다.
gRPC의 특징들은 마이크로서비스를 구축하는 경우에 큰 강점으로 작용한다. 아주 작게 쪼개진 수백개의 서비스들은 데이터 통신에서 병목현상 발생이 매우 증가하기 때문.