Backend

[Backend] GRPC ? NATS?

판교너굴맨 2022. 5. 4. 12:28

사내 프로젝트에서 Backend를 담당하시는 분이 서버와 서버의 통신을 GRPC와 NATS를 사용하고 계신다.

사실 두 개로 나누지 않고 한가지로 써도 괜찮지만 GRPC는 외부에서 접근하는 통신을 위해, NATS는 내부 서비스간 통신을 위해 그냥 나누고 싶으셨던 것 같다.

 

오늘 설명 들은 내용을 내 스스로 기억하고 이해하기 위해 간단히 글로 남기려고 한다.

nats

메세지큐 중에 하나이다.

pub-sub 패턴을 사용한다.

메세지 브로커 역할을 한다.

인터넷 방송을 예로 들자면 BJ가(publisher) 방송을(message) 시작했고 시청자들이(subscriber) 모두 같은 방송을(message) 보게 된다.

아마 많은 내용이 생략되었지만 대략 이렇게 이해했다.

 

grpc

GRPC는 HTTP2 기반으로 통신을 한다.

NATS와 다르게 target이 필요하며 1 : 1로 통신한다.

web용으로 만들어지지 않았기 때문에 grpc-web과 같은 라이브러리를 같이 사용해야 한다.

MSA와 같은 구조에서 다양한 언어와 프레임워크에 구애 받지 않고 개발할 수 있도록 도와준다.

Profobuf라는 IDL (Interface Definition Language)를 지원하는데, 바이너리로 변환해서 통신하기 때문에 JSON과 XML 보다 파일 크기와 속도가 월등히 빠르다.