실시간 서비스를 구축할 때 중요한건 유저 간 지연이 적은 빠른 통신이 필요하다.
실시간 서비스를 구축할 때 사용되는 기술은 WebRTC와 gRPC가 있는데 사용목적과 동작은 다르지만 목표 실시간성이라는 목표에 사용되는 기술이다.
WebRTC
WebRTC (web real-time communication) P2P 실시간 통신이 가능
특징
- 브라우저끼리 직접 연결 P2P 지원 가능
- 영상, 음성, 데이터 스트림 전송가능
(데이터 스트림: 연속적으로 생성되는 데이터의 흐름)
(ex - 웹사이트 클릭 스트림, 금융 거래 데이터)
- 낮은 지연율 실시간성 좋음
구성요소는 아래 4가지 요소가있는데
- STUN/TURN 클라이언트의 공인 IP를 확인 / 직접 연결이 어려운 경우 중계 역할
- ICE: 연결 후보 탐색
- SCTP/UDP: 데이터 전송
- SRTP: 미디어 암호화
ICE가 연결경로를 탐색하고, STUN/TURN에서 네트워크환경을 구축하며 SCTP/UDP가 데이터를 전송하게되고 마지막으로 SRTP가 이뤄진 통신을 암호화하는 방식으로 진행된다.
Zoom, Google Meet 같은 화상회의에서 사용된다.
gRPC
구글이 최초로 개발한 오픈 소스 원격 프로시저 호출 시스템이다
특징
- HTTP/2 기반 스트리밍 지원
(기존 웹에서 사용되던 HTTP/1.1 프로토콜의 성능 한계 개선 목적으로 개발된 HTTP 프로토콜
2015년에 표준화, 구글이 개발했던 SPDY 프로토콜을 기반)
- 양방향 스트리밍, 서버/클라이언트 스트리밍 가능
- JSON보다 빠른 Protocol Buffers 사용
- 언어 다양하게 지원함 (node.js, Go, Java)
사용 예시
실시간 데이터피드전송(센서 데이터, 실시간 주식정보)
정리
WebRTC, gRPC는 실시간 서비스에 활용이 된다.
하지만 적용대상과 구조는 다름
WebRTC - 클라이언트와 클라이언트끼리의 환경에서 미디어중심의 실시간통신에 적합함
gRPC - 클라이언트와 서버 or 서버와 서버의 환경에서 구조화되어있는 데이터 통신에 적합함