Skip to content

Latest commit

 

History

History
27 lines (20 loc) · 1.4 KB

rpi.md

File metadata and controls

27 lines (20 loc) · 1.4 KB

동기 RPI 패턴 응용 통신

RPI는 클라이언트가 서비스에 요청을 보내면, 서비스가 처리 후 응답을 회신하는 IPC이다. 종류는 다양할 수 있지만 REST, gRPC가 대표적이다.

REST

웹 상 존재하는 자원을 url로 나타내고, 자원에 대한 행위를 HTTP 프로토콜의 메서드로 나타낸다. 데이터 형식은 대부분 JSON으로 나타낸다.

장점

  • 단순하고 익숙하다
  • 테스트가 간단하다
  • 중간 브로커가 필요가 없어서 시스템 아키텍처가 단순하다

단점

  • 요청/응답 스타일의 통신만 지원한다.
  • 가용성이 떨어진다.
  • 요청 한번으로 여러 리소스를 가져오기 힘들다.(데이터를 효율적으로 조회할 수 있게 grpahql이 떠오르고 있다.)
  • 다중 업데이트 작업을 HTTP 동사에 매핑하기 어려울 때가 많다(특정 데이터에 대한 행위가 여러 개 일 수 있으며 메서드에 다 할 수가 없다.)

gRPC

바이너리 메시지 기반의 프로토콜이고, 프로토콜 버퍼를 IDL로 정의하여 프로토콜 버퍼 컴파일러로 클라이언트 쪽 스텁 및 서버쪽 스캘레톤을 생성할 수 있다.

장점

  • 다양한 업데이트 작업이 포함된 api 설계가 쉽다.
  • 큰 메시지를 교환할 때 컴팩트하고 효율적은 IPC
  • 양방향 스트리밍 덕분에, RPI, 메시징 두가지 통신 방식