김데이의 개발공부

[ Weekly Paper 09 ] 실시간 애플리케이션 개발 본문

코드잇 Node.js(BE) 부트 캠프/위클리 페이퍼 📃🖌️

[ Weekly Paper 09 ] 실시간 애플리케이션 개발

theday365 2026. 1. 23. 14:29
반응형

 

 

위클리 페이퍼 주제 (2026.1.19 ~ 1.23, 수업 진도에 맞춰 임의로 진행)

✅ 어떤 기능을 구현할 때 WebSocket을 사용하는 것이 적절한지 설명해 주세요.

✅ 실시간 서비스 구현에 사용되는 WebRTC와 gRPC에 대해 설명해 주세요.

 


 

Q1 - 1. Polling , SSE , WebSocket의 간략 설명

1) Polling

  • 클라이언트가 주기적으로 서버에 연결하여 변경 된 내용을 받는 방식
  • 구현이 쉽지만 불필요한 요청이 많이 발생
  • 대시보드 통계 / 지표 갱신 처럼 주기적으로 새로고침 되어 데이터를 확인하는 곳에 사용

 

2) SSE(Server-Sent Events)

  • 초기에 클라이언트가 서버에게 요청을 보내 실시간 응답 통로를 생성
  • 이후 서버에서 단방향으로 클라이언트에게 실시간 전송 실행
  • HTTP 연결을 유지 한 상태로 서버가 알아서 이벤트를 보내는 방식
  • 댓글 알림, 가격 변동 같이 변경 된 내용을 서버가 알아서 전달 해 주는 서비스에 사용

 

3) WebSocket

  • 클라이언트 - 서버 간 양방향 실시간 통신
  • 한번 연결하면 계속 데이터를 주고 받음
  • 실시간 채팅, 온라인 게임, 실시간 경매 & 주문 과 같이 양방향 상호작용이 있는 서비스에 사용

 

Q1 - Final . 어떤 기능을 구현할 때 WebSocket을 사용하는 것이 적절한지 설명해 주세요.

양방향 통신이 있고, 통신의 횟수가 빈번하여 지연이 있으면 안되는 서비스에 Websocket을 사용해야 합니다. 

단순히 알림 기능이나 주기적인 새로고침을 하는 실시간 통신이라면 다른 서비스로 개발하는 것이 비용과 운영 측면에서 더욱 유리합니다. 

 

양방향 통신의 대표적인 예로는 "고객 상담, 실시간 채팅"들이 있고, 통신 횟수가 높은 경우는 "온라인 게임, 실시간 주문"등이 있겠습니다.

 

실시간 통신 웹소캣 : 채팅 이미지
실시간 통신 웹소캣 : 채팅 이미지

 


Q2 - 1.  WebRTC란?

 WebRTC 기본 정보

  • 웹 실시간 통신의 약자, Web Real-Time Communication
  • 플러그인 없이 브라우저 간 실시간 음성, 영상, 데이터 공유를 위한 개방형 실시간 통신 프레임워크
  • 서로 다른 브라우저를 사용해도 통신 가능
  • P2P 방식으로 서버를 거치지 않고 사용자간 직접 연결되어 통신하므로 아주 빠름.

 WebRTC 통신 방식

  1. Signaling 신호 교환 : 브라우저들이 대화를 시작하기 위해 정보를 교환
  2. ICE Candidate Gathering 탐색 : 브라우저들이 서로 직접 연결할 최적의 경로를 찾아냄
  3. Connection Establishment 연결 : P2P(Peer to Peer) 직접 연결이 수립됨

방화벽 처리 방법 

(방화벽 : 컴퓨터를 안전하게 보호하기 위하여, 각 컴퓨터마다 존재하는 강력한 방어막)

  • STUN(Session Traversal Utilities For Nat) : 자신의 공인 IP 주소를 발견하도록 돕는 서버로, 이를 활용하여 공인 IP 주소를 다른 장치에게 전달하여 연결 실행
  • TURN(Traversal Using Relays around NAT) : P2P 직접 연결이 실패 할 경우, 트래픽을 중계 해 주는 백업 서버. 외부 서버를 거치기 때문에 추가 비용이 생기고 속도가 조금 느려지므로 최소 사용이 원칙

 

정보 출처(공부) 링크 : https://www.youtube.com/watch?v=N0x2aw-8Qhk

WebRTC (Web Real-Time Communication) / 도리의 디지털라이프

 

 

Q2 - 2. gRPC란?

gRPC 기본 정보

  • RPC : Remote Procedure Call, 다른 컴퓨터에 있는 어떤 기능을 자기 기능인것처럼 실행할 수 있도록 하는 프로토콜
  • 구글에서 개발한 고성능 오픈소스 RPC 프레임워크
  • 높은 성능과 강력한 개발자 커뮤니티, 풍부한 도구와 라이브러리를 가지고 있음

gRPC 의 특징

  • stub : 원격 서버의 인터페이스를 로컬 함수처럼 보이게 해주는 프록시, 해당 프록시를 이용해 메서드로 호출하여 다른 서버, 파일의 함수들을 쉽게 사용 가능. 일종의 대리자 역할
  • 프로토콜 버퍼 : 특정 기능에 대한 약속을 정의하고, 이를 쉽게 사용할 수 있게 제공해 주는 기능. 예를 들어 특정 요청의 response 가 길어질 경우 키 값을 프로토콜 버퍼에 넘버링 하여 정의한 뒤, 실제 response 값을 내려 줄 때 값에 넘버를 붙여 간단하게 전달 가능(=바이너리 형태로 직렬화, 메세지 압축)
  • HTTP/2 사용 : 한번 통신이 연결되면 서버와 클라이언트가 양방향에서 동시에 요청/응답을 보낼 수 있음. 기존의 HTTP/1.1 방식은 기존 요청이 응답처리가 되지 않으면 다음 요청이 들어와도 기다려야 하지만, HTTP/2 방식에서는 먼저 처리되는 것 부터 바로 응답을 내려 보낼 수 있어서 상대적으로 속도가 빠름(병렬 처리 가능)
  • TLS를 사용하여 보안에 강력
  • 주요 사용처 : 전자 상거래 플랫폼, 은행 및 금융 서비스, 의료 기록 시스템 IoT 및 디바이스 관리등 보안과 실시간 데이터 스트림이 중요하게 생각되는 곳에서 주로 사용. 실시간 상호작용과 동기화가 필요한 모바일 어플리케이션이나, 온라인 게임에도 자주 사용

 

 

정보 출처(공부) 링크 : https://www.youtube.com/watch?v=uwrR5e5_FH8

gRPC - 알고 나면 쉬움 / 얄팍한 코딩사전

 

 

Q2 - Final . 실시간 서비스 구현에 사용되는 WebRTC와 gRPC에 대해 설명해 주세요.

1) WebRTC : 브라우저 간 실시간 음성·영상·데이터를 P2P로 전달하는 기술로, 사람 - 사람 간 실시간 미디어 통신

2) gRPC : 서비스 간 통신을 함수 호출처럼 만드는 고성능 RPC 프레임워크, 서비스 - 서비스 간 고성능 데이터 통신

 


 

다음 주에 또 만나요 🖐️

반응형